Beispiel #1
0
        protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
        {
            // ballot: binary upload should be determined by the Content-Type header, instead of the Rest url?
            if (isBinaryRequest(request))
            {
                if (request.Content.Headers.ContentType != null)
                {
                    var format = request.Content.Headers.ContentType.MediaType;
                    request.Content.Headers.Replace("X-Content-Type", format);
                }

                request.Content.Headers.ContentType = new MediaTypeHeaderValue(FhirMediaType.BinaryResource);
                request.Headers.Replace("Accept", FhirMediaType.BinaryResource); // HACK
                // todo: HACK. passes to BinaryFhirFormatter
            }
            //else if (isTagRequest(request) && request.Method == HttpMethod.Delete)
            //{
            //    // EK: HACK DELETE _tag operations of type DELETE MUST have a body
            //    // Normally we would catch this in the controller, but the WebApi seems
            //    // to be confused when a DELETE with no body arrives while we have
            //    // a controller action with a [FromBody] parameter.
            //    var body = await request.Content.ReadAsByteArrayAsync();
            //    if (body == null || body.Length == 0)
            //        throw new SparkException(HttpStatusCode.BadRequest, "DELETE operation on _tags must have data in the body");
            //}
            else
            {
                // The requested response format can be overridden by the url parameter 'format'
                // Can only be json/xml (or equivalent MIME types) otherwise, ignore.
                string formatParam = request.GetParameter("_format");
                if (!string.IsNullOrEmpty(formatParam))
                {
                    var accepted = ContentType.GetResourceFormatFromFormatParam(formatParam);
                    if (accepted != ResourceFormat.Unknown)
                    {
                        request.Headers.Accept.Clear();

                        if (accepted == ResourceFormat.Json)
                            request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(ContentType.JSON_CONTENT_HEADER));
                        else
                            request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(ContentType.XML_CONTENT_HEADER));
                    }
                }
            }
            return await base.SendAsync(request, cancellationToken);
        }
Beispiel #2
0
        protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
        {
            // BALLOT: binary upload should be determined by the Content-Type header, instead of the Rest url?
            if (isBinaryRequest(request))
            {
                if (request.Content.Headers.ContentType != null)
                {
                    var format = request.Content.Headers.ContentType.MediaType;
                    request.Content.Headers.Replace("X-Content-Type", format);
                }

                request.Content.Headers.ContentType = new MediaTypeHeaderValue(FhirMediaType.BinaryResource);
                request.Headers.Replace("Accept", FhirMediaType.BinaryResource); 
                // HACK: passes to BinaryFhirFormatter
            }
            else
            {
                // The requested response format can be overridden by the url parameter 'format'
                // Can only be json/xml (or equivalent MIME types) otherwise, ignore.
                string formatParam = request.GetParameter("_format");
                if (!string.IsNullOrEmpty(formatParam))
                {
                    var accepted = ContentType.GetResourceFormatFromFormatParam(formatParam);
                    if (accepted != ResourceFormat.Unknown)
                    {
                        request.Headers.Accept.Clear();

                        if (accepted == ResourceFormat.Json)
                            request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(ContentType.JSON_CONTENT_HEADER));
                        else
                            request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(ContentType.XML_CONTENT_HEADER));
                    }
                }
            }
            return await base.SendAsync(request, cancellationToken);
        }
Beispiel #3
0
 public HistoryParameters(HttpRequestMessage request)
 {
     Count = request.GetIntParameter(FhirParameter.COUNT);
     Since = request.GetDateParameter(FhirParameter.SINCE);
     SortBy = request.GetParameter(FhirParameter.SORT);
 }