internal static BuildJobResult From(IJsonResponseProvider response, Dictionary <int, IOutputDestination> outputs) { var v = response.DeserializeDynamic(); if (v == null || v.success == null) { throw new ImageflowAssertionFailed("BuildJobResult.From cannot parse response " + response.GetString()); } if (!(bool)v.success.Value) { throw new ImageflowAssertionFailed("BuildJobResult.From cannot convert a failure"); } IEnumerable <dynamic> encodes = (v.data.job_result ?? v.data.build_result).encodes; var encodeResults = encodes.Select(er => new BuildEncodeResult { Width = er.w, Height = er.h, IoId = er.io_id, PreferredExtension = er.preferred_extension, PreferredMimeType = er.preferred_mime_type, Destination = outputs[(int)er.io_id.Value] }).OrderBy(er => er.IoId).ToList(); var dict = encodeResults.ToDictionary(r => r.IoId); // There may be fewer reported outputs than registered ones - encoding is conditional on input, I think return(new BuildJobResult { EncodeResults = encodeResults, _results = dict }); }
public static string GetString(this IJsonResponseProvider p) { using (var s = new StreamReader(p.GetStream(), Encoding.UTF8)) return(s.ReadToEnd()); }
public static T Deserialize <T>(this IJsonResponseProvider p) where T : class { using (var reader = new StreamReader(p.GetStream(), Encoding.UTF8)) return(JsonSerializer.Create().Deserialize(new JsonTextReader(reader), typeof(T)) as T); }
public static dynamic DeserializeDynamic(this IJsonResponseProvider p) { using (var reader = new StreamReader(p.GetStream(), Encoding.UTF8)) return(JsonSerializer.Create().Deserialize(new JsonTextReader(reader))); }
public static string GetString(this IJsonResponseProvider p) => new StreamReader(p.GetStream(), Encoding.UTF8).ReadToEnd();