private void DecorateRequestHeaders(WebClient client, ResourceAccessLevel resourceAccessLevel) { //attach encrypted user name for protected and private resources if (resourceAccessLevel.In(ResourceAccessLevel.PROTECTED, ResourceAccessLevel.PRIVATE)) { string userHeaderName = resourceAccessLevel.GetStringValue(); if (userHeaderName != null) { client.Headers.Add(userHeaderName, _credentials.UsernameOrClientID.GetMD5Hash()); } } if (_cookies.Any()) { client.Headers.Add(HttpRequestHeader.Cookie, _rawCookies); } }
public async Task <Response> HttpGet(string url, WebHeaderCollection headers = null, ResourceAccessLevel resourceAccessLevel = ResourceAccessLevel.PUBLIC, string query = "", bool logRequestUrl = true, bool logError = true) { Response res = null; using (var client = new WebClient { Headers = headers }) { try { if (!query.IsNullOrWhiteSpace()) { url += $"?{query}"; } if (logRequestUrl) { await _logger.LogDebug($"GET {url}"); } DecorateRequestHeaders(client, resourceAccessLevel); string data = await client.DownloadStringTaskAsync(url); await _logger.LogDebug($"{data}"); //PrintHeaders(client); res = new Response(data, client.ResponseHeaders, HttpStatusCode.OK); UpdateCookies(client); } catch (ThreadInterruptedException) { throw; } catch (WebException we) { if (logError || _logger.IsDebug) { await _logger.LogError(we.Message); } //PrintHeaders(client); if (we.Response is HttpWebResponse resp) { return(new Response(we.Message, resp.StatusCode)); } else { return(new Response(we.Message)); } } catch (Exception e) { await _logger.LogError(e.Message); //PrintHeaders(client); res = new Response(e.Message); } } return(res); }
public async Task <Response> HttpPut(string url, WebHeaderCollection headers = null, string body = null, ResourceAccessLevel resourceAccessLevel = ResourceAccessLevel.PUBLIC) { // NOT implemented return(await Task.FromResult(new Response())); }
public async Task <Response> HttpPost(string url, WebHeaderCollection headers = null, string body = null, ResourceAccessLevel resourceAccessLevel = ResourceAccessLevel.PUBLIC, bool logRequestUrl = true) { Response res; using var client = new WebClient { Headers = headers }; try { if (logRequestUrl) { await _logger.LogDebug($"POST {url}"); } DecorateRequestHeaders(client, resourceAccessLevel); string data = await client.UploadStringTaskAsync(url, body); //PrintHeaders(client); res = new Response(data, client.ResponseHeaders, HttpStatusCode.OK); UpdateCookies(client); } catch (ThreadInterruptedException) { throw; } catch (WebException we) { await _logger.LogError(we.Message); //PrintHeaders(client); if (we.Response is HttpWebResponse resp) { return(new Response(we.Message, resp.StatusCode)); } else { return(new Response(we.Message)); } } catch (Exception e) { await _logger.LogError(e.Message); //PrintHeaders(client); res = new Response(e.Message); } return(res); }