public async Task <Richmenu> CreateRichMenuWithImageAsync(RichmenuDetail richmenuDetail, string imgUrl, string alias = "") { using var createRequest = new HttpRequestMessage(new HttpMethod("POST"), LineMessageRichMenuApiBaseUrl); createRequest.Headers.TryAddWithoutValidation("Authorization", $"Bearer {_accessToken}"); var postJson = JsonConvert.SerializeObject(richmenuDetail, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore, ContractResolver = new DefaultContractResolver { NamingStrategy = new CamelCaseNamingStrategy() } }); createRequest.Content = new StringContent(postJson); createRequest.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json"); var createResponse = await _httpClient.SendAsync(createRequest); var createContent = await createResponse.Content.ReadAsStringAsync(); if (createResponse.StatusCode != HttpStatusCode.OK) { throw new Exception(createContent); } var richmenuRes = JsonConvert.DeserializeObject <Richmenu>(createContent); using var uploadRequest = new HttpRequestMessage(new HttpMethod("POST"), $"{LineMessageRichMenuAttachApiBaseUrl}/{richmenuRes.richMenuId}/content"); uploadRequest.Headers.TryAddWithoutValidation("Authorization", $"Bearer {_accessToken}"); var imgBytes = GetImage(imgUrl); uploadRequest.Content = new ByteArrayContent(imgBytes); uploadRequest.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("image/jpeg"); var uploadResponse = await _httpClient.SendAsync(uploadRequest); var uploadContent = await uploadResponse.Content.ReadAsStringAsync(); if (uploadResponse.StatusCode != HttpStatusCode.OK) { await DeleteRichMenu(richmenuRes.richMenuId); throw new Exception(uploadContent); } if (!string.IsNullOrEmpty(alias)) { await CreateRichMenuAliasAsync(richmenuRes.richMenuId, alias); } return(richmenuRes); }
private async Task <Richmenu> CreateRichMenuAsync(RichmenuDetail richmenuDetail) { using var request = new HttpRequestMessage(new HttpMethod("POST"), LineMessageRichMenuApiBaseUrl); request.Headers.TryAddWithoutValidation("Authorization", $"Bearer {_accessToken}"); var postJson = JsonConvert.SerializeObject(richmenuDetail, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore, ContractResolver = new DefaultContractResolver { NamingStrategy = new CamelCaseNamingStrategy() } }); request.Content = new StringContent(postJson); request.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json"); var response = await _httpClient.SendAsync(request); var results = await response.Content.ReadAsStringAsync(); var richmenuRes = JsonConvert.DeserializeObject <Richmenu>(results); return(richmenuRes); }
public async Task <IActionResult> CreateRichMemu([FromBody] RichmenuDetail richMenu, string imageUrl) { var result = await _lineMessageUtility.CreateRichMenuWithImageAsync(richMenu, imageUrl); return(Ok(result)); }