Note: Initially only the GET requests which are accessible from the Public scope will be implemented. Later the ability to use other scopes will be supported.
Add test automationMake requests testableTest calls to API endpointsIncrease code coverage
- Add support to use as a dependency
CocoaPodsCarthage- SwiftPM (Swift Package Manager)
- Implement full API
/v3/oauthImplement secure access data storage/v3/athlete/v3/athletes/:id/v3/athlete/activities//v3/activities/:id/v3/activities/following/v3/clubs/:id/v3/athlete/clubs/v3/segments/:id/v3/segments/:id/leaderboard/v3/segments/starred/v3/segments/:id/all_efforts- /v3/uploads
Add support for paging for all paged resourcesImplement error handling by checking error on JSON responseSupport date string convertion to date object (ISO 8601 formatted)- Review for compliance with models and Strava docs for all properties and types
- Define policy for types such as polylines, dates and non-optional properties
- Implement full demo app (live integration testing)
/v3/oauth/v3/athlete/v3/athletes/:id/v3/athlete/activities//v3/activities/:id/v3/activities/following/v3/clubs/:id/v3/athlete/clubs/v3/segments/:id/v3/segments/:id/leaderboard/v3/segments/starred/v3/segments/:id/all_efforts/v3/athlete/zones- /v3/uploads
- Review performance
Implement rate limiting support- Profile API calls for various calls
- Plan and implement retry logic for rating limiting
- Plan work to store data to disk
- Generic data store protocol
- JSON implementation
- sqlite implementation
- Realm implementation
Rating Limiting has reasonable settings for moderate use. It will be necessary to detect when a 403 Forbidden response is returned with the JSON payload indicating that the rate limit was exceeded. When that happens the current failed request can detect the state, wait a moment and try the request again. The delay could be 1 second initially and increase with each failed request. A maximum retry count of 5 or 10 may be reasonable to provide the best possible user experience.