public void TryParse_Invalid()
        {
            MediaTypeWithQualityHeaderValue res;

            Assert.IsFalse(MediaTypeWithQualityHeaderValue.TryParse("", out res), "#1");
            Assert.IsNull(res, "#2");
        }
Exemple #2
0
        private void CheckValidTryParse(string input, MediaTypeWithQualityHeaderValue expectedResult)
        {
            MediaTypeWithQualityHeaderValue result = null;

            Assert.True(MediaTypeWithQualityHeaderValue.TryParse(input, out result));
            Assert.Equal(expectedResult, result);
        }
Exemple #3
0
 private EurekaRestApiHelper()
 {
     _httpClient = new HttpClient();
     MediaTypeWithQualityHeaderValue.TryParse("application/json", out var ajson);
     _httpClient.DefaultRequestHeaders.Accept.Add(ajson);
     _httpClient.DefaultRequestHeaders.AcceptEncoding.TryParseAdd("gzip,deflate");
 }
 public static IEnumerable <MediaTypeWithQualityHeaderValue> GetAcceptTypes(this IHttpRequest req)
 => req.GetHeaders("accept")
 .SelectMany(acceptString => acceptString.Split(','))
 .TryWhere(
     (string acceptString, out MediaTypeWithQualityHeaderValue acceptHeader) =>
     MediaTypeWithQualityHeaderValue.TryParse(acceptString, out acceptHeader))
 .Select(tpl => tpl.@out);
Exemple #5
0
        private void CheckInvalidTryParse(string input)
        {
            MediaTypeWithQualityHeaderValue result = null;

            Assert.False(MediaTypeWithQualityHeaderValue.TryParse(input, out result));
            Assert.Null(result);
        }
        public void TryParse()
        {
            MediaTypeWithQualityHeaderValue res;

            Assert.IsTrue(MediaTypeWithQualityHeaderValue.TryParse("audio/*", out res), "#1");
            Assert.AreEqual(0, res.Parameters.Count, "#1");
        }
        //TODO: there is more into this now in part 18 2016 version, reference section 6.1.1.5 and 6.1.1.6
        //exact method to tp determine "SelectedMediaType" is detailed in 6.1.1.7
        protected virtual List <MediaTypeHeaderValue> GetRequestedMimeType(IWadoUriRequest request)
        {
            List <MediaTypeHeaderValue> acceptTypes = new List <MediaTypeHeaderValue>();
            bool acceptAll = request.AcceptHeader.Contains(AllMimeType, new MediaTypeHeaderComparer( ));

            if (!string.IsNullOrEmpty(request.ContentType))
            {
                string[] mimeTypes = request.ContentType.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

                foreach (string mime in mimeTypes)
                {
                    MediaTypeWithQualityHeaderValue mediaType;

                    if (MediaTypeWithQualityHeaderValue.TryParse(mime, out mediaType))
                    {
                        if (acceptAll || request.AcceptHeader.Contains(mediaType, new MediaTypeHeaderComparer()))
                        {
                            acceptTypes.Add(mediaType);
                        }
                    }
                    else
                    {
                        //TODO: throw excpetion?
                    }
                }
            }

            return(acceptTypes);
        }
        private async Task SetLicenseIdAsync(int id)
        {
            string     lid  = LMSTools.GenerateLicenseId(id);
            HttpClient Http = new HttpClient();

            Http.DefaultRequestHeaders.Add("Accept", "application/json");
            Http.DefaultRequestHeaders.Add("X-RequestDigest", await LMSTools.GetDigestAsync(Navigator.BaseUri));
            Http.DefaultRequestHeaders.Add("IF-MATCH", "*");
            Http.DefaultRequestHeaders.Add("X-HTTP-Method", "MERGE");
            Item     data     = new Item();
            Metadata metadata = new Metadata();

            metadata.Type = Settings.LicensesListType;
            data.Metadata = metadata;
            data.Title    = lid;
            var myContent   = JsonConvert.SerializeObject(data);
            var buffer      = System.Text.Encoding.UTF8.GetBytes(myContent);
            var byteContent = new ByteArrayContent(buffer);
            var mediaType   = new MediaTypeWithQualityHeaderValue("application/json");

            MediaTypeWithQualityHeaderValue.TryParse("application/json;odata=verbose", out mediaType);
            byteContent.Headers.ContentType = mediaType;
            var response = await Http.PostAsync(Navigator.BaseUri + Settings.BaseURL + "_api/web/lists(guid'" + Settings.LicensesListGuid + "')/items('" + id + "')", byteContent);

            if (response.StatusCode == HttpStatusCode.NoContent)
            {
                Console.WriteLine("Done!, Your License ID is: " + lid);
            }
            else
            {
                result = "Filed to Update Title, Your Input Json: ";
                Console.WriteLine(result + " : " + JsonConvert.SerializeObject(data));
            }
        }
