102 lines
2.3 KiB
Markdown
102 lines
2.3 KiB
Markdown
|
# Platform Cookie
|
||
|
|
||
|
A Dart implementation of Laravel-inspired cookie management for the Protevus platform.
|
||
|
|
||
|
## Features
|
||
|
|
||
|
- Create and manage cookies with various options (domain, path, secure, httpOnly, sameSite, etc.)
|
||
|
- Queue and unqueue cookies
|
||
|
- Handle cookie value prefixes
|
||
|
- Proper encoding of cookie values
|
||
|
- Expiration time handling
|
||
|
|
||
|
## Installation
|
||
|
|
||
|
Add this package to your `pubspec.yaml`:
|
||
|
|
||
|
```yaml
|
||
|
dependencies:
|
||
|
platform_cookie: ^1.0.0
|
||
|
```
|
||
|
|
||
|
Then run:
|
||
|
|
||
|
```
|
||
|
dart pub get
|
||
|
```
|
||
|
|
||
|
## Usage
|
||
|
|
||
|
Here's a basic example of how to use the `CookieJar` class:
|
||
|
|
||
|
```dart
|
||
|
import 'package:platform_cookie/platform_cookie.dart';
|
||
|
|
||
|
void main() {
|
||
|
final cookieJar = CookieJar(
|
||
|
domain: 'example.com',
|
||
|
secure: true,
|
||
|
httpOnly: true,
|
||
|
sameSite: 'Lax',
|
||
|
);
|
||
|
|
||
|
// Create a simple cookie
|
||
|
final simpleCookie = cookieJar.make('simple_cookie', 'Hello, Protevus!');
|
||
|
print('Simple Cookie: $simpleCookie');
|
||
|
|
||
|
// Create a cookie with custom options
|
||
|
final customCookie = cookieJar.make(
|
||
|
'custom_cookie',
|
||
|
'Custom Value',
|
||
|
path: '/admin',
|
||
|
minutes: 60,
|
||
|
httpOnly: false,
|
||
|
);
|
||
|
print('Custom Cookie: $customCookie');
|
||
|
|
||
|
// Queue a cookie
|
||
|
cookieJar.queue('queued_cookie', 'Queued Value', {'minutes': 30});
|
||
|
print('Has Queued Cookie: ${cookieJar.hasQueued('queued_cookie')}');
|
||
|
|
||
|
// Get all queued cookies
|
||
|
final queuedCookies = cookieJar.getQueuedCookies();
|
||
|
print('Queued Cookies: $queuedCookies');
|
||
|
|
||
|
// Unqueue a cookie
|
||
|
cookieJar.unqueue('queued_cookie');
|
||
|
print('Has Queued Cookie after unqueue: ${cookieJar.hasQueued('queued_cookie')}');
|
||
|
|
||
|
// Using CookieValuePrefix
|
||
|
final cookieName = 'prefixed_cookie';
|
||
|
final cookieValue = 'Prefixed Value';
|
||
|
final key = 'secret_key';
|
||
|
|
||
|
final prefix = CookieValuePrefix.create(cookieName, key);
|
||
|
final prefixedValue = '$prefix$cookieValue';
|
||
|
|
||
|
print('Prefixed Cookie Value: $prefixedValue');
|
||
|
|
||
|
// Validating and removing prefix
|
||
|
final validatedValue = CookieValuePrefix.validate(cookieName, prefixedValue, [key]);
|
||
|
print('Validated Cookie Value: $validatedValue');
|
||
|
}
|
||
|
```
|
||
|
|
||
|
For more detailed examples, check the `example` folder in the package repository.
|
||
|
|
||
|
## Testing
|
||
|
|
||
|
To run the tests for this package, use the following command:
|
||
|
|
||
|
```
|
||
|
dart test
|
||
|
```
|
||
|
|
||
|
## Contributing
|
||
|
|
||
|
Contributions are welcome! Please read our contributing guidelines before submitting pull requests.
|
||
|
|
||
|
## License
|
||
|
|
||
|
This project is licensed under the MIT License.
|