Example #1
0
        public async Task <GhasedakSendResponse> SendAsync(GhasedakOutgoingMessageRequest 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.MapToInlineGhasedakOutgoingMessageRequest();

            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 InlineGhasedakOutgoingMessageRequest MapToInlineGhasedakOutgoingMessageRequest(
            this GhasedakOutgoingMessageRequest request)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            return(new InlineGhasedakOutgoingMessageRequest
            {
                Date = request.Date.ToGhasedakFormatDateString(),
                Uid = request.Uid,
                Messages = request.Messages.ToInlineGhasedakContentMessage(),
            });
        }
Example #3
0
 public async Task <GhasedakSendResponse> SendAsync(GhasedakOutgoingMessageRequest message, string privateKey)
 {
     return(await SendAsync(message, new GhasedakOptions { PrivateKey = privateKey }));
 }