Ejemplo n.º 1
0
        private void DownloadFromCdn(Stream destination, string path, int maxSizeBytes)
        {
            SignalUrl signalUrl  = GetRandom(SignalConnectionInformation.SignalCdnUrls);
            string    url        = signalUrl.Url;
            string    hostHeader = signalUrl.HostHeader;

            throw new NotImplementedException(); //TODO
        }
Ejemplo n.º 2
0
        private void UploadToCdn(string acl, string key, string policy, string algorithm, string credential, string date,
                                 string signature, Stream inputData, string contentType, long dataLength, IOutputStreamFactory outputStreamFactory)
        {
            SignalUrl signalUrl  = GetRandom(SignalConnectionInformation.SignalCdnUrls);
            string    url        = signalUrl.Url;
            string    hostHeader = signalUrl.HostHeader;

            throw new NotImplementedException(); //TODO
        }
Ejemplo n.º 3
0
        private async Task <HttpResponseMessage> GetServiceConnectionAsync(string urlFragment, string method, string?body, UnidentifiedAccess?unidentifiedAccess, CancellationToken?token = null)
        {
            if (token == null)
            {
                token = CancellationToken.None;
            }

            try
            {
                SignalUrl          signalUrl  = GetRandom(SignalConnectionInformation.SignalServiceUrls);
                string             url        = signalUrl.Url;
                string?            hostHeader = signalUrl.HostHeader;
                Uri                uri        = new Uri(string.Format("{0}{1}", url, urlFragment));
                HttpRequestMessage request    = new HttpRequestMessage(new HttpMethod(method), uri);

                if (body != null)
                {
                    request.Content = new StringContent(body, Encoding.UTF8, "application/json");
                }

                HttpRequestHeaders headers = request.Headers;

                if (unidentifiedAccess != null)
                {
                    headers.Add("Unidentified-Access-Key", Base64.EncodeBytes(unidentifiedAccess.UnidentifiedAccessKey));
                }
                if (CredentialsProvider.Password != null)
                {
                    string authHeader = GetAuthorizationHeader(CredentialsProvider);
                    headers.Add("Authorization", authHeader);
                }

                if (UserAgent != null)
                {
                    headers.Add("X-Signal-Agent", UserAgent);
                }

                if (hostHeader != null)
                {
                    headers.Host = hostHeader;
                }

                return(await httpClient.SendAsync(request, token.Value));
            }
            catch (Exception e)
            {
                Logger.LogError("GetServiceConnectionAsync() failed: {0}\n{1}", e.Message, e.StackTrace);
                throw new PushNetworkException(e);
            }
        }
        private async Task <HttpResponseMessage> GetServiceConnectionAsync(CancellationToken token, string urlFragment, string method, string body, UnidentifiedAccess?unidentifiedAccess)
        {
            try
            {
                SignalUrl signalUrl  = GetRandom(SignalConnectionInformation.SignalServiceUrls);
                string    url        = signalUrl.Url;
                string    hostHeader = signalUrl.HostHeader;
                Uri       uri        = new Uri(string.Format("{0}{1}", url, urlFragment));
                using HttpClient connection = Util.CreateHttpClient();

                var headers = connection.DefaultRequestHeaders;

                if (unidentifiedAccess != null)
                {
                    headers.Add("Unidentified-Access-Key", Base64.EncodeBytes(unidentifiedAccess.UnidentifiedAccessKey));
                }
                if (CredentialsProvider.Password != null)
                {
                    string authHeader = GetAuthorizationHeader(CredentialsProvider);
                    headers.Add("Authorization", authHeader);
                }

                if (UserAgent != null)
                {
                    headers.Add("X-Signal-Agent", UserAgent);
                }

                if (hostHeader != null)
                {
                    headers.Host = hostHeader;
                }

                StringContent content;
                if (body != null)
                {
                    content = new StringContent(body, Encoding.UTF8, "application/json");
                }
                else
                {
                    content = new StringContent("");
                }
                switch (method)
                {
                case "POST":
                    return(await connection.PostAsync(uri, content, token));

                case "PUT":
                    return(await connection.PutAsync(uri, content, token));

                case "DELETE":
                    return(await connection.DeleteAsync(uri, token));

                case "GET":
                    return(await connection.GetAsync(uri, token));

                default:
                    throw new Exception("Unknown method: " + method);
                }
            }
            catch (Exception e)
            {
                Logger.LogError("GetServiceConnectionAsync() failed: {0}\n{1}", e.Message, e.StackTrace);
                throw new PushNetworkException(e);
            }
        }