@@ -3,12 +3,8 @@ import 'dart:convert';
33import 'dart:io' ;
44import 'dart:async' ;
55
6- import 'package:url_launcher/url_launcher.dart' ;
7- import 'package:shared_preferences/shared_preferences.dart' ;
86
9- // import 'token.dart';
10-
11- import 'constants.dart' ;
7+ import '../Models/fault.dart' ;
128import '../Models/gear.dart' ;
139import '../Models/detailedAthlete.dart' ;
1410import '../Models/stats.dart' ;
@@ -19,6 +15,7 @@ import '../Models/zone.dart';
1915import '../Models/summaryAthlete.dart' ;
2016import '../Models/runningRace.dart' ;
2117
18+ import 'globals.dart' as globals;
2219import 'Oauth.dart' ;
2320import 'upload.dart' ;
2421
@@ -33,33 +30,46 @@ class Strava with Upload, Auth {
3330 final String prompt;
3431
3532
33+
34+ /// List of statuscode used by Fault
35+ /// To get info to API caller
36+ /// Should have a nicer to do it in Dart!
37+ final statusOk = 0 ;
38+ final statusInvalidToken = 1 ;
39+ final statusUnknownError = 2 ;
40+ final statusHeaderIsEmpty = 3 ;
41+
42+
3643 final tokenEndpoint = "https://www.strava.com/oauth/token" ;
3744 final authorizationEndpoint = "https://www.strava.com/oauth/authorize" ;
3845
3946 Map <String , String > header; // set in _getStoredToken
4047
48+
4149
4250 /// getRunningRacebyId
4351 ///
44- /// Scope needed:
52+ /// Scope needed: none
4553 ///
4654 /// Answer has route_ids [int]
4755 Future <RunningRace > getRunningRaceById (String id) async {
4856 RunningRace returnRace = RunningRace ();
4957
50- if (header != null ) {
58+ var _header = createHeader ();
59+
60+ if (_header != null ) {
5161 final reqRace = 'https://www.strava.com/api/v3/running_races/' + id;
5262
53- var rep = await http.get (reqRace, headers: header );
63+ var rep = await http.get (reqRace, headers: _header );
5464 if (rep.statusCode == 200 ) {
55- print (rep.statusCode);
56- print ('Race info ${rep .body }' );
65+ globals. displayInfo (rep.statusCode. toString () );
66+ globals. displayInfo ('Race info ${rep .body }' );
5767 final jsonResponse = json.decode (rep.body);
5868
5969 if (jsonResponse != null ) {
6070 returnRace = RunningRace .fromJson (jsonResponse);
6171 } else {
62- print ('problem in getRunningRaceById request' );
72+ globals. displayInfo ('problem in getRunningRaceById request' );
6373 }
6474 }
6575 return returnRace;
@@ -77,8 +87,8 @@ class Strava with Upload, Auth {
7787
7888 var rep = await http.get (reqList, headers: header);
7989 if (rep.statusCode == 200 ) {
80- print (rep.statusCode);
81- print ('List races info ${rep .body }' );
90+ globals. displayInfo (rep.statusCode. toString () );
91+ globals. displayInfo ('List races info ${rep .body }' );
8292 final jsonResponse = json.decode (rep.body);
8393
8494 if (jsonResponse != null ) {
@@ -233,65 +243,73 @@ class Strava with Upload, Auth {
233243
234244 Gear _gear = Gear .fromJson (jsonResponse);
235245 print (_gear.description);
236- _gear.errorCode = ErrorCode .ok ;
246+ // _gear.fault.statusCode = statusOk ;
237247 returnGear = _gear;
238248 }
239249 break ;
240250
241251 case 401 :
242252 {
243- print ( 'problem in getGearById request' );
244- returnGear.errorCode = ErrorCode .tokenIsInvalid ;
253+
254+ // returnGear.errorCode = statusInvalidToken ;
245255 }
246256 break ;
247257
248258 default :
249259 {
250- returnGear.errorCode = ErrorCode .unknownError ;
260+ // returnGear.errorCode = statusUnknownError ;
251261 }
252262 break ;
253263 }
254264 } else {
255- returnGear.errorCode = ErrorCode .headerIsEmpty ;
265+ // returnGear.errorCode = statusHeaderIsEmpty ;
256266 }
257267
258268 return returnGear;
259269 }
260270
271+ ///
272+ /// scope needed: profile:read_all scope
273+ ///
274+ /// return: see status value in strava class
261275 Future <DetailedAthlete > getLoggedInAthlete () async {
262276 DetailedAthlete returnAthlete = DetailedAthlete ();
263- if (header != null ) {
277+ returnAthlete.fault = Fault (88 , '' );
278+
279+ var _header = createHeader ();
280+
281+ if (_header != null ) {
264282 final reqAthlete = "https://www.strava.com/api/v3/athlete" ;
265- var rep = await http.get (reqAthlete, headers: header );
283+ var rep = await http.get (reqAthlete, headers: _header );
266284
267285 switch (rep.statusCode) {
268286 case 200 :
269287 {
270- print (rep.statusCode);
271- print ('Athlete info ${rep .body }' );
288+ globals. displayInfo (rep.statusCode. toString () );
289+ globals. displayInfo ('Athlete info ${rep .body }' );
272290 final jsonResponse = json.decode (rep.body);
273291
274292 DetailedAthlete _athlete = DetailedAthlete .fromJson (jsonResponse);
275- print (' athlete ${_athlete .firstname }, ${_athlete .lastname }' );
276- _athlete.errorCode = ErrorCode .ok ;
293+ globals. displayInfo (' athlete ${_athlete .firstname }, ${_athlete .lastname }' );
294+ _athlete.fault = Fault (statusOk, 'getLoggedInAthlete done' ) ;
277295
278296 returnAthlete = _athlete;
279297 }
280298 break ;
281299
282300 case 401 :
283301 {
284- returnAthlete.errorCode = ErrorCode .tokenIsInvalid ;
302+ returnAthlete.fault = Fault (statusInvalidToken, 'invalid token' ) ;
285303
286- print (
287- 'problem in getLoggedInAthlete request , ${returnAthlete .errorCode } ${rep .body }' );
304+ globals. displayInfo (
305+ 'problem in getLoggedInAthlete request , ${returnAthlete .fault . statusCode } ${rep .body }' );
288306 }
289307 break ;
290308
291309 default :
292310 {
293- returnAthlete.errorCode = ErrorCode .unknownError ;
294- print ('problem in getLoggedInAthlete, unknown error' );
311+ returnAthlete.fault = Fault (statusUnknownError, 'Unknown Error' ) ;
312+ globals. displayInfo ('problem in getLoggedInAthlete, unknown error' );
295313 }
296314 break ;
297315 }
@@ -366,24 +384,24 @@ class Strava with Upload, Auth {
366384
367385 DetailedAthlete _athlete = DetailedAthlete .fromJson (jsonResponse);
368386 print (' athlete ${_athlete .firstname }, ${_athlete .weight }' );
369- _athlete.errorCode = ErrorCode .ok ;
387+ _athlete.fault.statusCode = statusOk ;
370388
371389 returnAthlete = _athlete;
372390 }
373391 break ;
374392
375393 case 401 :
376394 {
377- returnAthlete.errorCode = ErrorCode .tokenIsInvalid ;
395+ returnAthlete.fault.statusCode = statusInvalidToken ;
378396
379397 print (
380- 'problem in updateLoggedInAthleteequest , ${returnAthlete .errorCode } ${rep .body }' );
398+ 'problem in updateLoggedInAthleteequest , ${returnAthlete .fault . statusCode } ${rep .body }' );
381399 }
382400 break ;
383401
384402 default :
385403 {
386- returnAthlete.errorCode = ErrorCode .unknownError ;
404+ returnAthlete.fault.statusCode = statusUnknownError ;
387405 print (
388406 'problem in updateLoggedInAthlete, unknown error ${rep .body }' );
389407 }
0 commit comments