1
+ import 'package:deriv_dependency_injector/dependency_injector.dart' ;
2
+ import 'package:flutter_deriv_api/api/exceptions/base_api_exception.dart' ;
3
+ import 'package:flutter_deriv_api/api/models/base_exception_model.dart' ;
4
+ import 'package:flutter_deriv_api/api/response/crypto_estimations_response_result.dart' ;
5
+ import 'package:flutter_deriv_api/basic_api/generated/crypto_estimations_receive.dart' ;
6
+ import 'package:flutter_deriv_api/basic_api/generated/crypto_estimations_send.dart' ;
7
+ import 'package:flutter_deriv_api/basic_api/generated/forget_receive.dart' ;
8
+ import 'package:flutter_deriv_api/basic_api/response.dart' ;
9
+ import 'package:flutter_deriv_api/helpers/miscellaneous_helper.dart' ;
10
+ import 'package:flutter_deriv_api/services/connection/api_manager/base_api.dart' ;
11
+ import 'package:flutter_deriv_api/services/connection/call_manager/base_call_manager.dart' ;
12
+
13
+ /// Extended functionality for [CryptoEstimationsResponse] class.
14
+ class CryptoEstimationsResponseExtended extends CryptoEstimationsResponse {
15
+ static final BaseAPI _api = Injector ()< BaseAPI > ();
16
+
17
+ /// This will subscribe to crypto estimations.<br>
18
+ /// Inside [CryptoEstimationsRequest] class:
19
+ /// Incase of error, It will throw [BaseAPIException] .
20
+ static Stream <CryptoEstimationsResponse ?> subscribeToCryptoEstimates (
21
+ CryptoEstimationsRequest request, {
22
+ RequestCompareFunction ? comparePredicate,
23
+ }) =>
24
+ _api
25
+ .subscribe (request: request, comparePredicate: comparePredicate)!
26
+ .map <CryptoEstimationsResponse ?>(
27
+ (Response response) {
28
+ checkException (
29
+ response: response,
30
+ exceptionCreator: ({BaseExceptionModel ? baseExceptionModel}) =>
31
+ BaseAPIException (baseExceptionModel: baseExceptionModel),
32
+ );
33
+
34
+ if (response is CryptoEstimationsReceive ) {
35
+ return CryptoEstimationsResponse .fromJson (
36
+ response.cryptoEstimations, response.subscription);
37
+ } else {
38
+ throw Exception ('Bad response received' );
39
+ }
40
+ },
41
+ );
42
+
43
+ /// unsubscribe from the subscribed Crypto Estimates <br>
44
+ /// In case of error, It will throw [BaseAPIException] .
45
+ static Future <bool > unsubscribeFromCryptoEstimates (
46
+ String subscriptionId) async {
47
+ final ForgetReceive response =
48
+ await _api.unsubscribe (subscriptionId: subscriptionId);
49
+ checkException (
50
+ response: response,
51
+ exceptionCreator: ({BaseExceptionModel ? baseExceptionModel}) =>
52
+ BaseAPIException (baseExceptionModel: baseExceptionModel),
53
+ );
54
+ return response.forget! ;
55
+ }
56
+ }
0 commit comments