internal async Task <ObjectResponse <T> > UrlPostToJsonObject <T>(string request, IReadOnlyCollection <KeyValuePair <string, string> > data = null, string referer = null, byte maxTries = MaxTries) where T : class { if (string.IsNullOrEmpty(request) || (maxTries == 0)) { ArchiLogger.LogNullError(nameof(request) + " || " + nameof(maxTries)); return(null); } StringResponse response = await UrlPostToString(request, data, referer, maxTries).ConfigureAwait(false); if (string.IsNullOrEmpty(response?.Content)) { return(null); } T obj; try { obj = JsonConvert.DeserializeObject <T>(response.Content); } catch (JsonException e) { ArchiLogger.LogGenericException(e); if (Debugging.IsUserDebugging) { ArchiLogger.LogGenericDebug(string.Format(Strings.Content, response.Content)); } return(null); } return(new ObjectResponse <T>(response, obj)); }
internal async Task <XmlResponse> UrlGetToXml(string request, string referer = null, byte maxTries = MaxTries) { if (string.IsNullOrEmpty(request) || (maxTries == 0)) { ArchiLogger.LogNullError(nameof(request) + " || " + nameof(maxTries)); return(null); } StringResponse response = await UrlGetToString(request, referer, maxTries).ConfigureAwait(false); if (string.IsNullOrEmpty(response?.Content)) { return(null); } XmlDocument xmlDocument = new XmlDocument(); try { xmlDocument.LoadXml(response.Content); } catch (XmlException e) { ArchiLogger.LogGenericException(e); return(null); } return(new XmlResponse(response, xmlDocument)); }
internal async Task <ObjectResponse <T> > UrlGetToObjectRetry <T>(string request, string referer = null) { if (string.IsNullOrEmpty(request)) { ArchiLogger.LogNullError(nameof(request)); return(null); } StringResponse response = await UrlGetToStringRetry(request, referer).ConfigureAwait(false); if (response == null) { return(null); } T obj; try { obj = JsonConvert.DeserializeObject <T>(response.Content); } catch (JsonException e) { ArchiLogger.LogGenericException(e); if (Debugging.IsUserDebugging) { ArchiLogger.LogGenericDebug(string.Format(Strings.Content, response.Content)); } return(null); } return(new ObjectResponse <T>(response, obj)); }
internal XmlDocumentResponse([NotNull] StringResponse stringResponse, XmlDocument content) : base(stringResponse) { if (stringResponse == null) { throw new ArgumentNullException(nameof(stringResponse)); } Content = content; }
internal HtmlDocumentResponse([NotNull] StringResponse stringResponse) : base(stringResponse) { if (stringResponse == null) { throw new ArgumentNullException(nameof(stringResponse)); } Content = StringToHtmlDocument(stringResponse.Content); }
internal ObjectResponse(StringResponse stringResponse, T content) : base(stringResponse) { if (stringResponse == null) { throw new ArgumentNullException(nameof(stringResponse)); } Content = content; }
public async Task <XmlDocumentResponse> UrlGetToXmlDocument(string request, string referer = null, ERequestOptions requestOptions = ERequestOptions.None, byte maxTries = MaxTries) { if (string.IsNullOrEmpty(request) || (maxTries == 0)) { ArchiLogger.LogNullError(nameof(request) + " || " + nameof(maxTries)); return(null); } XmlDocumentResponse result = null; for (byte i = 0; i < maxTries; i++) { StringResponse response = await UrlGetToString(request, referer, requestOptions | ERequestOptions.ReturnClientErrors, 1).ConfigureAwait(false); // ReSharper disable once UseNullPropagationWhenPossible - false check if (response == null) { continue; } if (response.StatusCode.IsClientErrorCode()) { if (requestOptions.HasFlag(ERequestOptions.ReturnClientErrors)) { result = new XmlDocumentResponse(response); } break; } if (string.IsNullOrEmpty(response.Content)) { continue; } XmlDocument xmlDocument = new XmlDocument(); try { xmlDocument.LoadXml(response.Content); } catch (XmlException e) { ArchiLogger.LogGenericWarningException(e); continue; } return(new XmlDocumentResponse(response, xmlDocument)); } if (maxTries > 1) { ArchiLogger.LogGenericWarning(string.Format(Strings.ErrorRequestFailedTooManyTimes, maxTries)); ArchiLogger.LogGenericDebug(string.Format(Strings.ErrorFailingRequest, request)); } return(result); }
internal async Task <HtmlDocumentResponse> UrlPostToHtmlDocument(string request, IReadOnlyCollection <KeyValuePair <string, string> > data = null, string referer = null, byte maxTries = MaxTries) { if (string.IsNullOrEmpty(request) || (maxTries == 0)) { ArchiLogger.LogNullError(nameof(request) + " || " + nameof(maxTries)); return(null); } StringResponse response = await UrlPostToString(request, data, referer, maxTries).ConfigureAwait(false); return(response != null ? new HtmlDocumentResponse(response) : null); }
internal async Task <HtmlDocumentResponse> UrlGetToHtmlDocument(string request, string referer = null, byte maxTries = MaxTries) { if (string.IsNullOrEmpty(request) || (maxTries == 0)) { ArchiLogger.LogNullError(nameof(request) + " || " + nameof(maxTries)); return(null); } StringResponse response = await UrlGetToString(request, referer, maxTries).ConfigureAwait(false); return(response != null ? new HtmlDocumentResponse(response) : null); }
internal async Task <HtmlDocumentResponse> UrlGetToHtmlDocumentRetry(string request, string referer = null) { if (string.IsNullOrEmpty(request)) { ArchiLogger.LogNullError(nameof(request)); return(null); } StringResponse response = await UrlGetToStringRetry(request, referer).ConfigureAwait(false); return(response != null ? new HtmlDocumentResponse(response) : null); }
internal async Task <StringResponse?> UrlGetToString(string request, string?referer = null, ERequestOptions requestOptions = ERequestOptions.None, byte maxTries = MaxTries) { if (string.IsNullOrEmpty(request) || (maxTries == 0)) { throw new ArgumentNullException(nameof(request) + " || " + nameof(maxTries)); } StringResponse?result = null; for (byte i = 0; i < maxTries; i++) { using HttpResponseMessage? response = await InternalGet(request, referer).ConfigureAwait(false); if (response?.StatusCode.IsClientErrorCode() == true) { if (requestOptions.HasFlag(ERequestOptions.ReturnClientErrors)) { result = new StringResponse(response); } break; } if (response?.StatusCode.IsServerErrorCode() == true) { if (requestOptions.HasFlag(ERequestOptions.ReturnServerErrors)) { result = new StringResponse(response); } break; } if (response?.Content == null) { continue; } return(new StringResponse(response, await response.Content.ReadAsStringAsync().ConfigureAwait(false))); } if (maxTries > 1) { ArchiLogger.LogGenericWarning(string.Format(Strings.ErrorRequestFailedTooManyTimes, maxTries)); ArchiLogger.LogGenericDebug(string.Format(Strings.ErrorFailingRequest, request)); } return(result); }
public async Task <ObjectResponse <T> > UrlGetToJsonObject <T>(string request, string referer = null, byte maxTries = MaxTries) where T : class { if (string.IsNullOrEmpty(request) || (maxTries == 0)) { ArchiLogger.LogNullError(nameof(request) + " || " + nameof(maxTries)); return(null); } for (byte i = 0; i < maxTries; i++) { StringResponse response = await UrlGetToString(request, referer, 1).ConfigureAwait(false); if (string.IsNullOrEmpty(response?.Content)) { continue; } T obj; try { obj = JsonConvert.DeserializeObject <T>(response.Content); } catch (JsonException e) { ArchiLogger.LogGenericWarningException(e); if (Debugging.IsUserDebugging) { ArchiLogger.LogGenericDebug(string.Format(Strings.Content, response.Content)); } continue; } return(new ObjectResponse <T>(response, obj)); } if (maxTries > 1) { ArchiLogger.LogGenericWarning(string.Format(Strings.ErrorRequestFailedTooManyTimes, maxTries)); ArchiLogger.LogGenericDebug(string.Format(Strings.ErrorFailingRequest, request)); } return(null); }
private async Task <StringResponse> UrlPostToString(string request, IReadOnlyCollection <KeyValuePair <string, string> > data = null, string referer = null, ERequestOptions requestOptions = ERequestOptions.None, byte maxTries = MaxTries) { if (string.IsNullOrEmpty(request) || (maxTries == 0)) { ArchiLogger.LogNullError(nameof(request) + " || " + nameof(maxTries)); return(null); } StringResponse result = null; for (byte i = 0; i < maxTries; i++) { using (HttpResponseMessage response = await InternalPost(request, data, referer).ConfigureAwait(false)) { if (response == null) { continue; } if (response.StatusCode.IsClientErrorCode()) { if (requestOptions.HasFlag(ERequestOptions.ReturnClientErrors)) { result = new StringResponse(response); } break; } return(new StringResponse(response, await response.Content.ReadAsStringAsync().ConfigureAwait(false))); } } if (maxTries > 1) { ArchiLogger.LogGenericWarning(string.Format(Strings.ErrorRequestFailedTooManyTimes, maxTries)); ArchiLogger.LogGenericDebug(string.Format(Strings.ErrorFailingRequest, request)); } return(result); }
public async Task <XmlDocumentResponse> UrlGetToXmlDocument(string request, string referer = null, byte maxTries = MaxTries) { if (string.IsNullOrEmpty(request) || (maxTries == 0)) { ArchiLogger.LogNullError(nameof(request) + " || " + nameof(maxTries)); return(null); } for (byte i = 0; i < maxTries; i++) { StringResponse response = await UrlGetToString(request, referer, 1).ConfigureAwait(false); if (string.IsNullOrEmpty(response?.Content)) { continue; } XmlDocument xmlDocument = new XmlDocument(); try { xmlDocument.LoadXml(response.Content); } catch (XmlException e) { ArchiLogger.LogGenericWarningException(e); continue; } return(new XmlDocumentResponse(response, xmlDocument)); } if (maxTries > 1) { ArchiLogger.LogGenericWarning(string.Format(Strings.ErrorRequestFailedTooManyTimes, maxTries)); ArchiLogger.LogGenericDebug(string.Format(Strings.ErrorFailingRequest, request)); } return(null); }
private async Task <StringResponse> UrlPostToStringRetry(string request, IReadOnlyCollection <KeyValuePair <string, string> > data = null, string referer = null) { if (string.IsNullOrEmpty(request)) { ArchiLogger.LogNullError(nameof(request)); return(null); } StringResponse response = null; for (byte i = 0; (i < MaxTries) && (response == null); i++) { response = await UrlPostToString(request, data, referer).ConfigureAwait(false); } if (response != null) { return(response); } ArchiLogger.LogGenericWarning(string.Format(Strings.ErrorRequestFailedTooManyTimes, MaxTries)); ArchiLogger.LogGenericDebug(string.Format(Strings.ErrorFailingRequest, request)); return(null); }
public async Task <ObjectResponse <T> > UrlPostToJsonObject <T>(string request, IReadOnlyCollection <KeyValuePair <string, string> > data = null, string referer = null, ERequestOptions requestOptions = ERequestOptions.None, byte maxTries = MaxTries) where T : class { if (string.IsNullOrEmpty(request) || (maxTries == 0)) { ArchiLogger.LogNullError(nameof(request) + " || " + nameof(maxTries)); return(null); } ObjectResponse <T> result = null; for (byte i = 0; i < maxTries; i++) { StringResponse response = await UrlPostToString(request, data, referer, requestOptions | ERequestOptions.ReturnClientErrors, 1).ConfigureAwait(false); if (response == null) { return(null); } if (response.StatusCode.IsClientErrorCode()) { if (requestOptions.HasFlag(ERequestOptions.ReturnClientErrors)) { result = new ObjectResponse <T>(response); } break; } if (string.IsNullOrEmpty(response.Content)) { continue; } T obj; try { obj = JsonConvert.DeserializeObject <T>(response.Content); } catch (JsonException e) { ArchiLogger.LogGenericWarningException(e); if (Debugging.IsUserDebugging) { ArchiLogger.LogGenericDebug(string.Format(Strings.Content, response.Content)); } continue; } return(new ObjectResponse <T>(response, obj)); } if (maxTries > 1) { ArchiLogger.LogGenericWarning(string.Format(Strings.ErrorRequestFailedTooManyTimes, maxTries)); ArchiLogger.LogGenericDebug(string.Format(Strings.ErrorFailingRequest, request)); } return(result); }