| 839 | } |
| 840 | |
| 841 | CesiumAsync::Future<Response<Token>> |
| 842 | Connection::token(const std::string& tokenID) const { |
| 843 | std::string tokensUrl = |
| 844 | CesiumUtility::Uri::resolve(this->_apiUrl, "v2/tokens/"); |
| 845 | |
| 846 | return this->ensureValidToken().thenImmediately( |
| 847 | [pAssetAccessor = this->_pAssetAccessor, |
| 848 | asyncSystem = this->_asyncSystem, |
| 849 | tokensUrl, |
| 850 | tokenID](Result<std::string>&& result) { |
| 851 | if (!result.value) { |
| 852 | return asyncSystem.createResolvedFuture( |
| 853 | createNoValidTokenResponse<Token>(std::move(result))); |
| 854 | } |
| 855 | |
| 856 | return pAssetAccessor |
| 857 | ->get( |
| 858 | asyncSystem, |
| 859 | CesiumUtility::Uri::resolve(tokensUrl, tokenID), |
| 860 | {{"Accept", "application/json"}, |
| 861 | {"Authorization", *result.value}}) |
| 862 | .thenImmediately( |
| 863 | [](std::shared_ptr<CesiumAsync::IAssetRequest>&& pRequest) { |
| 864 | const IAssetResponse* pResponse = pRequest->response(); |
| 865 | if (!pResponse) { |
| 866 | return createEmptyResponse<Token>(); |
| 867 | } |
| 868 | |
| 869 | if (pResponse->statusCode() < 200 || |
| 870 | pResponse->statusCode() >= 300) { |
| 871 | return createErrorResponse<Token>(pResponse); |
| 872 | } |
| 873 | |
| 874 | rapidjson::Document d; |
| 875 | if (!parseJsonObject(pResponse, d)) { |
| 876 | return createJsonErrorResponse<Token>(pResponse, d); |
| 877 | } |
| 878 | if (!d.IsObject()) { |
| 879 | return createJsonTypeResponse<Token>(pResponse, "object"); |
| 880 | } |
| 881 | |
| 882 | return Response<Token>{ |
| 883 | tokenFromJson(d), |
| 884 | pResponse->statusCode(), |
| 885 | std::string(), |
| 886 | std::string()}; |
| 887 | }); |
| 888 | }); |
| 889 | } |
| 890 | |
| 891 | CesiumAsync::Future<Response<TokenList>> |
| 892 | Connection::nextPage(const Response<TokenList>& currentPage) const { |
nothing calls this directly
no test coverage detected