public async Task <RequestReturn> AddRequest(Request request) { var result = new RequestReturn(); var sign = await GetOauth(); if (sign.IsAuthenticated) { var payload = new Dictionary <string, string> { { "Token", _config.GetToken() }, { "CodRequest", request.CodRequest }, { "SKU", request.SKU }, { "Name", request.Name }, { "CPF_CNPJ", request.Document }, { "Email", request.Email }, { "Address", request.AddressStreet }, { "AddressNumber", request.AddressNumber }, { "AddressComplement", request.AddressComplement }, { "District", request.AddressDistrict }, { "City", request.AddressCity }, { "State", request.AddressState }, { "CEP", request.AddressZipCode }, { "PhoneContact", request.Phone }, { "DateRegister", string.Format("{0:yyyy-MM-dd}", DateTime.Now) }, { "AmountPremium", request.Amount.ToString() }, { "PricePremium", request.PricePremium.GetPriceWithCommand() }, { "PayBillBarcode", request.PayBillBarcode }, { "PayBillValue", request.PayBillValue.GetPriceWithCommand() }, { "CodeCard", request.CodeCard } }; var content = new FormUrlEncodedContent(payload); _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", sign.AccessToken); var response = await _client.PostAsync("api/v3/addresquest", content); result.Success = response.IsSuccessStatusCode; if (response.IsSuccessStatusCode) { var information = response.Content.ReadAsStringAsync().Result; result = JsonConvert.DeserializeObject <RequestReturn>(information); } else { var information = response.Content.ReadAsStringAsync().Result; result = JsonConvert.DeserializeObject <RequestReturn>(information); Log.Error("ERP - Adicionar resgate - Error: {Message}", result.Message); } } return(result); }
private RequestReturn Request <T>(string url, TypeRequest typerequest, byte[] bytedata = null, string[] moreheader = null) { RequestReturn result = new RequestReturn(); http_request = new HttpRequest_(new Uri(url), typerequest.ToString()); #if DEBUG http_request.debug = Debug; #endif if (typeof(T) == typeof(Stream) && bytedata == null && typerequest != TypeRequest.PUT) { http_request.ReceiveTimeout = this.ReceiveTimeout_; } http_request.AddHeader(Host); http_request.AddHeader("Authorization", "Bearer " + Token.access_token); if (moreheader != null) { foreach (string h in moreheader) { http_request.AddHeader(h); } } else if (bytedata != null && (typerequest == TypeRequest.POST || typerequest == TypeRequest.PATCH)) { http_request.AddHeader(Header_ContentTypeApplicationJson); } if ((typerequest == TypeRequest.POST || typerequest == TypeRequest.DELETE) && bytedata == null) { http_request.AddHeader("Content-Length: 0"); } if (bytedata != null && (typerequest == TypeRequest.POST || typerequest == TypeRequest.PATCH)) { http_request.AddHeader("Content-Length: " + bytedata.Length.ToString()); Stream stream = http_request.SendHeader_And_GetStream(); stream.Write(bytedata, 0, bytedata.Length); stream.Flush(); #if DEBUG Console.WriteLine("DriveAPIHttprequestv2: >>send data: " + Encoding.UTF8.GetString(bytedata)); #endif } try //get response { if (typeof(T) == typeof(string)) { result.DataTextResponse = http_request.GetTextDataResponse(false, true); result.HeaderResponse = http_request.HeaderReceive; } else if (typeof(T) == typeof(Stream)) { if (bytedata != null || typerequest == TypeRequest.PUT) { result.stream = http_request.SendHeader_And_GetStream(); //get stream upload } else { result.stream = http_request.ReadHeaderResponse_and_GetStreamResponse(true); //get stream response } } else { throw new Exception("Error typereturn."); } return(result); } catch (HttpException ex) { result.DataTextResponse = http_request.TextDataResponse; GoogleDriveErrorMessage message; try { message = Newtonsoft.Json.JsonConvert.DeserializeObject <GoogleDriveErrorMessage>(ex.Message); } catch { throw ex; }// other message; switch (message.error.code) { case 204: if (typerequest == TypeRequest.DELETE) { return(result); } break; // delete result case 401: if (Monitor.TryEnter(SyncRefreshToken)) { try { Monitor.Enter(SyncRefreshToken); Token = oauth.RefreshToken(); TokenRenewEvent.Invoke(Token); return(Request <T>(url, typerequest, bytedata, moreheader)); } finally { Monitor.Exit(SyncRefreshToken); } } else { try { Monitor.Enter(SyncRefreshToken); return(Request <T>(url, typerequest, bytedata, moreheader)); } finally { Monitor.Exit(SyncRefreshToken); } } case 403: Error403 err = (Error403)Enum.Parse(typeof(Error403), message.error.errors[0].reason); switch (err) { case Error403.forbidden: case Error403.appNotAuthorizedToFile: case Error403.domainPolicy: case Error403.insufficientFilePermissions: #if DEBUG Console.WriteLine("DriveAPIHttprequestv2 Error403: " + result.DataTextResponse); #endif break; case Error403.dailyLimitExceeded: case Error403.rateLimitExceeded: case Error403.sharingRateLimitExceeded: case Error403.userRateLimitExceeded: if (limit != null) { limit.Invoke(); } #if DEBUG Console.WriteLine("DriveAPIHttprequestv2 LimitExceeded: " + err.ToString()); #endif try { Monitor.Enter(SyncLimitExceeded); Thread.Sleep(5000); } finally { Monitor.Exit(SyncLimitExceeded); } return(Request <T>(url, typerequest, bytedata, moreheader)); case Error403.abuse: //file malware or virut if (acknowledgeAbuse_) { return(Request <T>(url + "&acknowledgeAbuse=true", typerequest, bytedata, moreheader)); } else { break; } default: break; } break; case 308: if (typerequest == TypeRequest.PUT && typeof(T) == typeof(Stream)) { result.stream = http_request.GetStream(); return(result); } else { break; } default: break; } throw ex; } }