Beispiel #1
0
        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));
        }
Beispiel #2
0
        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));
        }
Beispiel #3
0
        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));
        }