public AdmAuthentication(string clientId, string clientSecret) { _clientId = clientId; _clientSecret = clientSecret; //If clientid or client secret has special characters, encode before sending request _request = string.Format( "grant_type=client_credentials&client_id={0}&client_secret={1}&scope=http://api.microsofttranslator.com", HttpUtility.UrlEncode(clientId), HttpUtility.UrlEncode(clientSecret)); _token = HttpPost(DatamarketAccessUri, _request); //renew the token every specfied minutes _accessTokenRenewer = new Timer(OnTokenExpiredCallback, this, TimeSpan.FromMinutes(REFRESH_TOKEN_DURATION), TimeSpan.FromMilliseconds(-1)); }
private static List <string> Translate(string text, string from, string to, AdmAccessToken admToken) { string uri = "http://api.microsofttranslator.com/v2/Http.svc/Translate?text=" + HttpUtility.UrlEncode(text) + "&from=" + from + "&to=" + to; string authToken = "Bearer" + " " + admToken.access_token; var httpWebRequest = (HttpWebRequest)WebRequest.Create(uri); httpWebRequest.Headers.Add("Authorization", authToken); WebResponse response = httpWebRequest.GetResponse(); using (Stream stream = response.GetResponseStream()) { var dcs = new DataContractSerializer(Type.GetType("System.String")); var translation = (string)dcs.ReadObject(stream); return(!string.IsNullOrWhiteSpace(translation) ? new List <string> { translation.Trim() } : new List <string>(0)); } }
public List <string> Translate(LanguageShortName from, LanguageShortName to, string text) { int i = 0; do { var admAuth = new AdmAuthentication(CLIENT_ID, CLIENT_SECRET); try { AdmAccessToken admToken = admAuth.GetAccessToken(); return(Translate(text, from.ToString().ToLowerInvariant(), to.ToString().ToLowerInvariant(), admToken)); } catch (WebException e) { Console.WriteLine("MicrosoftTranslator.Translate исключение! попытка перевода {0}", i + 1); ProcessWebException(e); } catch (Exception ex) { Console.WriteLine("MicrosoftTranslator.Translate исключение! попытка перевода {0}", i + 1); //TODO: логировать } i++; } while (i <= 5); return(null); }