HttpRequestOptions.cs 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. #pragma warning disable CS1591
  2. #pragma warning disable SA1600
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Threading;
  6. using Microsoft.Net.Http.Headers;
  7. namespace MediaBrowser.Common.Net
  8. {
  9. /// <summary>
  10. /// Class HttpRequestOptions.
  11. /// </summary>
  12. public class HttpRequestOptions
  13. {
  14. /// <summary>
  15. /// Initializes a new instance of the <see cref="HttpRequestOptions"/> class.
  16. /// </summary>
  17. public HttpRequestOptions()
  18. {
  19. RequestHeaders = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
  20. CacheMode = CacheMode.None;
  21. DecompressionMethod = CompressionMethod.Deflate;
  22. }
  23. /// <summary>
  24. /// Gets or sets the URL.
  25. /// </summary>
  26. /// <value>The URL.</value>
  27. public string Url { get; set; }
  28. public CompressionMethod DecompressionMethod { get; set; }
  29. /// <summary>
  30. /// Gets or sets the accept header.
  31. /// </summary>
  32. /// <value>The accept header.</value>
  33. public string AcceptHeader
  34. {
  35. get => GetHeaderValue(HeaderNames.Accept);
  36. set => RequestHeaders[HeaderNames.Accept] = value;
  37. }
  38. /// <summary>
  39. /// Gets or sets the cancellation token.
  40. /// </summary>
  41. /// <value>The cancellation token.</value>
  42. public CancellationToken CancellationToken { get; set; }
  43. /// <summary>
  44. /// Gets or sets the user agent.
  45. /// </summary>
  46. /// <value>The user agent.</value>
  47. public string UserAgent
  48. {
  49. get => GetHeaderValue(HeaderNames.UserAgent);
  50. set => RequestHeaders[HeaderNames.UserAgent] = value;
  51. }
  52. /// <summary>
  53. /// Gets or sets the referrer.
  54. /// </summary>
  55. /// <value>The referrer.</value>
  56. public string Referer
  57. {
  58. get => GetHeaderValue(HeaderNames.Referer);
  59. set => RequestHeaders[HeaderNames.Referer] = value;
  60. }
  61. /// <summary>
  62. /// Gets or sets the host.
  63. /// </summary>
  64. /// <value>The host.</value>
  65. public string Host
  66. {
  67. get => GetHeaderValue(HeaderNames.Host);
  68. set => RequestHeaders[HeaderNames.Host] = value;
  69. }
  70. public Dictionary<string, string> RequestHeaders { get; private set; }
  71. public string RequestContentType { get; set; }
  72. public string RequestContent { get; set; }
  73. public byte[] RequestContentBytes { get; set; }
  74. public bool BufferContent { get; set; }
  75. public bool LogErrorResponseBody { get; set; }
  76. public bool EnableKeepAlive { get; set; }
  77. public CacheMode CacheMode { get; set; }
  78. public TimeSpan CacheLength { get; set; }
  79. public bool EnableDefaultUserAgent { get; set; }
  80. private string GetHeaderValue(string name)
  81. {
  82. RequestHeaders.TryGetValue(name, out var value);
  83. return value;
  84. }
  85. }
  86. public enum CacheMode
  87. {
  88. None = 0,
  89. Unconditional = 1
  90. }
  91. [Flags]
  92. public enum CompressionMethod
  93. {
  94. None = 0b00000001,
  95. Deflate = 0b00000010,
  96. Gzip = 0b00000100
  97. }
  98. }