public void Request_Create_Get_Success() { var r = StreamingRequest.CreateGet(); Assert.AreEqual(StreamingRequest.GET, r.Verb); Assert.IsNull(r.Path); Assert.IsNull(r.Streams); }
/// <summary> /// Lists the members of the current conversation. /// Throws <see cref="ArgumentNullException"/> if conversationId is null, empty, or whitespace. /// </summary> /// <param name="conversationId">The id of the conversation to fetch the members of.</param> /// <param name="pageSize">Optional number of members to include per result page.</param> /// <param name="cancellationToken">Optional cancellation token.</param> /// <returns>List of Members of the current conversation.</returns> public async Task <PagedMembersResult> GetConversationPagedMembersAsync(string conversationId, int?pageSize = null, CancellationToken cancellationToken = default(CancellationToken)) { if (string.IsNullOrWhiteSpace(conversationId)) { throw new ArgumentNullException(nameof(conversationId)); } var route = $"{StreamingChannelPrefix}{conversationId}/pagedmembers"; var request = StreamingRequest.CreateGet(route); return(await SendRequestAsync <PagedMembersResult>(request, cancellationToken).ConfigureAwait(false)); }
public async Task RequestDisassembler_SendsAsFixedLength() { var sender = new PayloadSender(); var transport = new MockTransportSender(); sender.Connect(transport); var disassembler = new RequestDisassembler(sender, Guid.NewGuid(), StreamingRequest.CreateGet("/a/b/c")); await disassembler.DisassembleAsync(); Assert.AreEqual(2, transport.Buffers.Count); }
/// <summary> /// Lists the members of the specified activity. /// Throws <see cref="ArgumentNullException"/> if conversationId or activityId is null, empty, or whitespace. /// </summary> /// <param name="conversationId">The id of the conversation the activity is a part of.</param> /// <param name="activityId">The id of the activity to fetch the members of.</param> /// <param name="cancellationToken">Optional cancellation token.</param> /// <returns>List of Members of the given activity.</returns> public async Task <IList <ChannelAccount> > GetActivityMembersAsync(string conversationId, string activityId, CancellationToken cancellationToken = default(CancellationToken)) { if (string.IsNullOrWhiteSpace(conversationId)) { throw new ArgumentNullException(nameof(conversationId)); } if (string.IsNullOrWhiteSpace(activityId)) { throw new ArgumentNullException(nameof(activityId)); } var route = $"{StreamingChannelPrefix}{conversationId}/activities/{activityId}/members"; var request = StreamingRequest.CreateGet(route); return(await SendRequestAsync <IList <ChannelAccount> >(request, cancellationToken).ConfigureAwait(false)); }
internal async Task TimerLoopAsync(TimerAwaitable timer) { timer.Start(); using (timer) { // await returns True until `timer.Stop()` is called in the `finally` block of `ReceiveLoop` while (await timer) { try { // Ping server var response = await _session.SendRequestAsync(StreamingRequest.CreateGet("/api/version"), _disconnectCts.Token).ConfigureAwait(false); if (!IsSuccessResponse(response)) { Log.ClientKeepAliveFail(_logger, _url, response.StatusCode); IsConnected = false; Disconnected?.Invoke(this, new DisconnectedEventArgs() { Reason = $"Received failure from server heartbeat: {response.StatusCode}." }); } else { Log.ClientKeepAliveSucceed(_logger, _url); } } #pragma warning disable CA1031 // Do not catch general exception types catch (Exception e) #pragma warning restore CA1031 // Do not catch general exception types { Log.ClientKeepAliveFail(_logger, _url, 0, e); IsConnected = false; Disconnected?.Invoke(this, new DisconnectedEventArgs() { Reason = $"Received failure from server heartbeat: {e}." }); } } } }
/// <summary> /// Lists the Conversations in which this bot has participated for a the channel server this adapters' connection is tethered to. The /// channel server returns results in pages and each page will include a `continuationToken` /// that can be used to fetch the next page of results from the server. /// </summary> /// <param name="continuationToken">The continuation token from the previous page of results.</param> /// <param name="cancellationToken">A cancellation token that can be used by other objects /// or threads to receive notice of cancellation.</param> /// <returns>A task that represents the work queued to execute.</returns> /// <remarks>If the task completes successfully, the result contains a page of the members of the current conversation. /// </remarks> public async Task <ConversationsResult> GetConversationsAsync(string continuationToken = null, CancellationToken cancellationToken = default(CancellationToken)) { var request = StreamingRequest.CreateGet(StreamingChannelPrefix); return(await SendRequestAsync <ConversationsResult>(request, cancellationToken).ConfigureAwait(false)); }