public StreamContent(IStreamContent content, CancellationToken cancellationToken) { this.content = content; this.cancellationToken = cancellationToken; Headers.ContentLength = content.Length; }
public Request( [NotNull] string method, [NotNull] Uri url, [CanBeNull] IStreamContent content, [CanBeNull] Headers headers = default) : this(method, url, null, content, null, headers) { }
private async Task <HttpActionStatus> SendStreamedBodyAsync(IStreamContent content, WebRequestState state, CancellationToken cancellationToken) { var bodyStream = content.Stream; var bytesToSend = content.Length ?? long.MaxValue; var bytesSent = 0L; using (BufferPool.Default.Rent(Constants.BufferSize, out var buffer)) { while (bytesSent < bytesToSend) { var bytesToRead = (int)Math.Min(buffer.Length, bytesToSend - bytesSent); int bytesRead; try { bytesRead = await bodyStream.ReadAsync(buffer, 0, bytesToRead, cancellationToken) .ConfigureAwait(false); } catch (StreamAlreadyUsedException) { throw; } catch (ContentAlreadyUsedException) { throw; } catch (Exception error) { if (cancellationToken.IsCancellationRequested) { return(HttpActionStatus.RequestCanceled); } LogUserStreamFailure(error); return(HttpActionStatus.UserStreamFailure); } if (bytesRead == 0) { break; } await state.RequestStream.WriteAsync(buffer, 0, bytesRead, cancellationToken).ConfigureAwait(false); bytesSent += bytesRead; } } return(HttpActionStatus.Success); }
private Request( [NotNull] string method, [NotNull] Uri url, [CanBeNull] CompositeContent compositeContent, [CanBeNull] IStreamContent streamContent, [CanBeNull] Content content, [CanBeNull] Headers headers) { Method = method ?? throw new ArgumentNullException(nameof(method)); Url = url ?? throw new ArgumentNullException(nameof(url)); CompositeContent = compositeContent; StreamContent = streamContent; Content = content; Headers = headers; }
/// <summary> /// Parses the content and raises events. /// </summary> /// <param name="content"> The content. </param> private void ParseContent(IStreamContent content) { if (string.IsNullOrEmpty(content.Content)) { LogTo.Trace("Received Keep-Alive on streaming connection"); return; } JsonData parsed = JsonMapper.ToObject(content.Content); JsonData temp; // Was this a direct message? if (parsed.TryGetValue("direct_message", out temp)) { LogTo.Debug("DirectMessage received"); var handler = DirectMessageReceived; handler?.Invoke(this, new DirectMessageStreamEventArgs(content.Content)); } // Was this a tweet? else if (parsed.TryGetValue("text", out temp)) { LogTo.Debug("Status recevied"); var handler = StatusReceived; handler?.Invoke(this, new StatusStreamEventArgs(content.Content)); } // Or has something been deleted? else if (parsed.TryGetValue("delete", out temp)) { JsonData deleted; if (temp.TryGetValue("status", out deleted)) { LogTo.Debug("Status deletion received"); var handler = StatusDeleted; handler?.Invoke(this, new DeleteStreamEventArgs(content.Content)); } else { LogTo.Debug("DirectMessage deletion received"); var handler = DirectMessageDeleted; handler?.Invoke(this, new DeleteStreamEventArgs(content.Content)); } } // Or a different event? else if (parsed.TryGetValue("event", out temp)) { HandleEvent(content.Content); } // Is this the friend list of the user? else if (parsed.TryGetValue("friends", out temp)) { LogTo.Debug("Friend list received"); var handler = FriendsReceived; handler?.Invoke(this, new FriendsStreamEventArgs(content.Content)); } else { LogTo.Debug("Unknown data received"); LogTo.Debug(content.Content); var handler = UnknownDataReceived; handler?.Invoke(this, new StreamEventArgs(content.Content)); } }
public Request WithContent([NotNull] IStreamContent content) { return(new Request(Method, Url, content, content.Length.HasValue ? (Headers ?? Headers.Empty).Set(HeaderNames.ContentLength, content.Length.Value) : Headers)); }