public HttpContent GetContent(string url) { if (this.Authenticate()) { var entry = new YotpoLogEntry("GET"); var client = this.GetHttpClient(entry); if (client != null) { entry.url = this.ApplyParameters(url); var result = client.GetAsync(entry.url).Result; if (result != null) { entry.code = (int)result.StatusCode; entry.response = result.Content.ReadAsStringAsync().Result; this.Log_Request(entry); if (result.StatusCode == System.Net.HttpStatusCode.OK) { return(result.Content); } else { throw new EnvelopeException(new ResponseStatus() { code = (int)result.StatusCode, message = result.ReasonPhrase }); } } } } return(null); }
public Models.Shared.ResponseEnvelope Get(string url) { if (this.Authenticate()) { var entry = new YotpoLogEntry("GET"); var client = this.GetHttpClient(entry); if (client != null) { entry.url = this.ApplyParameters(url); var result = client.GetAsync(entry.url).Result; if (result != null) { entry.code = (int)result.StatusCode; entry.response = result.Content.ReadAsStringAsync().Result; this.Log_Request(entry); var envelope = ResponseEnvelope.from(entry.response); if (envelope.status.code == 200) { return(envelope); } else { throw new EnvelopeException(envelope.status); } } } } return(null); }
private System.Net.Http.HttpClient GetHttpClient(YotpoLogEntry request) { System.Net.Http.HttpClient client = new System.Net.Http.HttpClient(); client.BaseAddress = new Uri(url); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); request.headers.Add("Accept", "application/json"); return(client); }
private void Log_Request(YotpoLogEntry value) { if (this.loghandlers != null) { foreach (var handler in this.loghandlers.Values) { try { handler.Handle(value.method, value.headers, value.url, value.content, value.code, value.response); } catch (Exception ex) { //ignore, we dont care if the handler breaks. } } } }
//this probably doesnt work - by definition the DELETE method does not support a content value... public ResponseEnvelope Delete(string url, object body) { if (this.Authenticate()) { var entry = new YotpoLogEntry("DELETE"); var client = this.GetHttpClient(entry); if (client != null) { if (body is iAuthorizedRequest) { ((iAuthorizedRequest)body).utoken = this.UToken; } entry.url = this.ApplyParameters(url); entry.body = ToJsonPayload(body); var httpReq = new HttpRequestMessage(HttpMethod.Delete, entry.url); httpReq.Content = entry.body; var result = client.SendAsync(httpReq).Result; if (result != null) { entry.code = (int)result.StatusCode; entry.response = result.Content.ReadAsStringAsync().Result; this.Log_Request(entry); var envelope = ResponseEnvelope.from(entry.response); if (envelope.status.code == 200) { return(envelope); } else { throw new EnvelopeException(envelope.status); } } } } return(null); }
public Models.Shared.ResponseEnvelope Post(string url, object body) { if (this.Authenticate()) { var entry = new YotpoLogEntry("POST"); var client = this.GetHttpClient(entry); if (client != null) { if (body is iAuthorizedRequest) { ((iAuthorizedRequest)body).utoken = this.UToken; } entry.url = this.ApplyParameters(url); entry.body = ToJsonPayload(body); var result = client.PostAsync(entry.url, entry.body).Result; if (result != null) { entry.code = (int)result.StatusCode; entry.response = result.Content.ReadAsStringAsync().Result; this.Log_Request(entry); var envelope = ResponseEnvelope.from(entry.response); if (envelope.status.code == 200) { return(envelope); } else { throw new EnvelopeException(envelope.status); } } else { } } } return(null); }