public async Task <string> Request(HttpMethod method, string url, JObject parameters = null, bool skipRefreshToken = false) { if (!skipRefreshToken) { await RefreshAccessToken(); } StringContent content = new StringContent(parameters?.ToString(Formatting.None)); NameValueCollection query = HttpUtility.ParseQueryString(string.Empty); query.Add("query", parameters.ToString(Formatting.None)); HttpRequestMessage httpRequestMessage = new HttpRequestMessage(); httpRequestMessage.Headers.Add("Authorization", string.Format("Bearer {0}", TokenManager.singleton.accessToken)); httpRequestMessage.Headers.Add("Content-Type", "application/json"); httpRequestMessage.Method = method; if (method == HttpMethod.Post || method == HttpMethod.Put) { httpRequestMessage.Content = content; httpRequestMessage.RequestUri = new Uri(url); } else { httpRequestMessage.RequestUri = new Uri(url + query.ToString()); } HttpResponseMessage response = await httpClient.SendAsync(httpRequestMessage); string body = await response.Content.ReadAsStringAsync(); int statusCode = (int)response.StatusCode; switch (statusCode) { case 200: return(body); case 401: TokenManager.singleton.Clear(); throw new HttpException(401, "Unauthorized."); case 403: throw new HttpException(403, "Forbidden."); default: HttpException.HttpErrors errors = JsonUtility.FromJson <HttpException.HttpErrors>(body); throw new HttpException(statusCode, errors.errors); } }
public async Task <string> Request(HttpMethod method, string url, JObject parameters, bool skipRefreshToken = false) { if (!skipRefreshToken) { await RefreshAccessToken(); } string queryString = ""; if ((method == HttpMethod.Delete || method == HttpMethod.Get) && parameters != null) { queryString = "?query=" + parameters.ToString(Formatting.None); } UnityWebRequest request; switch (method) { case HttpMethod.Delete: request = new UnityWebRequest(url + queryString); request.downloadHandler = new DownloadHandlerBuffer(); request.method = UnityWebRequest.kHttpVerbDELETE; break; case HttpMethod.Get: request = new UnityWebRequest(url + queryString); request.downloadHandler = new DownloadHandlerBuffer(); request.method = UnityWebRequest.kHttpVerbGET; break; case HttpMethod.Post: request = new UnityWebRequest(url); request.downloadHandler = new DownloadHandlerBuffer(); request.method = UnityWebRequest.kHttpVerbPOST; if (parameters != null) { byte[] bytes = Encoding.UTF8.GetBytes(parameters.ToString(Formatting.None)); request.uploadHandler = new UploadHandlerRaw(bytes); request.uploadHandler.contentType = "application/json"; } break; case HttpMethod.Put: request = new UnityWebRequest(url); request.downloadHandler = new DownloadHandlerBuffer(); request.method = UnityWebRequest.kHttpVerbPUT; if (parameters != null) { byte[] bytes = Encoding.UTF8.GetBytes(parameters.ToString(Formatting.None)); request.uploadHandler = new UploadHandlerRaw(bytes); request.uploadHandler.contentType = "application/json"; } break; default: request = null; break; } request.SetRequestHeader("Authorization", string.Format("Bearer {0}", tokenManager.accessToken)); request.SetRequestHeader("Content-Type", "application/json"); await request.SendWebRequest(); string body = request.downloadHandler.text; switch (request.responseCode) { case 200: return(body); case 401: throw new HttpException(401, "Unauthorized."); case 403: throw new HttpException(403, "Forbidden."); default: HttpException.HttpErrors errors = JsonUtility.FromJson <HttpException.HttpErrors>(body); throw new HttpException((int)request.responseCode, errors.errors); } }