Esempio n. 1
0
 private string FormatUrl([NotNull] string endpoint, [NotNull] string path)
 {
     if (endpoint == null)
     {
         throw new ArgumentNullException(nameof(endpoint));
     }
     if (path == null)
     {
         throw new ArgumentNullException(nameof(path));
     }
     return(HttpUtility.ConcatUrl(endpoint, path));
 }
Esempio n. 2
0
        public async Task ConnectStreamAsync(string path, IDictionary <string, object> parameter,
                                             Func <Stream, Task> streamReader, CancellationToken cancellationToken)
        {
            if (path == null)
            {
                throw new ArgumentNullException(nameof(path));
            }
            if (parameter == null)
            {
                throw new ArgumentNullException(nameof(parameter));
            }
            if (streamReader == null)
            {
                throw new ArgumentNullException(nameof(streamReader));
            }
            HttpClient client = null;

            try
            {
                var endpoint = HttpUtility.ConcatUrl(Endpoint, path);
                var query    = parameter.ParametalizeForGet();
                if (!String.IsNullOrEmpty(query))
                {
                    endpoint += "?" + query;
                }
                client         = new TwitterApiHttpClient(Credential, Proxy, UserAgent, false);
                client.Timeout = Timeout.InfiniteTimeSpan;
                Debug.WriteLine("[GET STREAM] " + endpoint);
                using (var resp = await client.GetAsync(endpoint, HttpCompletionOption.ResponseHeadersRead,
                                                        cancellationToken).ConfigureAwait(false))
                    using (var stream = await resp.Content.ReadAsStreamAsync().ConfigureAwait(false))
                    {
                        // winding data from user stream
                        await streamReader(stream).ConfigureAwait(false);
                    }
            }
            finally
            {
                if (client != null)
                {
                    client.CancelPendingRequests();
                    client.Dispose();
                }
            }
        }