public async Task WriteTo(object entity, IHttpEntity response, IEnumerable <string> codecParameters)
        {
            var content = Encoding.UTF8.GetBytes((string)entity);

            response.ContentLength = content.Length;
            await response.Stream.WriteAsync(content, 0, content.Length);
        }
        public object ReadFrom(IHttpEntity request, IType destinationType, string parameterName)
        {
            if (destinationType.IsAssignableFrom <IEnumerable <IMultipartHttpEntity> >())
            {
                var multipartReader = new MultipartReader(request.ContentType.Boundary, request.Stream);
                return(multipartReader.GetParts());
            }

            if (destinationType.IsAssignableFrom <IDictionary <string, IList <IMultipartHttpEntity> > >())
            {
                return(FormData(request));
            }

            var binder = BinderLocator.GetBinder(destinationType);

            if (binder == null)
            {
                throw new InvalidOperationException("Cannot find a binder to create the object");
            }
            binder.Prefixes.Add(parameterName);
            bool wasAnyKeyUsed = ReadKeyValues(request).Aggregate(false, (wasUsed, kv) => kv.SetProperty(binder) || wasUsed);
            var  result        = binder.BuildObject();

            return(wasAnyKeyUsed && result.Successful ? result.Instance : Missing.Value);
        }
Example #3
0
        static async Task WriteFileWithFilenameAsync(IFile file, string disposition, IHttpEntity response)
        {
            var contentDispositionHeader =
                response.Headers.ContentDisposition ?? new ContentDispositionHeader(disposition);

            if (!string.IsNullOrEmpty(file.FileName))
            {
                contentDispositionHeader.FileName = file.FileName;
            }

            if (!string.IsNullOrEmpty(contentDispositionHeader.FileName) ||
                contentDispositionHeader.Disposition != "inline")
            {
                response.Headers.ContentDisposition = contentDispositionHeader;
            }

            if (file.ContentType != null && file.ContentType != MediaType.ApplicationOctetStream ||
                (file.ContentType == MediaType.ApplicationOctetStream && response.ContentType == null))
            {
                response.ContentType = file.ContentType;
            }

            if (file.Length > 0 && response.ContentLength == null)
            {
                response.ContentLength = file.Length;
            }

            using (var stream = file.OpenStream())
                await stream.CopyToAsync(response.Stream);
        }
        private static void RenderToResponse(IHttpEntity response, ISparkView templateBase)
        {
            Encoding targetEncoding = Encoding.UTF8;

            response.ContentType.CharSet = targetEncoding.HeaderName;
            TextWriter writer     = null;
            bool       ownsWriter = false;

            try
            {
                if (response is ISupportsTextWriter)
                {
                    writer = ((ISupportsTextWriter)response).TextWriter;
                }
                else
                {
                    writer     = new DeterministicStreamWriter(response.Stream, targetEncoding, StreamActionOnDispose.None);
                    ownsWriter = true;
                }
                templateBase.RenderView(writer);
            }
            finally
            {
                if (ownsWriter)
                {
                    writer.Dispose();
                }
            }
        }
        public async Task WriteTo(object entity, IHttpEntity response, IEnumerable <string> codecParameters)
        {
            response.ContentType = MediaType;

            var request = (IRequest)entity;

            var responseMessage = new MemoryStream();

            using (var writer = new StreamWriter(responseMessage, Encoding.UTF8, 4096, leaveOpen: true))
            {
                await writer.WriteAsync($"{request.HttpMethod} {request.Uri.AbsolutePath} HTTP/1.1\r\n");

                foreach (var header in request.Headers)
                {
                    await writer.WriteAsync($"{header.Key}: {header.Value}\r\n");
                }
                await writer.WriteAsync("\r\n");

                await writer.FlushAsync();
            }
            await request.Entity.Stream.CopyToAsync(responseMessage);

            response.ContentLength = responseMessage.Length;

            responseMessage.Position = 0;
            await responseMessage.CopyToAsync(response.Stream);
        }
        public void WriteTo(object entity, IHttpEntity response, string[] codecParameters)
        {
            if (entity == null)
                return;

            bool isError = (response.Errors.Count > 0);
            string status = isError ? "error" : "ok";

            var writerSettings = new XmlWriterSettings { OmitXmlDeclaration = true, Encoding = Encoding.UTF8, NamespaceHandling = NamespaceHandling.OmitDuplicates };

            using (var xmlTextWriter = XmlWriter.Create(response.Stream, writerSettings)) {

                xmlTextWriter.WriteStartDocument();
                xmlTextWriter.WriteStartElement("response");
                xmlTextWriter.WriteAttributeString("xsi", "noNamespaceSchemaLocation", "", "http://api.7digital.com/1.2/static/7digitalAPI.xsd");
                xmlTextWriter.WriteAttributeString("status", status);
                xmlTextWriter.WriteAttributeString("version", "1.2");
                xmlTextWriter.WriteAttributeString("xmlns", "xsd", "", "http://www.w3.org/2001/XMLSchema");
                xmlTextWriter.WriteAttributeString("xmlns", "xsi", "", "http://www.w3.org/2001/XMLSchema-instance");

                if (!isError)
                    OutputEntity(entity, xmlTextWriter);
                else
                    OutputError(response, xmlTextWriter);

                xmlTextWriter.WriteEndElement();
            }
        }
