示例#1
0
 /// <summary>Disallows requests that would like the response in json format.</summary>
 /// <param name="requestKind">Type of request.</param>
 /// <param name="acceptHeader">Accept header value.</param>
 private static void DisallowJsonRequests(RequestKind requestKind, string acceptHeader)
 {
     if (HttpProcessUtils.IsJsonRequest(requestKind, acceptHeader))
     {
         throw new DomainDataServiceException((int)HttpStatusCode.UnsupportedMediaType, Resource.HttpProcessUtility_UnsupportedMediaType);
     }
 }
        /// <summary>Disallows requests that would like the response in json format.</summary>
        /// <param name="requestKind">Type of request.</param>
        /// <param name="acceptHeader">Accept header value.</param>
        /// <returns>True if request is accepting json response.</returns>
        internal static bool IsJsonRequest(RequestKind requestKind, string acceptHeader)
        {
            string mimeType = null;

            switch (requestKind)
            {
            case RequestKind.ServiceDocument:
                mimeType = HttpProcessUtils.SelectRequiredMimeType(
                    acceptHeader,
                    HttpProcessUtils.ServiceDocumentMimeTypes,
                    HttpProcessUtils.MimeApplicationXml);
                break;

            case RequestKind.MetadataDocument:
                mimeType = HttpProcessUtils.SelectRequiredMimeType(
                    acceptHeader,
                    HttpProcessUtils.MetadataDocumentMimeTypes,
                    HttpProcessUtils.MimeApplicationXml);
                break;

            case RequestKind.ResourceSet:
                mimeType = HttpProcessUtils.SelectRequiredMimeType(
                    acceptHeader,
                    HttpProcessUtils.ResourceSetMimeTypes,
                    HttpProcessUtils.MimeApplicationAtom);
                break;

            case RequestKind.ServiceOperation:
                mimeType = HttpProcessUtils.SelectRequiredMimeType(
                    acceptHeader,
                    HttpProcessUtils.ServiceOperationMimeTypes,
                    HttpProcessUtils.MimeApplicationXml);
                break;

            default:
                Debug.Assert(false, "Must never receive any other kind of request.");
                break;
            }

            return(HttpProcessUtils.CompareMimeType(mimeType, HttpProcessUtils.MimeApplicationJson));
        }
        public void EditRequest(RequestKind requestKind)
        {
            DefineRequestsForMonth(2014, 6, 1);
            var screenModel            = new RequestManagementPageViewModel(Application, 2014, 6);
            var currentRequestEntityId = screenModel.Requests.SelectableValues.First().EntityId;

            object dialogViewModel = null;

            Application.WindowManager
            .When(w => w.ShowDialog(Arg.Any <object>()))
            .Do(c => { dialogViewModel = c[0]; });

            screenModel.Requests.Value = screenModel.Requests.SelectableValues.First();
            screenModel.EditRequestCommand.Execute(null);

            Assert.That(dialogViewModel, Is.InstanceOf <RequestDialogViewModel>());

            var dialog = (RequestDialogViewModel)dialogViewModel;

            var newDate = dialog.DateProperty.Value.AddDays(2);

            dialog.DateProperty.Value        = newDate;
            dialog.DescriptionProperty.Value = "New Description added";
            dialog.RequestKind.Value         = requestKind;
            dialog.ValueProperty.Value       = 77.77;

            Application.Repository.ClearReceivedCalls();
            dialog.CreateRequestCommand.Execute(null);

            var expectedValue = requestKind == RequestKind.Earning ? 77.77 : -77.77;

            Application.Repository.Received(1).UpdateRequest(currentRequestEntityId,
                                                             Arg.Is <RequestEntityData>(r => r.Description == "New Description added" && Math.Abs(r.Value - expectedValue) < double.Epsilon && dialog.DateProperty.Value == newDate));

            Application.Repository.Received(1).CalculateSaldoForMonth(2014, 6);
        }
示例#4
0
 public RequestButton(RequestKind action, string title) : this()
 {
     Action = action;
     Text   = title;
 }
示例#5
0
 public RequestButton(RequestKind action, string title, string[] parameters)
 {
     Action     = action;
     Text       = title;
     Parameters = parameters;
 }
