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); }
public T Decode <T>() where T : class { if (WebResponse.ContentLength == 0 || ContentType == null || WebResponse.StatusCode == HttpStatusCode.NoContent) { return(null); } IMediaTypeReader reader = Session.Service.CodecManager.GetReader(typeof(T), ContentType).Codec; ReaderContext context = new ReaderContext(WebResponse.GetResponseStream(), typeof(T), WebResponse, Session); T result = (T)reader.ReadFrom(context); ContextRegistrator.RegisterContext(Session, BaseUri, result); return(result); }
private bool TryReadPayloadAsObject(IHttpEntity requestEntity, IMediaTypeReader reader, IOperation operation) { this.Log.CodecSupportsFullObjectResolution(); foreach (var member in from m in operation.Inputs where m.Binder.IsEmpty select m) { this.Log.ProcessingMember(member); try { var entityInstance = reader.ReadFrom(requestEntity, member.Member.Type, member.Member.Name); this.Log.Result(entityInstance); if (entityInstance != Missing.Value) { if (!member.Binder.SetInstance(entityInstance)) { this.Log.BinderInstanceAssignmentFailed(); return false; } this.Log.BinderInstanceAssignmentSucceeded(); } } catch (Exception e) { this.ErrorCollector.AddServerError(CreateErrorForException(e)); return false; } } return true; }