OpenTween.ShortUrl.ShortenUrlAsync C# (CSharp) Метод

ShortenUrlAsync() публичный Метод

指定された短縮URLサービスを使用してURLを短縮します
public ShortenUrlAsync ( MyCommon shortenerType, Uri srcUri ) : Task
shortenerType MyCommon 使用する短縮URLサービス
srcUri System.Uri 短縮するURL
Результат Task
        public async Task<Uri> ShortenUrlAsync(MyCommon.UrlConverter shortenerType, Uri srcUri)
        {
            // 既に短縮されている状態のURLであれば短縮しない
            if (ShortUrlHosts.Contains(srcUri.Host))
                return srcUri;

            try
            {
                switch (shortenerType)
                {
                    case MyCommon.UrlConverter.TinyUrl:
                        return await this.ShortenByTinyUrlAsync(srcUri)
                            .ConfigureAwait(false);
                    case MyCommon.UrlConverter.Isgd:
                        return await this.ShortenByIsgdAsync(srcUri)
                            .ConfigureAwait(false);
                    case MyCommon.UrlConverter.Twurl:
                        return await this.ShortenByTwurlAsync(srcUri)
                            .ConfigureAwait(false);
                    case MyCommon.UrlConverter.Bitly:
                        return await this.ShortenByBitlyAsync(srcUri, "bit.ly")
                            .ConfigureAwait(false);
                    case MyCommon.UrlConverter.Jmp:
                        return await this.ShortenByBitlyAsync(srcUri, "j.mp")
                            .ConfigureAwait(false);
                    case MyCommon.UrlConverter.Uxnu:
                        return await this.ShortenByUxnuAsync(srcUri)
                            .ConfigureAwait(false);
                    default:
                        throw new ArgumentException("Unknown shortener.", nameof(shortenerType));
                }
            }
            catch (OperationCanceledException)
            {
                // 短縮 URL の API がタイムアウトした場合
                return srcUri;
            }
        }

Usage Example

Пример #1
0
        public async Task ShortenUrlAsync_UxnuUrlTest()
        {
            var handler = new HttpMessageHandlerMock();

            using (var http = new HttpClient(handler))
            {
                var shortUrl = new ShortUrl(http);

                handler.Enqueue(x =>
                {
                    Assert.Equal(HttpMethod.Get, x.Method);
                    Assert.Equal("https://ux.nu/api/short?format=plain&url=http:%2F%2Fexample.com%2Fhogehoge",
                                 x.RequestUri.AbsoluteUri);

                    return(new HttpResponseMessage(HttpStatusCode.OK)
                    {
                        Content = new ByteArrayContent(Encoding.UTF8.GetBytes("https://ux.nu/hoge")),
                    });
                });

                Assert.Equal(new Uri("https://ux.nu/hoge"),
                             await shortUrl.ShortenUrlAsync(MyCommon.UrlConverter.Uxnu, new Uri("http://example.com/hogehoge")));

                Assert.Equal(0, handler.QueueCount);
            }
        }
All Usage Examples Of OpenTween.ShortUrl::ShortenUrlAsync