fitness-libraries
Version:
Fitness libraries as inversify modules.
112 lines (111 loc) • 4.81 kB
JavaScript
;
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;