private async Task <Models.CurrencyPrice> PerformRequest(Common.CurrencyPrice type, string url, TimeSpan timeout) { SvcResponse result = null; using (var req = new Request(_logger)) { await req .OnResult(async (res) => { if (res.GetHttpStatus() == System.Net.HttpStatusCode.OK) { result = await res.ToJson <SvcResponse>(); } }) .SendGet(url, timeout) ; } if (result == null) { var ex = new Exception($"Failed to get gold rate"); _logger.Error(ex, ex.ToString()); throw ex; } return(new Models.CurrencyPrice( cur: type, stamp: DateTimeOffset.FromUnixTimeSeconds(result.result.timestamp).UtcDateTime, usd: RoundCents(result.result.usd), eur: RoundCents(result.result.eur) )); }
//TODO: response generic error msg on prod mode protected void HandleSVCException(SvcResponse pResponse, params string[] pErrors) { string defaultMsg = "Internal Error at Service Layer. "; _logger?.LogError(defaultMsg, pErrors); pResponse.Errors.Add(defaultMsg); pResponse.Errors.AddRange(pErrors); }
public static IActionResult ToHttpResponse(this SvcResponse response) { response.ResponseCode = response.HasError ? HttpStatusCode.InternalServerError : HttpStatusCode.OK; return(new ObjectResult(response) { StatusCode = (int)HttpStatusCode.OK }); }
protected void HandleSVCException(SvcResponse pResponse, Exception pEx) { List <string> errs = new List <string>(); do { errs.Add(pEx.Message); pEx = pEx.InnerException; } while (pEx != null); HandleSVCException(pResponse, errs.ToArray()); }
public override async Task <SvcResponse> SaveMp4File(IAsyncStreamReader <Chunk> requestStream, ServerCallContext context) { SvcResponse resp = new SvcResponse(); String fileName = System.Guid.NewGuid().ToString() + ".mp4"; resp.Message = fileName; Console.WriteLine("SaveFile ->" + fileName); CancellationToken ct = new CancellationToken(); if (destinationStrem == null) { destinationStrem = File.Create("c:\\temp\\" + fileName); } var stream = new CodedOutputStream(destinationStrem, true); while (await requestStream.MoveNext(ct)) { var arr = requestStream.Current.PayLoad.ToByteArray(); destinationStrem.Write(arr, 0, arr.Length); } destinationStrem.Flush(); stream.Flush(); stream.Dispose(); if (destinationStrem != null) { destinationStrem.Dispose(); destinationStrem.Close(); destinationStrem = null; } return(new SvcResponse { Message = fileName, Code = "1" }); }
protected void HandleSVCException(Exception pEx) { HandleSVCException(SvcResponse.GetVoidResponse(HttpStatusCode.InternalServerError), pEx); }