Exemple #9
0
 public static string[] GetAcceptHeaders(this HttpRequest contextRequest)
 => Array.ConvertAll(
     contextRequest.Headers
     .GetCommaSeparatedValues("Accept"),
     value => MediaTypeWithQualityHeaderValue.TryParse(value, out var header)
             ? header.MediaType
             : null);
        private void CheckInvalidParse(string input)
        {
            Assert.Throws <FormatException>(() => { MediaTypeWithQualityHeaderValue.Parse(input); });

            MediaTypeWithQualityHeaderValue result = null;

            Assert.False(MediaTypeWithQualityHeaderValue.TryParse(input, out result));
            Assert.Null(result);
        }
Exemple #11
0
        private static HttpContent GetContent(Input input, IDictionary <string, string> headers)
        {
            //Check if Content-Type exists and is set and valid
            var contentTypeIsSetAndValid = false;
            MediaTypeWithQualityHeaderValue validContentType = null;

            if (headers.TryGetValue("content-type", out string contentTypeValue))
            {
                contentTypeIsSetAndValid = MediaTypeWithQualityHeaderValue.TryParse(contentTypeValue, out validContentType);
            }

            return(contentTypeIsSetAndValid
                ? new StringContent(input.Message ?? "", Encoding.GetEncoding(validContentType.CharSet ?? Encoding.UTF8.WebName))
                : new StringContent(input.Message ?? ""));
        }
Exemple #12
0
        private static async Task <bool> ValidateAcceptHeaderAsync(MediaTypeHeaderValue allowedMediaTypeValue, HttpContext httpContext,
                                                                   JsonSerializerSettings serializerSettings)
        {
            StringValues acceptHeaders = httpContext.Request.Headers["Accept"];

            if (!acceptHeaders.Any())
            {
                return(true);
            }

            bool seenCompatibleMediaType = false;

            foreach (string acceptHeader in acceptHeaders)
            {
                if (MediaTypeWithQualityHeaderValue.TryParse(acceptHeader, out MediaTypeWithQualityHeaderValue headerValue))
                {
                    headerValue.Quality = null;

                    if (headerValue.MediaType == "*/*" || headerValue.MediaType == "application/*")
                    {
                        seenCompatibleMediaType = true;
                        break;
                    }

                    if (allowedMediaTypeValue.Equals(headerValue))
                    {
                        seenCompatibleMediaType = true;
                        break;
                    }
                }
            }

            if (!seenCompatibleMediaType)
            {
                await FlushResponseAsync(httpContext.Response, serializerSettings, new Error(HttpStatusCode.NotAcceptable)
                {
                    Title  = "The specified Accept header value does not contain any supported media types.",
                    Detail = $"Please include '{allowedMediaTypeValue}' in the Accept header values."
                });

                return(false);
            }

            return(true);
        }
