private Uri ComposeUrl(SmsMessage message)
        {
            const string pattern =
                "https://smsconnector.cz.o2.com/smsconnector/getpost/GP?action=send&baID={0}&toNumber={1}&text={2}&intruder=FALSE&multipart={3}&deliveryReport=FALSE&validityPeriod=10000&priority=1";

            var baId = WebUtility.UrlEncode(SmsConnectorConfiguration.ApplicationId);

            var phoneNumber = WebUtility.UrlEncode(message.PhoneNumber.FullPhoneNumberWithNormalizedPrefix);
            var messageText = WebUtility.UrlEncode(message.Text);
            var multipart = message.Multipart.ToString();

            return new Uri(string.Format(pattern, baId, phoneNumber, messageText, multipart));
        }
        /// <summary>
        /// Sends an SMS message.
        /// </summary>
        /// <param name="message">SMS message.</param>
        /// <returns>Task.</returns>
        /// <exception cref="ArgumentNullException">If <paramref name="message"/> is <c>null</c>.</exception>
        public async Task SendSmsAsync(SmsMessage message)
        {
            if (message == null) throw new ArgumentNullException(nameof(message));

            var url = ComposeUrl(message);

#if NET45
            var messageHandler = new WebRequestHandler();
            messageHandler.ClientCertificates.Add(SmsConnectorConfiguration.Certificate);
#else
            var messageHandler = new WinHttpHandler();
            messageHandler.ClientCertificates.Add(SmsConnectorConfiguration.Certificate);
#endif

            using (var client = new HttpClient(messageHandler))
            {
                var response = await client.GetAsync(url).ConfigureAwait(false);

                await HandleErrorResponse(response).ConfigureAwait(false);
            }
        }