@@ -4,54 +4,192 @@ import 'package:sentinelx/models/exchange/exchange_provider.dart';
44import 'package:sentinelx/models/exchange/rate.dart' ;
55
66class LocalBitcoinRateProvider implements ExchangeProvider {
7- static String API =
8- "https://localbitcoins.com/bitcoinaverage/ticker-all-currencies/" ;
7+ static String API = "https://localbitcoins.com/bitcoinaverage/ticker-all-currencies/" ;
8+
9+ List <Map <String , String >> ratePeriods = [
10+ {"key" : "avg_1h" , "title" : "1 hour Average" },
11+ {"key" : "avg_6h" , "title" : "6 hour Average" },
12+ {"key" : "avg_12h" , "title" : "12 hour Average" },
13+ {"key" : "avg_24h" , "title" : "24 hour Average" },
14+ ];
915
1016 @override
1117 String payload;
1218
1319 @override
1420 String currency;
1521
22+ @override
23+ String _selectedPeriod = "avg_24h" ;
24+
1625 Map <String , dynamic > rates = new Map ();
1726
18- LocalBitcoinRateProvider (this .payload) {
19- rates = jsonDecode (this .payload);
27+ LocalBitcoinRateProvider (this .payload, String period) {
28+ if (period != null || period.isNotEmpty) {
29+ this ._selectedPeriod = period;
30+ }
31+ var tempRate = rates;
32+ try {
33+ rates = jsonDecode (this .payload);
34+ } on Exception catch (ex) {
35+ rates = tempRate;
36+ }
2037 }
2138
2239 @override
2340 Rate getRate () {
2441 Rate rate = new Rate ();
2542 rate.currency = this .currency;
26- print ( "rate.currencyrate.currencyrate.currency ${ rate . rate }" );
43+
2744 if (rates.containsKey (this .currency)) {
2845 LBTCRateModel rateModel = LBTCRateModel .fromJson (rates[this .currency]);
29- if (rateModel.avg6h != null ) {
30- rate.rate = double .parse (rateModel.avg6h);
46+ switch (_selectedPeriod) {
47+ case "avg_24h" :
48+ {
49+ if (rateModel.avg24h != null ) {
50+ rate.rate = double .parse (rateModel.avg24h);
51+ }
52+ break ;
53+ }
54+ case "avg_12h" :
55+ {
56+ if (rateModel.avg12h != null ) {
57+ rate.rate = double .parse (rateModel.avg12h);
58+ }
59+ break ;
60+ }
61+ case "avg_6h" :
62+ {
63+ if (rateModel.avg6h != null ) {
64+ rate.rate = double .parse (rateModel.avg6h);
65+ }
66+ break ;
67+ }
68+ case "avg_1h" :
69+ {
70+ if (rateModel.avg1h != null ) {
71+ rate.rate = double .parse (rateModel.avg1h);
72+ }
73+ break ;
74+ }
75+ default :
76+ {
77+ if (rateModel.avg24h != null ) {
78+ rate.rate = double .parse (rateModel.avg24h);
79+ }
80+ }
3181 }
32- // else if (rateModel.avg12h != null) {
33- // rate.rate = double.parse(rateModel.avg12h);
34- // print("rate } avg12h");
35- //
36- // } else if (rateModel.avg24h != null) {
37- // rate.rate = double.parse(rateModel.avg24h);
38- // print("rate } avg24h");
39- //
40- // }
4182 return rate;
42-
83+ } else {
84+ rate.rate = 1 ;
85+ this .currency = "BTC" ;
86+ rate.currency = "BTC" ;
87+ return rate;
4388 }
44- print ("rate } _____ ${rate .toJson ()}" );
89+ }
90+
91+ set selectedPeriod (String value) {
92+ _selectedPeriod = value;
4593 }
4694
4795 @override
4896 String getProviderName () {
4997 return "LBTC" ;
5098 }
5199
100+ @override
101+ final List <String > availableCurrencies = [
102+ "USD" ,
103+ "EUR" ,
104+ "INR" ,
105+ "COP" ,
106+ "BOB" ,
107+ "TWD" ,
108+ "GHS" ,
109+ "NGN" ,
110+ "EGP" ,
111+ "IDR" ,
112+ "BGN" ,
113+ "SZL" ,
114+ "CRC" ,
115+ "PEN" ,
116+ "AMD" ,
117+ "ILS" ,
118+ "GBP" ,
119+ "MWK" ,
120+ "DOP" ,
121+ "BAM" ,
122+ "XRP" ,
123+ "DKK" ,
124+ "RSD" ,
125+ "AUD" ,
126+ "PKR" ,
127+ "JPY" ,
128+ "TZS" ,
129+ "VND" ,
130+ "KWD" ,
131+ "RON" ,
132+ "HUF" ,
133+ "CLP" ,
134+ "MYR" ,
135+ "GTQ" ,
136+ "JMD" ,
137+ "ZMW" ,
138+ "UAH" ,
139+ "JOD" ,
140+ "LTC" ,
141+ "SAR" ,
142+ "ETH" ,
143+ "CAD" ,
144+ "SEK" ,
145+ "SGD" ,
146+ "HKD" ,
147+ "GEL" ,
148+ "BWP" ,
149+ "VES" ,
150+ "CHF" ,
151+ "IRR" ,
152+ "BBD" ,
153+ "KRW" ,
154+ "CNY" ,
155+ "XOF" ,
156+ "BDT" ,
157+ "HRK" ,
158+ "NZD" ,
159+ "TRY" ,
160+ "THB" ,
161+ "XAF" ,
162+ "BYN" ,
163+ "ARS" ,
164+ "UYU" ,
165+ "RWF" ,
166+ "KZT" ,
167+ "NOK" ,
168+ "RUB" ,
169+ "ZAR" ,
170+ "PYG" ,
171+ "PAB" ,
172+ "MXN" ,
173+ "CZK" ,
174+ "BRL" ,
175+ "MAD" ,
176+ "PLN" ,
177+ "PHP" ,
178+ "KES" ,
179+ "AED"
180+ ];
181+
52182 @override
53183 setCurrency (String currency) {
54- return this .currency = currency;
184+ this .currency = currency;
185+ }
186+
187+ @override
188+ String getSelectedPeriod () {
189+ return this .ratePeriods.firstWhere ((item) {
190+ return item["key" ] == _selectedPeriod;
191+ })['title' ];
192+ return null ;
55193 }
56194}
57195
@@ -64,13 +202,7 @@ class LBTCRateModel {
64202 Rates rates;
65203 String avg6h;
66204
67- LBTCRateModel (
68- {this .avg12h,
69- this .volumeBtc,
70- this .avg24h,
71- this .avg1h,
72- this .rates,
73- this .avg6h});
205+ LBTCRateModel ({this .avg12h, this .volumeBtc, this .avg24h, this .avg1h, this .rates, this .avg6h});
74206
75207 LBTCRateModel .fromJson (Map <String , dynamic > json) {
76208 avg12h = json['avg_12h' ];
@@ -91,6 +223,7 @@ class LBTCRateModel {
91223 data['rates' ] = this .rates.toJson ();
92224 }
93225 data['avg_6h' ] = this .avg6h;
226+
94227 return data;
95228 }
96229}
0 commit comments