示例#6
0
        /// <summary>
        /// Sends an API request to the specified URL and returns the response as the specified value if possible.
        /// </summary>
        /// <typeparam name="T">Type of the expected return value.</typeparam>
        /// <param name="url">The URL which the request should be sent to.</param>
        /// <param name="parameters">Parameters to be sent with the request.</param>
        /// <param name="kind">How the body of the request should be transmitted.</param>
        /// <exception cref="UriFormatException">When <paramref name="url"/> can't be parsed to a URL.</exception>
        /// <exception cref="InvalidCastException">The response can't be parsed to the type <see cref="T"/>.</exception>
        /// <exception cref="ArgumentNullException">When The url is null.</exception>
        /// <returns>The response parsed to the specified type, if possible.</returns>
        public static async Task <T> SendRequestAsync <T>(string url, Dictionary <string, object> header, Dictionary <string, object> parameters, RequestKind kind)
        {
            if (url.NullOrWhiteSpace())
            {
                throw new ArgumentNullException(nameof(url));
            }

            var client = new HttpClient();

            if (header.ContainsKey("Authorization"))
            {
                client.DefaultRequestHeaders.Authorization = AuthenticationHeaderValue.Parse(header["Authorization"].ToString());
                header.Remove("Authorization");
            }
            var contentType = "application/json";

            if (header.ContainsKey("Content-Type"))
            {
                contentType = header["Content-Type"].ToString();
                header.Remove("Content-Type");
            }

            foreach (var headerPair in header)
            {
                client.DefaultRequestHeaders.Add(headerPair.Key, headerPair.Value.ToString());
            }

            if (kind == RequestKind.Get)
            {
                var param = new List <string>();
                foreach (var parameter in parameters)
                {
                    param.Add($"{parameter.Key}={parameter.Value}");
                }

                var path = url.Trim('/', '\\').ToLowerInvariant().Slugify();

                if (param.Count > 0)
                {
                    path += "?" + string.Join('&', param);
                    path  = path.Slugify().ToLowerInvariant();
                }

                if (Uri.TryCreate(path, UriKind.Absolute, out var requestUri))
                {
                    var response = await client.GetAsync(requestUri);

                    if (response.IsSuccessStatusCode)
                    {
                        var responseString = await response.Content.ReadAsStringAsync();

                        var parsed = (T)Convert.ChangeType(responseString, typeof(T));
                        return(parsed);
                    }

                    throw new HttpRequestException($"The server responded with the statuscode {response.StatusCode}: {response.ReasonPhrase}.");
                }

                throw new UriFormatException($"The string \"{url}\" is not a valid URL.");
            }
            else
            {
                if (Uri.TryCreate(url, UriKind.Absolute, out var requestUri))
                {
                    var jsonBody = JsonSerializer.Serialize(parameters);
                    var response = await client.PostAsync(requestUri, new StringContent(jsonBody, Encoding.UTF8, contentType));

                    if (response.IsSuccessStatusCode)
                    {
                        var responseString = await response.Content.ReadAsStringAsync();

                        var parsed = (T)Convert.ChangeType(responseString, typeof(T));
                        return(parsed);
                    }

                    throw new HttpRequestException($"The server responded with the statuscode {response.StatusCode}: {response.ReasonPhrase}.");
                }

                throw new UriFormatException($"The string \"{url}\" is not a valid URL.");
            }
        }
 public object evalTemplateNode(XmlNode templateNode0, RequestKind stateMachineProcess)
 {
     return(mbot.evalTemplateNode(templateNode0, stateMachineProcess, this));
 }
 internal void evalTemplateNodeInnerXml(XmlNode myNode, RequestKind requestKind)
 {
     mbot.evalTemplateNodeInnerXml(myNode, requestKind, this);
 }