Example #7
0
        public virtual void WriteTo(object entity, IHttpEntity response, string[] parameters)
        {
            var responseStream = response.Stream;
            var xmlSettings    = new XmlWriterSettings
            {
                Encoding            = new UTF8Encoding(false),
                ConformanceLevel    = ConformanceLevel.Document,
                Indent              = true,
                NewLineOnAttributes = true,
                OmitXmlDeclaration  = false,
                CloseOutput         = true,
                CheckCharacters     = false
            };

            if (response.Headers.ContentType == null)
            {
                response.Headers.ContentType = new MediaType("application/xml;charset=utf-8");
            }
            else if (response.Headers.ContentType.Matches(MediaType.Xml))
            {
                response.Headers.ContentType.CharSet = "utf-8";
            }
            Configuration(xmlSettings);

            using (Writer = XmlWriter.Create(responseStream, xmlSettings))
                WriteToCore(entity, response);
        }
Example #8
0
 public object ReadFrom(IHttpEntity request, IType destinationType, string destinationName)
 {
   using (var reader = new StreamReader(request.Stream))
   {
     return JsonPatchDocument.Read(reader);
   }
 }
Example #9
0
		private static void RenderToResponse(IHttpEntity response, ISparkView templateBase)
		{
			Encoding targetEncoding = Encoding.UTF8;
			response.ContentType.CharSet = targetEncoding.HeaderName;
			TextWriter writer = null;
			bool ownsWriter = false;
			try
			{
				if (response is ISupportsTextWriter)
				{
					writer = ((ISupportsTextWriter) response).TextWriter;
				}
				else
				{
					writer = new DeterministicStreamWriter(response.Stream, targetEncoding, StreamActionOnDispose.None);
					ownsWriter = true;
				}
				templateBase.RenderView(writer);
			}
			finally
			{
				if (ownsWriter)
					writer.Dispose();
			}
		}
 public void WriteTo(object entity, IHttpEntity response, string[] paramneters)
 {
     if (entity == null)
         return;
     DataContractJsonSerializer serializer = new DataContractJsonSerializer(entity.GetType());
     serializer.WriteObject(response.Stream, entity);
 }
        public Task WriteTo(object entity, IHttpEntity response, IEnumerable <string> codecParameters)
        {
            _responseMessage.Headers.Add("link", $"<{_apiDocumentationLink}>; rel=\"{_apiDocumentationRel}\"");

            var resourceSelectedByUri = _context.PipelineData.SelectedResource;

            var serializerFunc = resourceSelectedByUri.ResourceModel.Hydra().SerializeFunc;

            if (serializerFunc == null)
            {
                serializerFunc = GetFuncFromResponseResourceType(_context.Response.Entity.Instance);
                if (serializerFunc == null)
                {
                    throw new InvalidOperationException($"Hydra serialiser not found for object of type {entity?.GetType()}");
                }
            }

            var typeToTypeGen = _models.ResourceRegistrations
                                .Where(res => res.ResourceType != null && res.Hydra().TypeFunc != null)
                                .ToLookup(res => res.ResourceType, res => res.Hydra().TypeFunc);

            string renderTypeNode(object resource)
            {
                return(typeToTypeGen[resource.GetType()].First()(resource));
            }

            return(serializerFunc(entity, new SerializationContext
            {
                BaseUri = BaseUri,
                UriGenerator = resource => _uris.CreateUri(resource, _context.ApplicationBaseUri),
                TypeGenerator = renderTypeNode
            }, response.Stream));
        }
 public void WriteTo(object entity, IHttpEntity response, string[] parameters)
 {
     byte[] bytes = Encoding.UTF8.GetBytes(entity.ToString());
     response.ContentType   = new MediaType("text/plain;charset=utf-8");
     response.ContentLength = bytes.Length;
     response.Stream.Write(bytes, 0, bytes.Length);
 }
