UNPKG

fitness-libraries

Version:
112 lines (111 loc) 4.81 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var __param = (this && this.__param) || function (paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); } }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const inversify_1 = require("inversify"); const strava_api_handler_1 = require("strava-api-handler"); const constants_1 = require("../constants"); const StravaStorageService_1 = __importDefault(require("./StravaStorageService")); function waitForIt(waitingTime) { return new Promise((resolve) => { setTimeout(resolve, waitingTime); }); } let StravaService = class StravaService { api; storage; webApi; returnUrl; constructor(api, storage, webApi, returnUrl) { this.api = api; this.storage = storage; this.webApi = webApi; this.returnUrl = returnUrl; } getApi() { return this.api; } getWebApi() { return this.webApi; } getLoginUrl(scopes) { return this.api.getLoginUrl(this.returnUrl, scopes); } async authorize(code) { const token = await this.api.requestAccessToken(code); await this.storage.store(token); return token; } async getActivity(id) { return this.api.getActivity(id); } async getActivities(filters = {}) { return this.api.getActivities(filters); } async getActivityFromUpload(uploadId) { const { activity_id } = await this.api.getUploadStatus(uploadId); if (activity_id) { return activity_id; } await waitForIt(500); return this.getActivityFromUpload(uploadId); } async createActivity(activity, type, content) { if (!type || !content) { return this.api.createActivity(activity); } const upload = await this.api.uploadActivity(activity, content, Math.random(), type); const activityId = await this.getActivityFromUpload(upload.id); const uploadedActivity = activity.setId(activityId); await this.api.updateActivity(uploadedActivity); await this.api.updateActivity(uploadedActivity); return uploadedActivity; } async getActivityPoint(activity) { const points = await this.api.getStream(activity.getId(), [ strava_api_handler_1.Stream.HEARTRATE, strava_api_handler_1.Stream.LATNG, strava_api_handler_1.Stream.CADENCE, strava_api_handler_1.Stream.TIME, strava_api_handler_1.Stream.ALTITUDE, strava_api_handler_1.Stream.TEMP, ]); return points.map((point) => { const [lat, lon] = point[strava_api_handler_1.Stream.LATNG]; return { lat, lon, time: activity.getStart().plus({ seconds: point[strava_api_handler_1.Stream.TIME] }).toJSDate(), [strava_api_handler_1.Stream.CADENCE]: point[strava_api_handler_1.Stream.CADENCE], [strava_api_handler_1.Stream.HEARTRATE]: point[strava_api_handler_1.Stream.HEARTRATE], [strava_api_handler_1.Stream.TEMP]: point[strava_api_handler_1.Stream.TEMP], [strava_api_handler_1.Stream.ALTITUDE]: point[strava_api_handler_1.Stream.ALTITUDE], }; }); } }; StravaService = __decorate([ (0, inversify_1.injectable)(), __param(0, (0, inversify_1.inject)(strava_api_handler_1.Api)), __param(1, (0, inversify_1.inject)(StravaStorageService_1.default)), __param(2, (0, inversify_1.inject)(strava_api_handler_1.WebApi)), __param(3, (0, inversify_1.inject)(constants_1.SYMBOLS.env)), __param(3, (0, inversify_1.named)(constants_1.SYMBOLS.returnUrl)), __metadata("design:paramtypes", [strava_api_handler_1.Api, StravaStorageService_1.default, strava_api_handler_1.WebApi, String]) ], StravaService); exports.default = StravaService;