Beispiel #1
0
        public object Send(object[] args)
        {
            if (_parameters.Length != args.Length)
            {
                throw new InvalidOperationException($"Expected {_parameters.Length} parameters but got {args.Length}");
            }

            var(routeParams, queryParams, formParams, headerParams, cancellationToken) = GetParams(args);
            var requestUriString = ExpandTemplate(routeParams);

            if (queryParams.Any())
            {
                requestUriString = requestUriString + "?" + string.Join("&", queryParams);
            }

            var requestUri = new Uri(requestUriString, UriKind.RelativeOrAbsolute);

            var request = new HttpRequestMessage(_httpMethod, requestUri);

            SetHeaders(request, headerParams);

            if (_httpMethod == HttpMethod.Post || _httpMethod == HttpMethod.Put)
            {
                if (formParams.Any())
                {
                    request.Content = new FormUrlEncodedContent(formParams);
                }
                else
                {
                    var mediaType = _contentTypes[0];
                    request.Content = _serializer.Serialize(args[_bodyArgumentIndex], Encoding.UTF8, mediaType);
                }
            }

            var task = SendAsync(request, cancellationToken);

            if (IsVoidTask())
            {
                return(task);
            }
            if (_returnType.BaseType == typeof(Task) && _returnType.IsGenericType)
            {
                return(_converter.ConvertReturnType(task));
            }
            return(task.Result);
        }
        private object QueryFirstOrDefault(SqlStatement statement)
        {
            var task = _context.Gateway.QueryFirstOrDefaultAsync(statement);

            return(_isAsync ? _taskConverter.ConvertReturnType(task) : task.Result);
        }