示例#1
0
 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));
 }
示例#2
0
        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));
            }
        }
示例#3
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);
        }