internal static IOneSkyResponse <TMetaInterface, TDataInterface> PlatformCompose <TMetaInterface, TDataInterface, TMetaObject, TDataObject>(IOneSkyResponse plain) where TMetaObject : TMetaInterface, new() where TDataObject : TDataInterface, new() where TMetaInterface : IMeta { var tuple = PlatformDeserialize <TMetaObject, TDataObject>(plain.Content); return(new OneSkyResponse <TMetaInterface, TDataInterface>( plain.StatusCode, plain.StatusDescription, tuple.Item1, tuple.Item2)); }
internal static Tuple <Meta, TData> PluginDeserialize <TData>( IOneSkyResponse plain) where TData : new() { var data = new TData(); var meta = new Meta(); if (plain.StatusCode >= 200 && plain.StatusCode < 300) { data = JsonConvert.DeserializeObject <TData>(plain.Content); } else { meta = JsonConvert.DeserializeObject <Meta>(plain.Content); } return(new Tuple <Meta, TData>(meta, data)); }
internal static Tuple <Meta, TData> PluginDeserialize <TData, TObject>( IOneSkyResponse plain, TObject container, Func <TObject, TData> extractor) where TData : new() { var data = new TData(); var meta = new Meta(); if (plain.StatusCode >= 200 && plain.StatusCode < 300) { var anon = JsonConvert.DeserializeAnonymousType(plain.Content, container); data = extractor(anon); } else { meta = JsonConvert.DeserializeObject <Meta>(plain.Content); } return(new Tuple <Meta, TData>(meta, data)); }