| 746 | } |
| 747 | |
| 748 | void Achievements::ClientServerCall( |
| 749 | const rc_api_request_t* request, rc_client_server_callback_t callback, void* callback_data, rc_client_t* client) |
| 750 | { |
| 751 | HTTPDownloader::Request::Callback hd_callback = [callback, callback_data](s32 status_code, const std::string& content_type, HTTPDownloader::Request::Data data) |
| 752 | { |
| 753 | const bool is_error = (status_code <= 0); |
| 754 | const bool is_retryable = |
| 755 | is_error && (status_code == HTTPDownloader::HTTP_STATUS_TIMEOUT); |
| 756 | |
| 757 | rc_api_server_response_t rr; |
| 758 | rr.http_status_code = |
| 759 | is_error |
| 760 | ? (is_retryable |
| 761 | ? RC_API_SERVER_RESPONSE_RETRYABLE_CLIENT_ERROR |
| 762 | : RC_API_SERVER_RESPONSE_CLIENT_ERROR) |
| 763 | : status_code; |
| 764 | |
| 765 | rr.body_length = data.size(); |
| 766 | rr.body = reinterpret_cast<const char*>(data.data()); |
| 767 | |
| 768 | callback(&rr, callback_data); |
| 769 | }; |
| 770 | |
| 771 | HTTPDownloader* http = static_cast<HTTPDownloader*>(rc_client_get_userdata(client)); |
| 772 | |
| 773 | // TODO: Content-type for post |
| 774 | if (request->post_data) |
| 775 | { |
| 776 | // const auto pd = std::string_view(request->post_data); |
| 777 | // Console.WriteLn(fmt::format("Server POST: {}", pd.substr(0, std::min<size_t>(pd.length(), 10))).c_str()); |
| 778 | http->CreatePostRequest(request->url, request->post_data, std::move(hd_callback)); |
| 779 | } |
| 780 | else |
| 781 | { |
| 782 | http->CreateRequest(request->url, std::move(hd_callback)); |
| 783 | } |
| 784 | } |
| 785 | |
| 786 | |
| 787 | void Achievements::IdleUpdate() |
nothing calls this directly
no test coverage detected