/// <exception cref="HttpRequestException"/>
public async Task<string> TranslateAsync(string text, string langFrom, string langTo)
{
- var param = HttpUtility.ParseQueryString(string.Empty);
- param["Text"] = "'" + text + "'";
- param["To"] = "'" + langTo + "'";
- param["$format"] = "Raw";
+ var param = new Dictionary<string, string>
+ {
+ {"Text", "'" + text + "'"},
+ {"To", "'" + langTo + "'"},
+ {"$format", "Raw"},
+ };
if (langFrom != null)
param["From"] = "'" + langFrom + "'";
- var request = new HttpRequestMessage(HttpMethod.Get, TranslateUri + "?" + param);
+ var uri = new Uri(TranslateUri + "?" + MyCommon.BuildQueryString(param));
+ var request = new HttpRequestMessage(HttpMethod.Get, uri);
request.Headers.Authorization = CreateBasicAuthHeaderValue(ApplicationSettings.AzureMarketplaceKey, ApplicationSettings.AzureMarketplaceKey);
using (var response = await this.http.SendAsync(request).ConfigureAwait(false))
* FIX: 発言詳細欄から右クリックで日本語ハッシュタグを固定すると、エンコード状態のハッシュタグが登録される問題を修正
* FIX: PublicSearchタブでの検索時に Err:Unauthorized(GetSearch) が表示される問題の回避策を追加
* FIX: サムネイル画像の読み込み中に別のツイートに選択を移動した際に動作が固まる現象の回避 (thx @_1t_, @Tan90909090, @suzushin!)
+ * FIX: 日本語等を含むツイートでBing翻訳機能を使用すると文字化けする問題を修正 (thx @KishSoup!)
==== Ver 1.2.0(2014/05/18)
* このバージョン以降のOpenTweenは .NET Framework 4.5.1 が必要となります
if (string.IsNullOrEmpty(this.BitlyId) || string.IsNullOrEmpty(this.BitlyKey))
return srcUri;
- var query = HttpUtility.ParseQueryString(string.Empty);
- query["login"] = this.BitlyId;
- query["apiKey"] = this.BitlyKey;
- query["format"] = "txt";
- query["domain"] = domain;
- query["longUrl"] = srcUri.OriginalString;
-
- using (var response = await this.http.GetAsync("https://api-ssl.bitly.com/v3/shorten?" + query).ConfigureAwait(false))
+ var query = new Dictionary<string, string>
+ {
+ {"login", this.BitlyId},
+ {"apiKey", this.BitlyKey},
+ {"format", "txt"},
+ {"domain", domain},
+ {"longUrl", srcUri.OriginalString},
+ };
+
+ var uri = new Uri("https://api-ssl.bitly.com/v3/shorten?" + MyCommon.BuildQueryString(query));
+ using (var response = await this.http.GetAsync(uri).ConfigureAwait(false))
{
response.EnsureSuccessStatusCode();
if ("http://ux.nx/xxxxxx".Length > srcUri.OriginalString.Length)
return srcUri;
- var query = HttpUtility.ParseQueryString(string.Empty);
- query["format"] = "plain";
- query["url"] = srcUri.OriginalString;
+ var query = new Dictionary<string, string>
+ {
+ {"format", "plain"},
+ {"url", srcUri.OriginalString},
+ };
- using (var response = await this.http.GetAsync("http://ux.nu/api/short?" + query).ConfigureAwait(false))
+ var uri = new Uri("http://ux.nu/api/short?" + MyCommon.BuildQueryString(query));
+ using (var response = await this.http.GetAsync(uri).ConfigureAwait(false))
{
response.EnsureSuccessStatusCode();
// Boston, MA 02110-1301, USA.
using System;
+using System.Collections.Generic;
using System.Net.Http;
using System.Runtime.Serialization.Json;
using System.Text.RegularExpressions;
// Foursquare のベニュー情報を取得
// 参照: https://developer.foursquare.com/docs/venues/venues
- var query = HttpUtility.ParseQueryString(string.Empty);
- query["client_id"] = ApplicationSettings.FoursquareClientId;
- query["client_secret"] = ApplicationSettings.FoursquareClientSecret;
- query["v"] = "20140419"; // https://developer.foursquare.com/overview/versioning
+ var query = new Dictionary<string, string>
+ {
+ {"client_id", ApplicationSettings.FoursquareClientId},
+ {"client_secret", ApplicationSettings.FoursquareClientSecret},
+ {"v", "20140419"}, // https://developer.foursquare.com/overview/versioning
+ };
if (signatureGroup.Success)
query["signature"] = signatureGroup.Value;
- var apiUrl = new Uri(ApiBase + "/checkins/" + checkinIdGroup.Value + "?" + query);
+ var apiUrl = new Uri(ApiBase + "/checkins/" + checkinIdGroup.Value + "?" + MyCommon.BuildQueryString(query));
using (var response = await this.http.GetAsync(apiUrl, token).ConfigureAwait(false))
{
protected virtual async Task<XDocument> FetchContentInfoApiAsync(string contentId, CancellationToken token)
{
- var query = HttpUtility.ParseQueryString(string.Empty);
- query["api_key"] = ApplicationSettings.TINAMIApiKey;
- query["cont_id"] = contentId;
+ var query = new Dictionary<string, string>
+ {
+ {"api_key", ApplicationSettings.TINAMIApiKey},
+ {"cont_id", contentId},
+ };
- var apiUrl = "http://api.tinami.com/content/info?" + query;
+ var apiUrl = new Uri("http://api.tinami.com/content/info?" + MyCommon.BuildQueryString(query));
using (var response = await this.http.GetAsync(apiUrl, token).ConfigureAwait(false))
{