Exemplo n.º 1
0
        //public async Task<T> PostAsync<T>(string endpoint, string args = null)
        //{
        //    var response = await _httpClient.PostAsync($"{endpoint}?oauth_token={_Token}&oauth_secret={_Secret}&{args}", null);
        //    //var response = await _httpClient.PostAsync($"", payload);

        //    if (!response.IsSuccessStatusCode)
        //        return default(T);
        //    var result = await response.Content.ReadAsStringAsync();

        //    return JsonConvert.DeserializeObject<T>(result);
        //}
        public async Task <T> PostReqAsync <T>(string endpoint, KoobecaApiRequest req, string args = null)
        {
            var formData = new MultipartFormDataContent {
                { new StringContent(req.body ?? ""), "body" },
                { new StringContent(req.auth_view), "auth_view" },
            };

            var props = req.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);

            foreach (var prop in props)
            {
                var attr = prop.GetCustomAttribute <KoobecaParamAttribute>();
                if (attr == null)
                {
                    continue;
                }
                var val = prop.GetValue(req)?.ToString();
                var key = prop.Name;
                if (val != null)
                {
                    formData.Add(new StringContent(val), key);
                }
            }

            if (req.photos != null)
            {
                formData.Add(new StringContent("photo"), "type");
                if (req.photos.Length == 1)
                {
                    formData.Add(new StreamContent(req.photos[0]), $"photo", $"photo.png");
                }
                else
                {
                    int i = 0;
                    foreach (var photoStrem in req.photos)
                    {
                        formData.Add(new StreamContent(photoStrem), $"photo{i++}", $"photo.png");
                    }
                }
            }

            var response = await _httpClient.PostAsync($"{endpoint}?oauth_token={_Token}&oauth_secret={_Secret}&{args}", formData);

            if (!response.IsSuccessStatusCode)
            {
                return(default(T));
            }
            var result = await response.Content.ReadAsStringAsync();

            return(JsonConvert.DeserializeObject <T>(result));
        }
Exemplo n.º 2
0
        private async Task <T> PostKoobecaRequestAsync <T>(KoobecaApiRequest req)
        {
            string args = $"oauth_consumer_key={KoobecaSettings.ConsumerKey}&oauth_consumer_secret={KoobecaSettings.ConsumerSecret}&_ANDROID_VERSION=3.1.7&language=en&restapilocation=";

            return(await _koobecaClient.PostReqAsync <T>(req.Endpoint, req, args));
        }