public async Task <NetworkResponse> PostJson(string relativeUrl, string body) { try { if (!string.IsNullOrEmpty(AuthToken)) { _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", AuthToken); } var content = new StringContent(body, Encoding.UTF8, "application/json"); var result = await _client.PostAsync(_baseUrl + relativeUrl, content); var responseText = await result.Content.ReadAsStringAsync(); if (!result.IsSuccessStatusCode) { _logger.ErrorFormat(this, "PostJson failed: {0} {1}", (int)result.StatusCode, result.ReasonPhrase); } return(new NetworkResponse(result.IsSuccessStatusCode, responseText, (int)result.StatusCode)); } catch (Exception e) { _logger.ErrorFormat(this, "PostJson failed: {0}", e); return(new NetworkResponse(false, "", -1)); } }
public async Task Update(ICommand command) { var state = _state.State; var config = _state.Config; var runner = new CommandRunner(_offsetTime.Offset, command, state, config); foreach (var item in runner) { _logger.DebugFormat(this, "Start executing command: {0}", item.Command); if (!item.IsValid()) { _logger.ErrorFormat(this, "Command is invalid: {0}", item.Command); return; } item.Execute(); _logger.DebugFormat(this, "End executing command: {0}", item.Command); var container = _handlers.GetOrDefault(item.Command.GetType()); if (container != null) { var handlers = container.GetHandlers(); foreach (var handler in handlers) { await container.Invoke(handler, item.Command); OnStateUpdated(state); } } OnStateUpdated(state); } var response = await _api.Post(new IntentRequest(_state.User.Login, state.Version, command)); if (!response.Success) { _logger.Error(this, "State declined from server."); return; } var result = response.Result; state.Version = result.NewVersion; _logger.Debug(this, "State approved from server."); }
public async Task <NetworkResponse> PostJson(string relativeUrl, string body) { try { var data = Encoding.UTF8.GetBytes(body); var req = new UnityWebRequest(_settings.BaseUrl + relativeUrl, UnityWebRequest.kHttpVerbPOST); if (!string.IsNullOrEmpty(AuthToken)) { req.SetRequestHeader("Authorization", "Bearer " + AuthToken); } req.uploadHandler = new UploadHandlerRaw(data); req.downloadHandler = new DownloadHandlerBuffer(); req.SetRequestHeader("Accept", "application/json; charset=UTF-8"); req.SetRequestHeader("Content-Type", "application/json; charset=UTF-8"); await req.SendWebRequest(); var isFailed = req.isHttpError || req.isNetworkError; return(new NetworkResponse(!isFailed, req.downloadHandler.text, (int)req.responseCode)); } catch (Exception e) { _logger.ErrorFormat(this, "PostJson failed: {0}", e); return(new NetworkResponse(false, "", -1)); } }