/// <summary>
 /// Constructor
 /// </summary>
 /// <param name="baseUri"></param>
 private protected RequestClientBase(Uri baseUri)
 {
     Handler = new HttpClientHandler();
     Client  = new HttpClient(Handler)
     {
         Timeout = TimeSpan.FromMinutes(DefaultTimeoutDuration)
     };
     Client.DefaultRequestHeaders.Clear();
     Client.DefaultRequestHeaders.AcceptLanguage.Add(StringWithQualityHeaderValue.Parse("tr-Tr"));
     Client.DefaultRequestHeaders.AcceptLanguage.Add(StringWithQualityHeaderValue.Parse("en-US"));
     Client.DefaultRequestHeaders.ExpectContinue = false;
     Client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(MediaType.GetDescription()));
     Client.DefaultRequestHeaders.AcceptEncoding.Add(new StringWithQualityHeaderValue(Encoding.BodyName));
     BaseUri = baseUri;
 }
 /// <summary>
 /// Set media type
 /// </summary>
 /// <param name="mediaType">Request's media type</param>
 /// <returns></returns>
 /// <exception cref="ArgumentNullException"></exception>
 public RequestClient SetMediaType(MediaTypes mediaType)
 {
     if (Enum.IsDefined(typeof(MediaTypes), mediaType) == false)
     {
         throw new ArgumentException($"{nameof(mediaType)} is invalid.");
     }
     Client.DefaultRequestHeaders.Accept.Remove(new MediaTypeWithQualityHeaderValue(MediaType.GetDescription()));
     MediaType = mediaType;
     Client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(MediaType.GetDescription()));
     SetMediaTypeFormatter(MediaType);
     return(this);
 }