//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)); }
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)); }