Exemple #13
0
        private async Task SubmitAsync()
        {
            HttpClient Http = new HttpClient();

            Http.DefaultRequestHeaders.Add("Accept", "application/json");
            Http.DefaultRequestHeaders.Add("X-RequestDigest", await VCSTools.GetDigestAsync(Navigator.BaseUri));
            Item     data     = new Item();
            Metadata metadata = new Metadata();

            metadata.Type             = Config.MainListType;
            data.Metadata             = metadata;
            data.OfficeId             = office.GetItemId();
            data.MeterViolationTypeId = form1Vald.MeterViolationType;
            data.ViolationDate        = form1Vald.ViolationDate;
            data.Region                 = form1Vald.Region;
            data.City                   = form1Vald.City;
            data.Colony                 = form1Vald.Colony;
            data.Street                 = form1Vald.Street;
            data.House                  = form1Vald.House;
            data.AccountNumber          = form1Vald.AccountNumber;
            data.ViolationDetails       = form1Vald.ViolationDetails;
            data.DamageDetails          = form1Vald.DamageDetails;
            data.DiscovererNameId       = peoplePicker.GetValue();
            data.ViolatorName           = form1Vald.ViolatorName;
            data.ViolatorType           = form1Vald.ViolatorType;
            data.ViolatorNationalID     = form1Vald.ViolatorNationalID;
            data.ViolatorNationalIDType = form1Vald.ViolatorNationalIDType;
            data.ViolatorMobile         = form1Vald.ViolatorMobile;
            data.ViolatorStatement      = form1Vald.ViolatorStatement;
            data.Stage                  = 0;
            var myContent   = JsonConvert.SerializeObject(data);
            var buffer      = System.Text.Encoding.UTF8.GetBytes(myContent);
            var byteContent = new ByteArrayContent(buffer);
            var mediaType   = new MediaTypeWithQualityHeaderValue("application/json");

            MediaTypeWithQualityHeaderValue.TryParse("application/json;odata=verbose", out mediaType);
            byteContent.Headers.ContentType = mediaType;
            var response = await Http.PostAsync(Navigator.BaseUri + Config.BaseURL + "_api/web/lists(guid'" + Config.MainListGuid + "')/items", byteContent);

            if (response.StatusCode == HttpStatusCode.Created)
            {
                root = JsonConvert.DeserializeObject <Root>(await response.Content.ReadAsStringAsync());
                await SetViolationIdAsync(root.Id);
            }
        }
        private static IEnumerable <MediaTypeWithQualityHeaderValue> GetMediaTypes(string headerValues)
        {
            if (string.IsNullOrEmpty(headerValues))
            {
                return(new List <MediaTypeWithQualityHeaderValue>());
            }

            return(headerValues.Split(',')
                   .Select(headerValue =>
            {
                var x = MediaTypeWithQualityHeaderValue.TryParse(headerValue, out var mediaTypeHeaderValue)
                        ? mediaTypeHeaderValue
                        : new MediaTypeWithQualityHeaderValue("application/octed-stream");
                return x;
            })
                   .Where(h => h?.Quality.GetValueOrDefault(1) > 0)
                   .OrderByDescending(mt => mt.Quality.GetValueOrDefault(1)));
        }
        private async Task SubmitAsync()
        {
            HttpClient Http = new HttpClient();

            Http.DefaultRequestHeaders.Add("Accept", "application/json");
            Http.DefaultRequestHeaders.Add("X-RequestDigest", await LMSTools.GetDigestAsync(Navigator.BaseUri));
            Item     data     = new Item();
            Metadata metadata = new Metadata();

            metadata.Type       = Settings.LicensesListType;
            data.Metadata       = metadata;
            data.SystemName     = license.SystemName;
            data.LicenseName    = license.LicenseName;
            data.LicenseKey     = license.LicenseKey;
            data.Description    = license.Description;
            data.OwnerId        = peoplePicker.GetValue();
            data.ContractNumber = license.ContractNumber;
            data.StartDate      = license.StartDate;
            data.EndDate        = license.EndDate;
            data.IssuedDate     = license.IssuedDate;
            data.PlannedRenewal = license.PlannedRenewal;
            data.Quantity       = license.Quantity;
            data.Utilized       = license.Utilized;
            data.Cost           = license.Cost;
            data.TotalCost      = license.Quantity * license.Cost;
            data.TypeOfCost     = license.TypeOfCost;

            var myContent   = JsonConvert.SerializeObject(data);
            var buffer      = System.Text.Encoding.UTF8.GetBytes(myContent);
            var byteContent = new ByteArrayContent(buffer);
            var mediaType   = new MediaTypeWithQualityHeaderValue("application/json");

            MediaTypeWithQualityHeaderValue.TryParse("application/json;odata=verbose", out mediaType);
            byteContent.Headers.ContentType = mediaType;
            var response = await Http.PostAsync(Navigator.BaseUri + Settings.BaseURL + "_api/web/lists(guid'" + Settings.LicensesListGuid + "')/items", byteContent);

            if (response.StatusCode == HttpStatusCode.Created)
            {
                root = JsonConvert.DeserializeObject <Root>(await response.Content.ReadAsStringAsync());
                await SetLicenseIdAsync(root.Id);
                await UploadAsync(root.Id);
            }
        }
        private void CheckValidParse(string input, MediaTypeWithQualityHeaderValue expectedResult)
        {
            MediaTypeWithQualityHeaderValue result = MediaTypeWithQualityHeaderValue.Parse(input);

            Assert.Equal(expectedResult, result);

            result = null;
            Assert.True(MediaTypeWithQualityHeaderValue.TryParse(input, out result));
            Assert.Equal(expectedResult, result);

            // New lines are never allowed
            for (int i = 0; i < input.Length; i++)
            {
                CheckInvalidParse(input.Insert(i, "\r"));
                CheckInvalidParse(input.Insert(i, "\n"));
                CheckInvalidParse(input.Insert(i, "\r\n"));
                CheckInvalidParse(input.Insert(i, "\r\n "));
            }
        }
        private void SetHTTPClientHeaders()
        {
            if (_mySession.CSession["SpotifyAccess"] != null)
            {
                _callback = (CallbackModel)_mySession.CSession["SpotifyAccess"];
            }

            lock (_httpClient)
            {
                _httpClient.DefaultRequestHeaders.Clear();
                if (MediaTypeWithQualityHeaderValue.TryParse(_sContentType, out MediaTypeWithQualityHeaderValue mtqhv))
                {
                    _httpClient.DefaultRequestHeaders.Accept.Add(mtqhv);
                }
                if (_callback != null)
                {
                    _httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", _callback.accessToken);
                }
            }
        }
