/
githubmirror
/
aspnetcore
Обзор
Документация
Войти
/
githubmirror
/
aspnetcore
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/SignalR/clients/ts/FunctionalTests/TestHub.cs
151 строка
4 KB
Pranav K
Enforce warnings for unused usings (#39280)
04 янв 2022, 00:26
Не верифицирован
04 янв 2022, 00:26
667f068
Код
Авторство
О чём код?
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Globalization; using System.Reactive.Linq; using System.Text; using System.Threading.Channels; using Microsoft.AspNetCore.Http.Connections; using Microsoft.AspNetCore.Http.Connections.Features; using Microsoft.AspNetCore.SignalR; namespace FunctionalTests; public class CustomObject { public string Name { get; set; } public int Value { get; set; } } public class TestHub : Hub { private readonly IHubContext<TestHub> _context; public TestHub(IHubContext<TestHub> context) { _context = context; } public string Echo(string message) { return message; } public string GetCallerConnectionId() { return Context.ConnectionId; } public int GetNumRedirects() { return int.Parse(Context.GetHttpContext().Request.Query["numRedirects"], CultureInfo.InvariantCulture); } public void ThrowException(string message) { throw new InvalidOperationException(message); } public Task InvokeWithString(string message) { return Clients.Client(Context.ConnectionId).SendAsync("Message", message); } public Task SendCustomObject(CustomObject customObject) { return Clients.Client(Context.ConnectionId).SendAsync("CustomObject", customObject); } public ChannelReader<string> Stream() { var channel = Channel.CreateUnbounded<string>(); channel.Writer.TryWrite("a"); channel.Writer.TryWrite("b"); channel.Writer.TryWrite("c"); channel.Writer.Complete(); return channel.Reader; } public ChannelReader<string> InfiniteStream(CancellationToken token) { var channel = Channel.CreateUnbounded<string>(); var connectionId = Context.ConnectionId; token.Register(async (state) => { await ((IHubContext<TestHub>)state).Clients.Client(connectionId).SendAsync("StreamCanceled"); }, _context); return channel.Reader; } public async Task<string> StreamingConcat(ChannelReader<string> stream) { var sb = new StringBuilder(); while (await stream.WaitToReadAsync()) { while (stream.TryRead(out var item)) { sb.Append(item); } } return sb.ToString(); } public ChannelReader<int> EmptyStream() { var channel = Channel.CreateUnbounded<int>(); channel.Writer.Complete(); return channel.Reader; } public ChannelReader<string> StreamThrowException(string message) { throw new InvalidOperationException(message); } public string GetActiveTransportName() { return Context.Features.Get<IHttpTransportFeature>().TransportType.ToString(); } public ComplexObject EchoComplexObject(ComplexObject complexObject) { return complexObject; } public ComplexObject SendComplexObject() { return new ComplexObject { ByteArray = new byte[] { 0x1, 0x2, 0x3 }, DateTime = new DateTime(2000, 1, 1, 0, 0, 0, DateTimeKind.Utc), Guid = new Guid("00010203-0405-0607-0706-050403020100"), IntArray = new int[] { 1, 2, 3 }, String = "hello world", }; } public string GetContentTypeHeader() { return Context.GetHttpContext().Request.Headers["Content-Type"]; } public string GetHeader(string headerName) { return Context.GetHttpContext().Request.Headers[headerName]; } public string GetCookie(string cookieName) { var cookies = Context.GetHttpContext().Request.Cookies; if (cookies.TryGetValue(cookieName, out var cookieValue)) { return cookieValue; } return null; } }