public FieldViewResponse <TEntity> Create <TEntity>(string json) { FieldViewResponse <TEntity> response = JsonConvert.DeserializeObject <FieldViewResponse <TEntity> >(json); if (typeof(FormPhoto).IsAssignableFrom(typeof(TEntity)) || typeof(FormDocument).IsAssignableFrom(typeof(TEntity))) { // The API just doesn't have a consistent response pattern. These two entities's properties are returned in the root object // rather than being a nested object property. response.Entities = new List <TEntity> { JsonConvert.DeserializeObject <TEntity>(json) }; } else { // Should be an object like this { "ProjectDetailInformation" : [] } JObject result = JsonConvert.DeserializeObject <JObject>(json); response.Entities = result.First.First.ToObject <IEnumerable <TEntity> >(); } if (response.Status.Code != 2) { throw new FieldViewResponseException(response); } return(response); }
internal FieldViewResponseException(FieldViewResponse errorResponse) : base($"Error Code {errorResponse.Status.Code}: {errorResponse.Status.Message}") { this.StatusCode = errorResponse.Status.Code; }