Line data Source code
1 : import 'package:stream_feed_dart/src/client/aggregated_feed.dart'; 2 : import 'package:stream_feed_dart/src/client/flat_feed.dart'; 3 : import 'package:stream_feed_dart/src/client/notification_feed.dart'; 4 : import 'package:stream_feed_dart/src/client/batch_operations_client.dart'; 5 : import 'package:stream_feed_dart/src/client/collections_client.dart'; 6 : import 'package:stream_feed_dart/src/client/file_storage_client.dart'; 7 : import 'package:stream_feed_dart/src/client/image_storage_client.dart'; 8 : import 'package:stream_feed_dart/src/client/reactions_client.dart'; 9 : import 'package:stream_feed_dart/src/core/api/stream_api.dart'; 10 : import 'package:stream_feed_dart/src/core/api/stream_api_impl.dart'; 11 : import 'package:stream_feed_dart/src/core/http/stream_http_client.dart'; 12 : import 'package:stream_feed_dart/src/core/http/token.dart'; 13 : import 'package:stream_feed_dart/src/core/index.dart'; 14 : import 'package:stream_feed_dart/src/core/models/feed_id.dart'; 15 : 16 : import 'package:stream_feed_dart/src/client/users_client.dart'; 17 : import 'package:stream_feed_dart/src/client/stream_client.dart'; 18 : import 'package:stream_feed_dart/src/core/util/extension.dart'; 19 : import 'package:stream_feed_dart/src/core/util/token_helper.dart'; 20 : 21 : /// 22 : class StreamClientImpl implements StreamClient { 23 : /// 24 1 : StreamClientImpl(String apiKey, 25 : {this.secret, 26 : this.userToken, 27 : StreamHttpClientOptions? options, 28 : StreamApi? api}) 29 : : assert( 30 1 : userToken != null || secret != null, 31 : 'At least a secret or userToken must be provided', 32 : ), 33 1 : _api = api ?? StreamApiImpl(apiKey, options: options); 34 : 35 : final Token? userToken; 36 : final StreamApi _api; 37 : final String? secret; 38 : 39 1 : @override 40 : BatchOperationsClient get batch { 41 2 : checkNotNull(secret, "You can't use batch operations client side"); 42 4 : return BatchOperationsClient(_api.batch, secret: secret!); 43 : } 44 : 45 1 : @override 46 : CollectionsClient get collections => 47 5 : CollectionsClient(_api.collections, userToken: userToken, secret: secret); 48 : 49 1 : @override 50 : ReactionsClient get reactions => 51 5 : ReactionsClient(_api.reactions, userToken: userToken, secret: secret); 52 : 53 1 : @override 54 : UsersClient get users => 55 5 : UsersClient(_api.users, userToken: userToken, secret: secret); 56 : 57 1 : @override 58 : FileStorageClient get files => 59 5 : FileStorageClient(_api.files, userToken: userToken, secret: secret); 60 : 61 1 : @override 62 : ImageStorageClient get images => 63 5 : ImageStorageClient(_api.images, userToken: userToken, secret: secret); 64 : 65 1 : @override 66 : AggregatedFeed aggregatedFeed(String slug, String userId) { 67 1 : final id = FeedId(slug, userId); 68 5 : return AggregatedFeed(id, _api.feed, userToken: userToken, secret: secret); 69 : } 70 : 71 1 : @override 72 : FlatFeed flatFeed(String slug, String userId) { 73 1 : final id = FeedId(slug, userId); 74 5 : return FlatFeed(id, _api.feed, userToken: userToken, secret: secret); 75 : } 76 : 77 1 : @override 78 : NotificationFeed notificationFeed(String slug, String userId) { 79 1 : final id = FeedId(slug, userId); 80 3 : return NotificationFeed(id, _api.feed, 81 2 : userToken: userToken, secret: secret); 82 : } 83 : 84 1 : @override 85 : Token frontendToken( 86 : String userId, { 87 : DateTime? expiresAt, 88 : }) { 89 2 : checkNotNull(secret, "You can't use the frontendToken method client side"); 90 2 : return TokenHelper.buildFrontendToken(secret!, userId, 91 : expiresAt: expiresAt); 92 : } 93 : 94 1 : @override 95 : Future<OpenGraphData> openGraph(String targetUrl) { 96 3 : final token = userToken ?? TokenHelper.buildOpenGraphToken(secret!); 97 2 : return _api.openGraph(token, targetUrl); 98 : } 99 : }