private Task<Stream> MakeRequest(string uri, AdmAccessToken authToken) { var task = new TaskCompletionSource<Stream>(); if (authToken == null) { task.SetException(new TranslationException(new NullReferenceException("authToken"))); return task.Task; } var httpWebRequest = (HttpWebRequest)WebRequest.Create(uri); httpWebRequest.Headers["Authorization"] = "Bearer " + authToken.access_token; IAsyncResult ar = null; ar = httpWebRequest.BeginGetResponse(delegate { try { Stream stream = httpWebRequest.EndGetResponse(ar).GetResponseStream(); task.SetResult(stream); } catch (Exception e) { task.SetException(new TranslationException(e)); } }, null); return task.Task; }
public async Task <List <string> > GetLanguages() { AdmAccessToken authToken = await GetAccessToken(); string uri = string.Format("http://api.microsofttranslator.com/V2/Http.svc/GetLanguagesForTranslate"); using (Stream stream = await MakeRequest(uri, authToken)) { var serializer = new DataContractSerializer(typeof(string[])); var translationLangs = (string[])serializer.ReadObject(stream); return(translationLangs.ToList()); } }
public async Task <string> Translate(string text, string toLang) { AdmAccessToken authToken = await GetAccessToken(); string uri = string.Format("http://api.microsofttranslator.com/v2/Http.svc/Translate?text={0}&to={1}&contentType={2}", text, toLang, "text/plain"); using (Stream stream = await MakeRequest(uri, authToken)) { var serializer = new DataContractSerializer(typeof(String)); var translation = (string)serializer.ReadObject(stream); return(translation); } }
private async void OnTokenExpiredCallback(object stateInfo) { try { await RequestNewToken(); } catch (Exception ex) { _token = null; } finally { _renewTimer.Change(TimeSpan.FromMinutes(RefreshTokenDuration), TimeSpan.FromMilliseconds(-1)); } }
private async Task RequestNewToken() { const string datamarketAccessUri = "https://datamarket.accesscontrol.windows.net/v2/OAuth2-13"; var requestData = string.Format("grant_type=client_credentials&client_id={0}&client_secret={1}&scope=http://api.microsofttranslator.com", HttpUtility.UrlEncode(_clientId), HttpUtility.UrlEncode(_clientSecret)); byte[] bytes = Encoding.UTF8.GetBytes(requestData); var http = new HttpClient(); var content = new ByteArrayContent(bytes); HttpResponseMessage response = await http.PostAsync(datamarketAccessUri, content); using (Stream responseStream = await response.Content.ReadAsStreamAsync()) { var serializer = new DataContractJsonSerializer(typeof(AdmAccessToken)); _token = (AdmAccessToken)serializer.ReadObject(responseStream); _lastTokenTimestamp = DateTime.Now; } }
private async Task RequestNewToken() { const string datamarketAccessUri = "https://datamarket.accesscontrol.windows.net/v2/OAuth2-13"; var requestData = string.Format("grant_type=client_credentials&client_id={0}&client_secret={1}&scope=http://api.microsofttranslator.com", HttpUtility.UrlEncode(_clientId), HttpUtility.UrlEncode(_clientSecret)); byte[] bytes = Encoding.UTF8.GetBytes(requestData); var http = new HttpClient(); var content = new ByteArrayContent(bytes); HttpResponseMessage response = await http.PostAsync(datamarketAccessUri, content); using (Stream responseStream = await response.Content.ReadAsStreamAsync()) { var serializer = new DataContractJsonSerializer(typeof (AdmAccessToken)); _token = (AdmAccessToken)serializer.ReadObject(responseStream); _lastTokenTimestamp = DateTime.Now; } }