public Outcome <HttpReply> Send(HttpRequestSpec spec) { try { var request = CreateRequest(spec); var response = client.SendAsync(request).Result; var descriptor = new HttpReplyStatus ( ProtocolCode: HttpResultCodes.Find((int)response.StatusCode), SystemCode: SystemResultCodes.Success ); var data = response.Content.ReadAsStringAsync().Result; var notification = response.IsSuccessStatusCode ? none <IApplicationMessage>() : some(HttpStatusMessages.ErrorStatus(descriptor, data)); return(success( new HttpReply(descriptor, data), notification.ValueOrDefault(ApplicationMessage.Empty) )); } catch (Exception e) { return(InterpretError(e, spec)); } }
/// <summary> /// Translates a CLR response status code to a <see cref="HttpResultCode"/> /// </summary> /// <param name="r">The response that specifies the status code</param> /// <returns></returns> public static HttpResultCode GetHttpStatusCode(this WebResponse r) => HttpResultCodes.Find(cast <int>(cast <HttpWebResponse>(r).StatusCode));