Example #13
0
 public void WriteTo(object entity, IHttpEntity response, string[] codecParameters)
 {
   Image image = (Image)entity;
   response.ContentType = image.MediaType;
   image.Data.Seek(0, SeekOrigin.Begin);
   image.Data.WriteTo(response.Stream);
 }
        public void WriteTo(object entity, IHttpEntity response, string[] codecParameters)
        {
            // The default webforms renderer only associate the last parameter in the codecParameters
            // with a page that has been defined in the rendererParameters.

            var codecParameterList = new List <string>(codecParameters);

            if (!string.IsNullOrEmpty(_request.UriName))
            {
                codecParameterList.Add(_request.UriName);
            }

            string templateAddress = GetViewVPath(_configuration, codecParameterList.ToArray(), _request.UriName);

            var type = _buildManager.GetCompiledType(templateAddress);

            var renderTarget = DependencyManager.GetService(type) as RazorViewBase;

            if (renderTarget == null)
            {
                throw new InvalidOperationException("View page doesn't inherit from RazorViewBase");
            }

            renderTarget.SetResource(entity);
            renderTarget.Errors = response.Errors;
            RenderTarget(response, renderTarget);
        }
Example #15
0
        public async Task WriteTo(object entity, IHttpEntity response, IEnumerable <string> codecParameters)
        {
            _responseMessage.Headers.Add("link", $"<{_apiDocumentationLink}>; rel=\"{_apiDocumentationRel}\"");

            if (entity is IEnumerable enumerableEntity)
            {
                entity = ConvertToHydraCollection(enumerableEntity, _context.Request.Uri);
            }

            var customConverter = new JsonSerializer
            {
                NullValueHandling     = NullValueHandling.Ignore,
                MissingMemberHandling = MissingMemberHandling.Ignore,
                ContractResolver      = new JsonLdContractResolver(BaseUri, _uris, _models),
                TypeNameHandling      = TypeNameHandling.None,
                Converters            =
                {
                    new StringEnumConverter(),
                    new JsonLdTypeRefConverter(_models),
                    new HydraUriModelConverter(BaseUri),
                    new RdfPropertyFromJsonPropertyConverter(_models),
                    new ContextDocumentConverter()
                }
            };

            using (var writer = new StreamWriter(response.Stream, new UTF8Encoding(encoderShouldEmitUTF8Identifier: false),
                                                 bufferSize: 1024, leaveOpen: true))
                using (var jsonWriter = new JsonTextWriter(writer))
                {
                    customConverter.Serialize(jsonWriter, entity);
                }
        }
        public override object ReadFrom(IHttpEntity request, IType destinationType, string parameterName)
        {
            if (destinationType.StaticType == null)
                throw new InvalidOperationException();

            return new XmlSerializer(destinationType.StaticType).Deserialize(request.Stream);
        }
        public object ReadFrom(IHttpEntity request, IType destinationType, string parameterName)
        {
            if (destinationType.IsAssignableFrom<IEnumerable<IMultipartHttpEntity>>())
            {
                var multipartReader = new MultipartReader(request.ContentType.Boundary, request.Stream);
                return multipartReader.GetParts();
            }

            if (destinationType.IsAssignableFrom<IDictionary<string, IList<IMultipartHttpEntity>>>())
            {
                return FormData(request);
            }

            var binder = BinderLocator.GetBinder(destinationType);
            
            if (binder == null)
            {
                throw new InvalidOperationException("Cannot find a binder to create the object");
            }

            binder.Prefixes.Add(parameterName);
            bool wasAnyKeyUsed = ReadKeyValues(request).Aggregate(false, (wasUsed, kv) => kv.SetProperty(binder) || wasUsed);
            var result = binder.BuildObject();

            return wasAnyKeyUsed && result.Successful ? result.Instance : Missing.Value;
        }
