tsoj_flutter_client 0.0.1
tsoj_flutter_client: ^0.0.1 copied to clipboard
A Flutter/Dart client library for TSOJ API. Provides authentication, billing, and other TSOJ services access using Dio with full cookie support.
example/tsoj_flutter_client_example.dart
import 'package:tsoj_flutter_client/tsoj_flutter_client.dart';
void main() async {
// Example 1: Create client using factory function
final client = createTsojClient(
publishableKey: 'your-publishable-key-here',
baseURL: 'https://id.tsoj.com',
);
print('=== TSOJ Flutter Client Examples ===\n');
// Example 2: Password Sign Up
print('1. Password Sign Up');
try {
final signupResult = await client.auth.passwordSignup(
PasswordSignupRequestPayload(
email: 'user@example.com',
password: 'securePassword123',
passwordRepeat: 'securePassword123',
name: 'John Doe',
),
);
print(' Status: ${signupResult.status}');
print(' Message: ${signupResult.data.message}\n');
} catch (e) {
print(' Error: $e\n');
}
// Example 3: Password Sign In
print('2. Password Sign In');
try {
final signinResult = await client.auth.passwordSignin(
PasswordSigninRequestPayload(
email: 'user@example.com',
password: 'securePassword123',
),
);
print(' Status: ${signinResult.status}');
print(' Message: ${signinResult.data.message}\n');
} catch (e) {
print(' Error: $e\n');
}
// Example 4: Magic Link Sign In
print('3. Magic Link Sign In');
try {
final magicResult = await client.auth.magicSignin(
MagicSigninRequestPayload(email: 'user@example.com'),
);
print(' Status: ${magicResult.status}');
print(' Message: ${magicResult.data.message}\n');
} catch (e) {
print(' Error: $e\n');
}
// Example 5: Get Available Payment Gateways
print('4. Get Available Payment Gateways');
try {
final gateways = await client.getAvailableGateways();
print(
' Available gateways: ${gateways.gateways.map((g) => g.value).join(', ')}\n',
);
} catch (e) {
print(' Error: $e\n');
}
// Example 6: Get Bank Transfer Details
print('5. Get Bank Transfer Details');
try {
final bankDetails = await client.getBankTransferDetails();
print(' Bank: ${bankDetails.details.bankName}');
print(' Account: ${bankDetails.details.accountNumber}');
print(' IBAN: ${bankDetails.details.iban}');
print(' Currency: ${bankDetails.details.currency}\n');
} catch (e) {
print(' Error: $e\n');
}
// Example 7: Using direct instantiation
print('6. Direct Client Instantiation');
try {
final directClient = TsojClientFactory(
TsojClientConfig(
publishableKey: 'your-publishable-key',
baseURL: 'https://id.tsoj.com',
),
);
print(' Client created successfully');
print(' Auth client type: ${directClient.auth.runtimeType}');
print(' API client type: ${directClient.api.runtimeType}\n');
} catch (e) {
print(' Error: $e\n');
}
// Example 8: Sign up with metadata
print('7. Sign Up with Custom Metadata');
try {
final metadataSignup = await client.auth.passwordSignup(
PasswordSignupRequestPayload(
email: 'user@example.com',
password: 'password123',
passwordRepeat: 'password123',
name: 'Jane Doe',
metadata: {
'source': 'mobile_app',
'referral': 'friend',
'preferences': {'newsletter': true, 'notifications': true},
},
),
);
print(' Status: ${metadataSignup.status}');
print(' Message: ${metadataSignup.data.message}\n');
} catch (e) {
print(' Error: $e\n');
}
// Example 9: Create Custom Backend Client (shares cookies)
print('8. Create Custom Backend Client');
try {
// Create a client for your own backend that shares TSOJ cookies
final myBackendClient = client.createCustomBackendClient(
baseURL: 'https://my-backend.com/api',
);
print(' Custom backend client created');
print(' Base URL: ${myBackendClient.dio.options.baseUrl}');
print(' Shares cookies with TSOJ client: ✓');
print(' Can call your backend with TSOJ session\n');
// Example: Call your own backend with TSOJ session
// final userProfile = await myBackendClient.get('/user/profile');
} catch (e) {
print(' Error: $e\n');
}
// Example 10: Cookie Management
print('9. Cookie Management (Logout)');
try {
// After signing in, cookies are automatically stored
// Clear all cookies (useful for logout)
await client.api.clearCookies();
print(' Cookies cleared successfully');
print(' Session terminated\n');
} catch (e) {
print(' Error: $e\n');
}
print('=== Examples Complete ===');
}