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); }