Exemple #18
0
 private Task SetContentType(Domain.Model.Request.BaseRequest request, CustomContext c, CancellationToken ct)
 {
     if (string.IsNullOrWhiteSpace(request.ContentType))
     {
         if (request.ServiceType == Domain.Enums.ServiceType.RESTful)
         {
             request.ContentType = "application/json";
         }
         else if (request.ServiceType == Domain.Enums.ServiceType.SOAP)
         {
             request.ContentType = "text/xml";
         }
     }
     else
     {
         if (!MediaTypeWithQualityHeaderValue.TryParse(request.ContentType, out _))
         {
             c.AddFailure($"{c.PropertyName}.ContentType media type ({request.ContentType}) is invalid.");
         }
     }
     return(Task.CompletedTask);
 }
        internal bool AllowsAccept(string[]?requestAcceptTypes)
        {
            if (_acceptMediaTypes is null)
            {
                return(true);
            }

            if (requestAcceptTypes is null)
            {
                throw new ArgumentNullException(nameof(requestAcceptTypes));
            }

            foreach (var requestAcceptType in requestAcceptTypes)
            {
                var validAccept = MediaTypeWithQualityHeaderValue.TryParse(requestAcceptType, out var accept);
                if (_acceptMediaTypes.Any(mediaType => accept?.MediaType == mediaType))
                {
                    return(true);
                }
            }

            return(false);
        }