Example #18
0
 void IMediaTypeWriter.WriteTo(object entity, IHttpEntity response, string[] codecParameters)
 {
     if (!GetWriters(entity, response).Any(x => x))
     {
         throw new InvalidOperationException();
     }
 }
Example #19
0
 public object ReadFrom(IHttpEntity request, IType destinationType, string destinationName)
 {
     using (var reader = new StreamReader(request.Stream))
     {
         return(JsonPatchDocument.Read(reader));
     }
 }
Example #20
0
        async Task <RequestReadResult> TryReadPayloadAsObject(IHttpEntity requestEntity, Func <IHttpEntity, IType, string, Task <object> > reader, IOperation operation)
        {
            Log.CodecSupportsFullObjectResolution();
            foreach (var member in operation.Inputs.Where(m => m.Binder.IsEmpty))
            {
                Log.ProcessingMember(member);
                try
                {
                    var entityInstance = await reader(requestEntity,
                                                      member.Member.Type,
                                                      member.Member.Name);

                    Log.Result(entityInstance);

                    if (entityInstance != Missing.Value)
                    {
                        if (!member.Binder.SetInstance(entityInstance))
                        {
                            Log.BinderInstanceAssignmentFailed();
                            return(RequestReadResult.BinderFailure);
                        }
                        Log.BinderInstanceAssignmentSucceeded();
                    }
                }
                catch (Exception e)
                {
                    ErrorCollector.AddServerError(CreateErrorForException(e));
                    return(RequestReadResult.CodecFailure);
                }
            }
            return(RequestReadResult.Success);
        }
Example #21
0
        public async Task WriteTo(object entity, IHttpEntity response, IEnumerable <string> codecParameters)
        {
            var proxyResponse = (ReverseProxyResponse)entity;

            try
            {
                _response.StatusCode = proxyResponse.StatusCode;

                if (proxyResponse.Via != null)
                {
                    response.Headers.Add("via", $"{_protocol} {proxyResponse.Via}");
                }

                if (proxyResponse.ResponseMessage != null)
                {
                    SetHeaders(response.Headers, proxyResponse.ResponseMessage.Headers);
                    SetHeaders(response.Headers, proxyResponse.ResponseMessage.Content.Headers);

                    await proxyResponse.ResponseMessage.Content.CopyToAsync(response.Stream);
                }
                else if (proxyResponse.Error != null)
                {
                    var errorMessage = Encoding.UTF8.GetBytes(proxyResponse.Error.ToString());
                    await response.Stream.WriteAsync(errorMessage, 0, errorMessage.Length);
                }
            }
            finally
            {
                proxyResponse.Dispose();
            }
        }
        bool TryReadPayloadAsObject(IHttpEntity requestEntity, IMediaTypeReader reader, IOperation operation)
        {
            Log.CodecSupportsFullObjectResolution();
            foreach (var member in from m in operation.Inputs
                     where m.Binder.IsEmpty
                     select m)
            {
                Log.ProcessingMember(member);
                try
                {
                    var entityInstance = reader.ReadFrom(requestEntity,
                                                         member.Member.Type,
                                                         member.Member.Name);
                    Log.Result(entityInstance);

                    if (entityInstance != Missing.Value)
                    {
                        if (!member.Binder.SetInstance(entityInstance))
                        {
                            Log.BinderInstanceAssignmentFailed();
                            return(false);
                        }
                        Log.BinderInstanceAssignmentSucceeded();
                    }
                }
                catch (Exception e)
                {
                    ErrorCollector.AddServerError(CreateErrorForException(e));
                    return(false);
                }
            }
            return(true);
        }
