public async Task <SyncPostResponse> SyncAsync([FromBody] SyncPostRequest request) { using var tracing = Tracing.Trace($"{nameof(SyncController)}.{nameof(SyncAsync)}"); if (request is null || (request.NumWorkouts <= 0 && (!request.WorkoutIds?.Any() ?? true))) { throw new HttpRequestException("Either NumWorkouts or WorkoutIds must be set", null, System.Net.HttpStatusCode.UnprocessableEntity); } SyncResult syncResult = new(); if (request.NumWorkouts > 0) { syncResult = await _syncService.SyncAsync(request.NumWorkouts); } else { syncResult = await _syncService.SyncAsync(request.WorkoutIds, exclude : null); } return(new SyncPostResponse() { SyncSuccess = syncResult.SyncSuccess, PelotonDownloadSuccess = syncResult.PelotonDownloadSuccess, ConverToFitSuccess = syncResult.ConversionSuccess, UploadToGarminSuccess = syncResult.UploadToGarminSuccess, Errors = syncResult.Errors.Select(e => new Contracts.ErrorResponse(e)).ToList() }); }
public Task <SyncPostResponse> SyncPostAsync(SyncPostRequest syncPostRequest) { return($"{_apiUrl}/api/sync" .PostJsonAsync(syncPostRequest) .ReceiveJson <SyncPostResponse>()); }