protected string invoke(HttpMethod method, Dictionary <string, string> data = null) { reset(); ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; string uri = getEndpoint(); if (data.ContainsKey("namespace")) { uri = uri + "/" + data ["namespace"]; } if (data.ContainsKey("token") && (method == HttpMethod.Get || method == HttpMethod.Put || method == HttpMethod.Delete) ) { uri = uri + "/" + data ["token"]; data.Remove("token"); } if (method == HttpMethod.Get && data.Count > 0) { uri = uri + "?" + getQueryString(data); } HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri); request.Method = method.ToString(); request.ContentLength = 0; request.UserAgent = "EveryPay .NET Library " + Everypay.getVersion(); string authorization = Everypay.apiKey + ":"; string authorizationHeader = "Basic " + Convert.ToBase64String(Encoding.UTF8.GetBytes(authorization)); request.Headers ["Authorization"] = authorizationHeader; if (method == HttpMethod.Post || method == HttpMethod.Put) { string postData = getQueryString(data); request.ContentType = "application/x-www-form-urlencoded"; request.ContentLength = postData.Length; StreamWriter s = new StreamWriter(request.GetRequestStream()); s.Write(postData); s.Flush(); s.Close(); } var responseBody = string.Empty; HttpWebResponse response = null; try { response = (HttpWebResponse)request.GetResponse(); responseBody = parseResponse(response); } catch (WebException e) { response = (HttpWebResponse)e.Response; responseBody = parseResponse(response); } finally { if (response.StatusCode != HttpStatusCode.OK) { createErrorObject(); } } return(responseBody); }
private string getEndpoint() { return(Everypay.getApiUrl() + "/" + getResource()); }