Example #23
0
 public object ReadFrom(IHttpEntity request, OpenRasta.TypeSystem.IType destinationType, string destinationName)
 {
     using (var reader = XmlReader.Create(request.Stream))
     {
         return(ReadFrom(reader));
     }
 }
        public async Task WriteTo(object entity, IHttpEntity response, IEnumerable <string> codecParameters)
        {
            var proxyResponse = (ReverseProxyResponse)entity;

            try
            {
                _response.StatusCode = proxyResponse.StatusCode;

                response.Headers["via"] = string.Join(response.Headers["via"], $"1.1 {proxyResponse.Via}");

                if (proxyResponse.ResponseMessage != null)
                {
                    foreach (var header in proxyResponse.ResponseMessage.Headers.Concat(proxyResponse.ResponseMessage.Content
                                                                                        .Headers))
                    {
                        SetHeader(response, header);
                    }

                    await proxyResponse.ResponseMessage.Content.CopyToAsync(response.Stream);
                }
                else if (proxyResponse.Error != null)
                {
                    var jsonCodec = new NewtonsoftJsonCodec(_context);
                    await jsonCodec.WriteTo(proxyResponse.Error, response, new string[] { });
                }
            }
            finally
            {
                proxyResponse.Dispose();
            }
        }
Example #25
0
 public object ReadFrom(IHttpEntity request, OpenRasta.TypeSystem.IType destinationType, string destinationName)
 {
     using (var reader = new StreamReader(request.Stream))
     {
         JsonReader jsr = new JsonReader();
         return(jsr.Read(reader, typeof(TEntity)));
     }
 }
 // Note that we store in the pipeline data because the same codec may be called for resolving several request entities
 protected IDictionary <string, IList <IMultipartHttpEntity> > FormData(IHttpEntity source)
 {
     if (Cache[source] == null)
     {
         Cache[source] = PreLoadAllParts(source);
     }
     return(Cache[source]);
 }
Example #27
0
 public object ReadFrom(IHttpEntity request, IType destinationType, string destinationName)
 {
     using (var streamReader = new StreamReader(request.Stream))
     {
         var ser = new JsonSerializer();
         return(ser.Deserialize(streamReader, destinationType.StaticType));
     }
 }
 void CheckEntity(IHttpEntity entity, MediaType httpContentType, string expectedContent)
 {
     entity.ContentType
         .Matches(httpContentType)
         .ShouldBeTrue();
     string actualContent = new StreamReader(entity.Stream).ReadToEnd();
     actualContent.ShouldBe(expectedContent);
 }
        void CheckEntity(IHttpEntity entity, MediaType httpContentType, string expectedContent)
        {
            entity.ContentType
            .Matches(httpContentType).ShouldBeTrue();
            string actualContent = new StreamReader(entity.Stream).ReadToEnd();

            actualContent.ShouldBe(expectedContent);
        }
Example #30
0
        public void WriteTo(object entity, IHttpEntity response, string[] codecParameters)
        {
            Image image = (Image)entity;

            response.ContentType = image.MediaType;
            image.Data.Seek(0, SeekOrigin.Begin);
            image.Data.WriteTo(response.Stream);
        }
Example #31
0
		public void WriteTo(object entity, IHttpEntity response, string[] codecParameters)
		{
			var codecParameterList = new List<string>(codecParameters);
			if (!string.IsNullOrEmpty(request.UriName))
				codecParameterList.Add(request.UriName);
			string templateAddress = GetViewVPath(Configuration, codecParameterList.ToArray());
			RenderTemplate(response, templateAddress, entity);
		}
Example #32
0
        public IEnumerable <KeyedValues <string> > ReadKeyValues(IHttpEntity entity)
        {
            yield return(new KeyedValues <string>("FirstName", new[] { "John" }, Converter));

            yield return(new KeyedValues <string>("LastName", new[] { "Doe" }, Converter));

            yield return(new KeyedValues <string>("Username", new[] { "johndoe" }, Converter));
        }
