| 287 | } |
| 288 | |
| 289 | CloudSyncService::GetProjectsFuture CloudSyncService::GetProjects( |
| 290 | concurrency::CancellationContextPtr context, int page, int pageSize, |
| 291 | std::string_view searchString) |
| 292 | { |
| 293 | using namespace audacity::network_manager; |
| 294 | |
| 295 | auto promise = std::make_shared<GetProjectsPromise>(); |
| 296 | |
| 297 | auto& serviceConfig = GetServiceConfig(); |
| 298 | auto& oAuthService = GetOAuthService(); |
| 299 | |
| 300 | auto request = |
| 301 | Request(serviceConfig.GetProjectsUrl(page, pageSize, searchString)); |
| 302 | |
| 303 | request.setHeader( |
| 304 | common_headers::ContentType, common_content_types::ApplicationJson); |
| 305 | request.setHeader( |
| 306 | common_headers::Accept, common_content_types::ApplicationJson); |
| 307 | |
| 308 | SetCommonHeaders(request); |
| 309 | SetOptionalHeaders(request); |
| 310 | |
| 311 | auto response = NetworkManager::GetInstance().doGet(request); |
| 312 | |
| 313 | context->OnCancelled(response); |
| 314 | |
| 315 | response->setRequestFinishedCallback( |
| 316 | [promise, response](auto) |
| 317 | { |
| 318 | auto responseResult = GetResponseResult(*response, true); |
| 319 | |
| 320 | if (responseResult.Code != SyncResultCode::Success) |
| 321 | { |
| 322 | promise->set_value(responseResult); |
| 323 | return; |
| 324 | } |
| 325 | |
| 326 | auto projects = |
| 327 | sync::DeserializePaginatedProjectsResponse(responseResult.Content); |
| 328 | |
| 329 | if (!projects) |
| 330 | { |
| 331 | promise->set_value( |
| 332 | ResponseResult { SyncResultCode::UnexpectedResponse, |
| 333 | std::move(responseResult.Content) }); |
| 334 | return; |
| 335 | } |
| 336 | |
| 337 | promise->set_value(std::move(*projects)); |
| 338 | }); |
| 339 | |
| 340 | return promise->get_future(); |
| 341 | } |
| 342 | |
| 343 | CloudSyncService::SyncFuture CloudSyncService::OpenFromCloud( |
| 344 | std::string projectId, std::string snapshotId, SyncMode mode, |
no test coverage detected