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 }
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 }
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); } }