示例#9
0
 public CallbackQueryHandlerAttribute(RequestKind action, Type name)
 {
     Action        = action;
     TypeOfHandler = name;
 }
        /// <summary>Disallows requests that would like the response in json format.</summary>
        /// <param name="requestKind">Type of request.</param>
        /// <param name="acceptHeader">Accept header value.</param>
        /// <returns>True if request is accepting json response.</returns>
        internal static bool IsJsonRequest(RequestKind requestKind, string acceptHeader)
        {
            string mimeType = null;
            switch (requestKind)
            {
                case RequestKind.ServiceDocument:
                    mimeType = HttpProcessUtils.SelectRequiredMimeType(
                        acceptHeader,
                        HttpProcessUtils.ServiceDocumentMimeTypes,
                        HttpProcessUtils.MimeApplicationXml);
                    break;
                case RequestKind.MetadataDocument:
                    mimeType = HttpProcessUtils.SelectRequiredMimeType(
                        acceptHeader,
                        HttpProcessUtils.MetadataDocumentMimeTypes,
                        HttpProcessUtils.MimeApplicationXml);
                    break;
                case RequestKind.ResourceSet:
                    mimeType = HttpProcessUtils.SelectRequiredMimeType(
                        acceptHeader,
                        HttpProcessUtils.ResourceSetMimeTypes,
                        HttpProcessUtils.MimeApplicationAtom);
                    break;
                case RequestKind.ServiceOperation:
                    mimeType = HttpProcessUtils.SelectRequiredMimeType(
                        acceptHeader,
                        HttpProcessUtils.ServiceOperationMimeTypes,
                        HttpProcessUtils.MimeApplicationXml);
                    break;
                default:
                    Debug.Assert(false, "Must never receive any other kind of request.");
                    break;
            }

            return HttpProcessUtils.CompareMimeType(mimeType, HttpProcessUtils.MimeApplicationJson);
        }
示例#11
0
 public ListMessage(Address address, RequestKind kind) : base(Opcode.LIST, address)
 {
     this.Kind = kind;
 }
        public void EditRequest(RequestKind requestKind)
        {
            DefineRequestsForMonth(2014, 6, 1);
            var screenModel = new RequestManagementPageViewModel(Application, 2014, 6);
            var currentRequestEntityId = screenModel.Requests.SelectableValues.First().EntityId;

            object dialogViewModel = null;
            Application.WindowManager
                       .When(w => w.ShowDialog(Arg.Any<object>()))
                       .Do(c => { dialogViewModel = c[0]; });

            screenModel.Requests.Value = screenModel.Requests.SelectableValues.First();
            screenModel.EditRequestCommand.Execute(null);

            Assert.That(dialogViewModel, Is.InstanceOf<RequestDialogViewModel>());

            var dialog = (RequestDialogViewModel) dialogViewModel;

            var newDate = dialog.DateProperty.Value.AddDays(2);
            dialog.DateProperty.Value = newDate;
            dialog.DescriptionProperty.Value = "New Description added";
            dialog.RequestKind.Value = requestKind;
            dialog.ValueProperty.Value = 77.77;

            Application.Repository.ClearReceivedCalls();
            dialog.CreateRequestCommand.Execute(null);

            var expectedValue = requestKind == RequestKind.Earning ? 77.77 : -77.77;

            Application.Repository.Received(1).UpdateRequest(currentRequestEntityId,
                Arg.Is<RequestEntityData>(r => r.Description == "New Description added" && Math.Abs(r.Value - expectedValue) < double.Epsilon && dialog.DateProperty.Value == newDate));

            Application.Repository.Received(1).CalculateSaldoForMonth(2014, 6);
        }
示例#13
0
 public MissingInfoForBuildMessage(RequestKind action, CallbackQuery query, TelegramBotClient owner)
 {
     this.Action = action;
     this.query  = query;
     this.Owner  = owner;
 }
示例#14
0
 public ListMessage(Address address, string host, RequestKind kind) : base(Opcode.LIST, address, host)
 {
     this.Kind = kind;
 }
示例#15
0
 public RequestMessage(Address address, string host, RequestKind kind, string nexusName) : base(Opcode.REQUEST, address, host)
 {
     Kind      = kind;
     NexusName = nexusName;
 }
示例#16
0
 public RequestMessage(RequestKind kind, string nexusName, Address address) : base(Opcode.REQUEST, address)
 {
     Kind      = kind;
     NexusName = nexusName;
 }
示例#17
0
 /// <summary>
 ///     Initializes a new instance of the <see cref="QuotaKeeperRequest"/> struct.
 /// </summary>
 private QuotaKeeperRequest(long size, RequestKind kind)
 {
     Size  = size;
     _kind = kind;
 }
 /// <summary>Disallows requests that would like the response in json format.</summary>
 /// <param name="requestKind">Type of request.</param>
 /// <param name="acceptHeader">Accept header value.</param>
 private static void DisallowJsonRequests(RequestKind requestKind, string acceptHeader)
 {
     if (HttpProcessUtils.IsJsonRequest(requestKind, acceptHeader))
     {
         throw new DomainDataServiceException((int)HttpStatusCode.UnsupportedMediaType, Resource.HttpProcessUtility_UnsupportedMediaType);
     }
 }