Example #33
0
        RequestReadResult TryAssignKeyedValues(IHttpEntity requestEntity, ICodec codec, Type codecType, IOperation operation)
        {
            Log.CodecSupportsKeyedValues();

            return(codec.TryAssignKeyValues(requestEntity, operation.Inputs.Select(x => x.Binder), Log.KeyAssigned,
                                            Log.KeyFailed)
        ? RequestReadResult.Success : RequestReadResult.CodecFailure);
        }
Example #34
0
 public override object ReadFrom(IHttpEntity request, IType destinationType, string parameterName)
 {
     if (destinationType.StaticType == null)
     {
         throw new InvalidOperationException();
     }
     return(new DataContractSerializer(destinationType.StaticType).ReadObject(request.Stream));
 }
 private static void WriteJsonp(object entity, IHttpEntity response, string jsonpId)
 {
     var front = Encoding.UTF8.GetBytes(jsonpId + "(");
     response.Stream.Write(front, 0, front.Length);
     WriteJson(entity, response);
     var back = Encoding.UTF8.GetBytes(")");
     response.Stream.Write(back, 0, back.Length);
 }
Example #36
0
        public void WriteTo(object entity, IHttpEntity response, string[] codecParameters)
        {
            // The default webforms renderer only associate the last parameter in the codecParameters
            // with a page that has been defined in the rendererParameters.
            object renderTarget = null;

            if (entity != null && entity is Page)
            {
                renderTarget = entity as Page;
            }
            var codecParameterList = new List <string>(codecParameters);

            if (!string.IsNullOrEmpty(_request.UriName))
            {
                codecParameterList.Add(_request.UriName);
            }
            if (renderTarget == null)
            {
                string templateAddress = GetViewVPath(Configuration, codecParameterList.ToArray(), _request.UriName);

                var type = BuildManager.GetCompiledType(templateAddress);

                renderTarget = DependencyManager.GetService(type);

                if (entity != null)
                {
                    var page = renderTarget as Page;
                    if (page != null)
                    {
                        page.Init += (s, e) =>
                        {
                            SetAnyPropertyOfCorrectType(page, entity);
                            SetAnyPropertyOfCorrectType(page, response.Errors);
                            var master = page.Master;
                            while (master != null)
                            {
                                SetAnyPropertyOfCorrectType(master, entity);
                                SetAnyPropertyOfCorrectType(master, response.Errors);
                                master = master.Master;
                            }
                        };
                    }
                    else
                    {
                        SetAnyPropertyOfCorrectType(renderTarget, entity);
                        SetAnyPropertyOfCorrectType(renderTarget, response.Errors);
                    }
                }
            }
            if (renderTarget != null)
            {
                RenderTarget(response, renderTarget);
            }
            else
            {
                throw new InvalidOperationException("No http handler has been found to render the resource.");
            }
        }
Example #37
0
 public void WriteTo(object entity, IHttpEntity response, string[] parameters)
 {
     var entityString = entity.ToString();
     
     var encodedText = Encoding.GetEncoding(EncodingIso88591).GetBytes(entityString);
     response.ContentType = new MediaType("text/plain;charset=ISO-8859-1");
     response.ContentLength = encodedText.Length;
     response.Stream.Write(encodedText, 0, encodedText.Length);
 }
Example #38
0
        public void WriteTo(object entity, IHttpEntity response, string[] codecParameters)
        {
            Cat c = (Cat)entity;

            using (var writer = new StreamWriter(response.Stream))
            {
                writer.Write(c.Name);
            }
        }
Example #39
0
    public void WriteTo(object entity, IHttpEntity response, string[] codecParameters)
    {
      Cat c = (Cat)entity;

      using (var writer = new StreamWriter(response.Stream))
      {
        writer.Write(string.Format("<html><body><p>{0}</p></body></html>", c.Name));
      }
    }