Exemple #20
0
        private async Task SetViolationIdAsync(int id)
        {
            string     vid  = VCSTools.GetVid(id);
            HttpClient Http = new HttpClient();

            Http.DefaultRequestHeaders.Add("Accept", "application/json");
            Http.DefaultRequestHeaders.Add("X-RequestDigest", await VCSTools.GetDigestAsync(Navigator.BaseUri));
            Http.DefaultRequestHeaders.Add("IF-MATCH", "*");
            Http.DefaultRequestHeaders.Add("X-HTTP-Method", "MERGE");
            Item     data     = new Item();
            Metadata metadata = new Metadata();

            metadata.Type = Config.MainListType;
            data.Metadata = metadata;
            data.Title    = vid;
            var myContent   = JsonConvert.SerializeObject(data);
            var buffer      = System.Text.Encoding.UTF8.GetBytes(myContent);
            var byteContent = new ByteArrayContent(buffer);
            var mediaType   = new MediaTypeWithQualityHeaderValue("application/json");

            MediaTypeWithQualityHeaderValue.TryParse("application/json;odata=verbose", out mediaType);
            byteContent.Headers.ContentType = mediaType;
            var response = await Http.PostAsync(Navigator.BaseUri + Config.BaseURL + "_api/web/lists(guid'" + Config.MainListGuid + "')/items('" + id + "')", byteContent);

            if (response.StatusCode == HttpStatusCode.NoContent)
            {
                result = "سجل بنجاح باستخدام رقم التعريف: #" + vid;
                bool x = await jsRun.InvokeAsync <bool>("alertx");

                Navigator.NavigateTo("default.aspx/forms/workflow/" + id);
            }
            else
            {
                result = "فشل السجل في الحفظ";
                Console.WriteLine(result + " : " + JsonConvert.SerializeObject(data));
            }
        }
Exemple #21
0
        private static async Task <HttpResponseMessage> GetHttpRequestResponseAsync(HttpClient httpClient, Input input, Options options, CancellationToken cancellationToken)
        {
            cancellationToken.ThrowIfCancellationRequested();
            if (options.Authentication == Authentication.Basic || options.Authentication == Authentication.OAuth)
            {
                switch (options.Authentication)
                {
                case Authentication.Basic:
                    httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic",
                                                                                                   Convert.ToBase64String(Encoding.ASCII.GetBytes($"{options.Username}:{options.Password}")));
                    break;

                case Authentication.OAuth:
                    httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer",
                                                                                                   options.Token);
                    break;
                }
            }

            //Do not automtically set expect 100-continue response header
            httpClient.DefaultRequestHeaders.ExpectContinue = false;
            httpClient.Timeout = TimeSpan.FromSeconds(Convert.ToDouble(options.ConnectionTimeoutSeconds));

            //Ignore case for headers and key comparison
            var headerDict = input.Headers.ToDictionary(key => key.Name, value => value.Value, StringComparer.InvariantCultureIgnoreCase);

            //Check if Content-Type exists and is set and valid
            var contentTypeIsSetAndValid = false;
            MediaTypeWithQualityHeaderValue validContentType = null;

            if (headerDict.TryGetValue("content-type", out string contentTypeValue))
            {
                contentTypeIsSetAndValid = MediaTypeWithQualityHeaderValue.TryParse(contentTypeValue, out validContentType);
            }

            using (HttpContent content = contentTypeIsSetAndValid ?
                                         new StringContent(input.Message ?? "", Encoding.GetEncoding(validContentType.CharSet ?? Encoding.UTF8.WebName)) :
                                         new StringContent(input.Message ?? ""))
            {
                //Clear default headers
                content.Headers.Clear();
                foreach (var header in headerDict)
                {
                    var requestHeaderAddedSuccessfully = httpClient.DefaultRequestHeaders.TryAddWithoutValidation(header.Key, header.Value);
                    if (!requestHeaderAddedSuccessfully)
                    {
                        //Could not add to request headers try to add to content headers
                        var contentHeaderAddedSuccessfully = content.Headers.TryAddWithoutValidation(header.Key, header.Value);
                        if (!contentHeaderAddedSuccessfully)
                        {
                            Trace.TraceWarning($"Could not add header {header.Key}:{header.Value}");
                        }
                    }
                }

                var request = new HttpRequestMessage(new HttpMethod(input.Method.ToString()), new Uri(input.Url))
                {
                    Content = input.Method != Method.Get ? content : null
                };

                var response = await httpClient.SendAsync(request, cancellationToken).ConfigureAwait(false);

                if (options.AllowInvalidResponseContentTypeCharSet)
                {
                    response.Content.Headers.ContentType.CharSet = null;
                }
                return(response);
            }
        }
Exemple #22
0
 private static MediaTypeWithQualityHeaderValue ParseAcceptHeader(string accept)
 => MediaTypeWithQualityHeaderValue.TryParse(accept, out var mediaTypeWithQuality)
         ? mediaTypeWithQuality
         : null;