public CollectionResponse <TEntity, TMeta> DecodeResponse(TransportResponse transportResponse) { List <TEntity> elements; CollectionMetadata paging = null; TMeta metadata = null; object output; // Decode elements if (transportResponse.data.TryGetValue("elements", out output)) { try { elements = (output as List <object>) .Select(element => DataUtil.BuildRecord <TEntity>((Dictionary <string, object>)element)) .ToList(); } catch { throw new InvalidCastException("Error decoding elements from TransportResponse."); } } else { throw new KeyNotFoundException("Could not find elements in TransportResponse."); } // Decode paging (optional) if (transportResponse.data.TryGetValue("paging", out output)) { try { paging = DataUtil.BuildRecord <CollectionMetadata>((Dictionary <string, object>)output); } catch { throw new InvalidCastException("Error decoding paging data from TransportResponse."); } } // Decode metadata (optional) if (transportResponse.data.TryGetValue("metadata", out output)) { try { metadata = DataUtil.BuildRecord <TMeta>((Dictionary <string, object>)output); } catch { throw new InvalidCastException("Error decoding metadata from TransportResponse."); } } return(new CollectionResponse <TEntity, TMeta>(transportResponse.responseHeaders, transportResponse.status ?? 200, elements, paging, metadata)); }
public EntityResponse <TEntity> DecodeResponse(TransportResponse transportResponse) { TEntity record = null; Dictionary <string, object> dataMap = transportResponse.data; if (dataMap != null) { record = DataUtil.BuildRecord <TEntity>(dataMap); } return(new EntityResponse <TEntity>(transportResponse.responseHeaders, transportResponse.status ?? 200, record)); }
public ClientErrorResponse DecodeResponse(TransportResponse transportResponse) { ErrorResponse data = null; Dictionary <string, object> dataMap = transportResponse.data; if (dataMap != null && transportResponse.headers.ContainsKey(RestConstants.kHeaderRestliErrorResponse)) { data = DataUtil.BuildRecord <ErrorResponse>(dataMap); transportResponse.error.details = data; transportResponse.status = data.status; } return(new ClientErrorResponse(transportResponse.responseHeaders, transportResponse.status ?? RestConstants.httpStatusInternalServerError, transportResponse.error)); }