Example #40
0
    public void WriteTo(object entity, IHttpEntity response, string[] codecParameters)
    {
      Cat c = (Cat)entity;

      using (var writer = new StreamWriter(response.Stream))
      {
        writer.Write(c.Name);
      }
    }
Example #41
0
        public void WriteTo(object entity, IHttpEntity response, string[] codecParameters)
        {
            Cat c = (Cat)entity;

            using (var writer = new StreamWriter(response.Stream))
            {
                writer.Write(string.Format("<html><body><p>{0}</p></body></html>", c.Name));
            }
        }
Example #42
0
 public object ReadFrom(IHttpEntity request, OpenRasta.TypeSystem.IType destinationType, string destinationName)
 {
   string text = null;
   using (StreamReader r = new StreamReader(request.Stream, Encoding.UTF8))
   {
     text = r.ReadToEnd();
   }
   return new Cat { Name = text };
 }
        /// <exception cref="IOException">This method might throw this exception.</exception>
        protected override Stream GetStreamFromNetwork(string imageUri, Java.Lang.Object extra)
        {
            HttpGet            httpRequest   = new HttpGet(imageUri);
            IHttpResponse      response      = httpClient.Execute(httpRequest);
            IHttpEntity        entity        = response.Entity;
            BufferedHttpEntity bufHttpEntity = new BufferedHttpEntity(entity);

            return(bufHttpEntity.Content);
        }
 public object ReadFrom(IHttpEntity request, IType destinationType, string paramName)
 {
     if (destinationType.StaticType == null)
     {
         throw new InvalidOperationException();
     }
     
     return new DataContractJsonSerializer(destinationType.StaticType).ReadObject(request.Stream);
 }
Example #45
0
 public static bool TryAssignKeyValues(this ICodec codec, IHttpEntity entity, IObjectBinder binder, Action<KeyedValues> assigned, Action<KeyedValues> failed)
 {
     return codec.ReadKeyValues(entity)
                 .AsObservable(x => from kv in x
                                   where kv.SetProperty(binder)
                                   select kv, 
                               assigned, 
                               failed)
                 .Count() > 0;
 }
Example #46
0
 public void Write(IHttpEntity formDataField)
 {
     WriteLine();
     WriteBoundary();
     foreach (var header in formDataField.Headers)
         WriteHeader(header);
     WriteContentLength(formDataField);
     WriteLine();
     WriteBody(formDataField);
 }
Example #47
0
        public object ReadFrom(IHttpEntity request, IType destinationType, string destinationName)
        {
            JsonSerializer serializer = new JsonSerializer();

            using (StreamReader sr = new StreamReader(request.Stream))
                using (JsonReader jr = new JsonTextReader(sr))
                {
                    return(serializer.Deserialize <T>(jr));
                }
        }
 public void WriteTo(object entity, IHttpEntity response, string[] codecParameters)
 {
     if (entity == null)
         return;
     var json = JsonConvert.SerializeObject(entity);
     using(var writer = new StreamWriter(response.Stream))
     {
         writer.Write(json);
     }
 }
Example #49
0
    public void WriteTo(object entity, IHttpEntity response, string[] codecParameters)
    {
      string text = entity as string;
      if (text == null)
        throw new ArgumentException("Entity was not a string", "entity");

      using (var writer = new StreamWriter(response.Stream))
      {
        writer.Write(text);
      }
    }
 private static void OutputError(IHttpEntity response, XmlWriter xmlTextWriter)
 {
     xmlTextWriter.WriteStartElement("error", "");
     foreach (var error in response.Errors) {
         xmlTextWriter.WriteStartElement("errorMessage");
         xmlTextWriter.WriteAttributeString("code", "1001");
         xmlTextWriter.WriteString(error.Message);
         xmlTextWriter.WriteEndElement();
     }
     xmlTextWriter.WriteEndElement();
 }
 public object ReadFrom(IHttpEntity request, IType destinationType, string destinationName)
 {
     if(destinationType != null)
     {
         using(var reader = new StreamReader(request.Stream))
         {
             var json = reader.ReadToEnd();
             return JsonConvert.DeserializeObject(json, destinationType.StaticType);
         }
     }
     return Missing.Value;
 }
