예제 #1
0
        public async Task <GhasedakSendResponse> SendAsync(GhasedakOutgoingBulkMessageRequest message, GhasedakOptions options)
        {
            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            if (string.IsNullOrWhiteSpace(options.PrivateKey))
            {
                throw new ArgumentNullException(nameof(options.PrivateKey));
            }

            var serializer = new JsonSerializer <GhasedakSendResponse>();

            var inlineMessage = message.MapToInlineGhasedakOutgoingBulkMessageRequest();

            inlineMessage.SignWith(options.PrivateKey);
            var content = inlineMessage.CreateContent();

            var httpResponse = await _httpClient.PostAsync("/api/v5.0/message/post", content);

            await CheckSuccessStatusCodeAndThrowIfUnsuccessful(httpResponse);

            var ghasedakResponseString = await httpResponse.Content.ReadAsStringAsync();

            var ghasedakResponse = serializer.DeserializeFromString(ghasedakResponseString);

            return(ghasedakResponse);
        }
        internal static InlineGhasedakOutgoingBulkMessageRequest MapToInlineGhasedakOutgoingBulkMessageRequest(
            this GhasedakOutgoingBulkMessageRequest request)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            return(new InlineGhasedakOutgoingBulkMessageRequest
            {
                Date = request.Date.ToGhasedakFormatDateString(),
                Uid = request.Uid,
                Sid = request.Sid,
                ChannelType = request.ChannelType,
                Content = request.Content,
                MessageType = request.MessageType,
                Priority = request.Priority,
                ExpirationTime = request.ExpirationTime?.ToGhasedakFormatDateString(),
                Messages = request.Messages.ToInlineGhasedakContentBulkMessage()
            });
        }
예제 #3
0
 public async Task <GhasedakSendResponse> SendAsync(GhasedakOutgoingBulkMessageRequest message, string privateKey)
 {
     return(await SendAsync(message, new GhasedakOptions { PrivateKey = privateKey }));
 }