Example #52
0
        public void WriteTo(object entity, IHttpEntity response, string[] codecParameters)
        {
            if (entity == null)
            {
                return;
            }

            var output = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(entity));
            response.Stream.Write(output, 0, output.Length);

            response.ContentType = new MediaType("application/json") { CharSet = "utf-8" };
        }
 public void WriteTo(object entity, IHttpEntity response, string[] paramneters)
 {
     var queryParams = HttpUtility.ParseQueryString(_request.Uri.Query);
     if (queryParams["jsoncallback"] != null)
     {
         WriteJsonp(entity, response, queryParams["jsoncallback"]);
     }
     else
     {
         WriteJson(entity, response);
     }
 }
Example #54
0
 public void WriteTo(object entity, IHttpEntity response, string[] paramneters)
 {
     var errors = entity as IList<Error>;
     if (errors == null)
         return;
     response.ContentType = MediaType.Html;
     using (var streamWriter = new StreamWriter(response.Stream))
     {
         var writer = new XhtmlNodeWriter();
         writer.Write(new XhtmlTextWriter(streamWriter), new HtmlErrorPage(errors));
     }
 }
Example #55
0
    public void WriteTo(object entity, IHttpEntity response, string[] codecParameters)
    {
      SchemaTypeResource tr = entity as SchemaTypeResource;
      if (tr == null)
        throw new InvalidOperationException("Expected Type in JSON schema writer");

      Type t = tr.SchemaType;

      using (StreamWriter sw = new StreamWriter(response.Stream))
      {
        WriteSchema(sw, t);
      }
    }
 public void WriteTo(object entity, IHttpEntity response, string[] codecParameters)
 {
     if (entity == null || !(entity is SparqlEndpoint)) return;
     var sparqlEndpoint = entity as SparqlEndpoint;
     var client = BrightstarService.GetClient();
     using (var resultStream = client.ExecuteQuery(sparqlEndpoint.Store, sparqlEndpoint.SparqlQuery))
     {
         var resultsDoc = XDocument.Load(resultStream);
         var resultsWriter = new System.Xml.XmlTextWriter(response.Stream, Encoding.Unicode);
         resultsDoc.WriteTo(resultsWriter);
         resultsWriter.Flush();
     }
 }
Example #57
0
        public object ReadFrom(IHttpEntity request, IType destinationType, string destinationParameterName)
        {
            if (request.ContentLength == 0)
                return string.Empty;
            if (!_values.ContainsKey(request))
            {
                var encoding = DetectTextEncoding(request);

                string result = new StreamReader(request.Stream, encoding).ReadToEnd();
                _values.Add(request, result);
            }
            return _values[request];
        }
 private void WriteContentLength(IHttpEntity formDataField)
 {
     if (formDataField.ContentLength != null)
     {
         if (formDataField.Stream != null && formDataField.Stream.CanSeek)
         {
             this.WriteHeader(new KeyValuePair<string, string>("Content-Length", formDataField.Stream.Length.ToString()));
         }
         else if (formDataField.Stream == null)
         {
             this.WriteHeader(new KeyValuePair<string, string>("Content-Length", "0"));
         }
     }
 }
        public object ReadFrom(IHttpEntity request, IType destinationType, string destinationName)
        {
            if (IsRawDictionary(destinationType))
                return FormData(request);
            
            var binder = _binderLocator.GetBinder(destinationType);
            if (binder == null)
                throw new InvalidOperationException("Cannot find a binder to create the object");
            binder.Prefixes.Add(destinationName);
            bool wasAnyKeyUsed = ReadKeyValues(request).Aggregate(false, (wasUsed, kv) => kv.SetProperty(binder) || wasUsed);
            var result = binder.BuildObject();

            return wasAnyKeyUsed && result.Successful ? result.Instance : Missing.Value;
        }
Example #60
0
        protected virtual void Dispose(bool disposing)
        {
            if (_disposed) return;

            if (disposing)
            {
                if (_entity != null)
                {
                    _entity.Dispose();
                    _entity = null;
                }
            }
            _disposed = true;
        }