protected virtual async Task <ExternalKey> GetNewExternalKeyAsync() { HttpWebRequest request = WebRequest.CreateHttp(Address); HttpWebResponse response; request.Proxy = Proxy; request.ContinueTimeout = (int)TimeOut.TotalMilliseconds; request.ContentType = "application/x-www-form-urlencoded"; try { response = (HttpWebResponse)await request.GetResponseAsync(); } catch (WebException e) { if ((int)e.Status == 7) //ProtocolError { throw new GoogleTranslateIPBannedException( GoogleTranslateIPBannedException.Operation.TokenGeneration); } throw; } string result; using (StreamReader streamReader = new StreamReader(response.GetResponseStream())) result = await streamReader.ReadToEndAsync(); long tkk; try { var tkkText = result.GetTextBetween(@"TKK='", "';"); if (tkkText == null) { throw new ExternalKeyParseException("Unknown TKK position"); } var splitted = tkkText.Split('.'); if (splitted.Length != 2 || !long.TryParse(splitted[1], out tkk)) { throw new ExternalKeyParseException($"Unknown TKK format. TKK: {tkkText}"); } } catch (ArgumentException) { throw new ExternalKeyParseException(); } ExternalKey newExternalKey = new ExternalKey(UnixTotalHours, tkk); return(newExternalKey); }
protected virtual async Task <ExternalKey> GetNewExternalKeyAsync() { HttpWebRequest request = WebRequest.CreateHttp(_address); HttpWebResponse response; request.Proxy = Proxy; request.ContinueTimeout = (int)TimeOut.TotalMilliseconds; request.ContentType = "application/x-www-form-urlencoded"; try { response = (HttpWebResponse)await request.GetResponseAsync(); } catch (WebException e) { Console.WriteLine(e.Message); throw; } string result; using (StreamReader streamReader = new StreamReader(response.GetResponseStream())) result = await streamReader.ReadToEndAsync(); long number1, number2; string textNumber1, textNumber2; try { int index = result.IndexOf((@"var a\x3d"), StringComparison.Ordinal); textNumber1 = result.GetTextBetween(@"var a\x3d", ";", index); textNumber2 = result.GetTextBetween(@"var b\x3d", ";", index); if (textNumber1 == null || textNumber2 == null) { throw new ExternalKeyParseException(); } } catch (ArgumentException) { throw new ExternalKeyParseException(); } if (!long.TryParse(textNumber1, out number1) || !long.TryParse(textNumber2, out number2)) { throw new ExternalKeyParseException(); } ExternalKey newExternalKey = new ExternalKey(UnixTotalHours, number1 + number2); return(newExternalKey); }
/// <summary> /// <p>Generate the token for a given string</p> /// </summary> /// <param name="source">The string to receive the token</param> /// <returns>Token for the current string</returns> /// <exception cref="NotSupportedException">The method is no longer valid, or something went wrong</exception> /// <exception cref="HttpRequestException">Http exception</exception> /// <exception cref="GoogleTranslateIPBannedException"></exception> public virtual async Task<string> GenerateAsync(string source) { if (IsExternalKeyObsolete) try { CurrentExternalKey = await GetNewExternalKeyAsync(); } catch (ExternalKeyParseException) { ThrowExceptions.Custom(Exc.GetStackTrace(), type, Exc.CallingMethod(),NotSupportedException("The method is no longer valid, or something went wrong"); } long time = DecrypthAlgorythm(source); return time.ToString() + '.' + (time ^ CurrentExternalKey.Time); }
protected virtual async Task<ExternalKey> GetNewExternalKeyAsync() { HttpClient httpClient; if (Proxy == null) httpClient = new HttpClient(); else httpClient = new HttpClient( new HttpClientHandler() { Proxy = Proxy, UseProxy = true, }); httpClient.Timeout = TimeOut; string result; using (httpClient) { result = await httpClient.GetStringAsync(Address); HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, Address); //request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded"); HttpResponseMessage response; try { response = await httpClient.SendAsync(request); } catch (HttpRequestException ex) when (ex.Message.Contains("503")) { ThrowExceptions.Custom(Exc.GetStackTrace(), type, Exc.CallingMethod(),GoogleTranslateIPBannedException( GoogleTranslateIPBannedException.Operation.TokenGeneration); } result = await response.Content.ReadAsStringAsync(); } long tkk; try { var tkkText = result.GetTextBetween(@"tkk:'", "',"); if (tkkText == null) ThrowExceptions.Custom(Exc.GetStackTrace(), type, Exc.CallingMethod(),ExternalKeyParseException("Unknown TKK position"); var splitted = tkkText.Split('.'); if (splitted.Length != 2 || !long.TryParse(splitted[1], out tkk)) ThrowExceptions.Custom(Exc.GetStackTrace(), type, Exc.CallingMethod(),ExternalKeyParseException($"Unknown TKK format. TKK: {tkkText}"); } catch (ArgumentException) { ThrowExceptions.Custom(Exc.GetStackTrace(), type, Exc.CallingMethod(),ExternalKeyParseException(); } ExternalKey newExternalKey = new ExternalKey(UnixTotalHours, tkk); return newExternalKey; }
/// <summary> /// <p>Generate the token for a given string</p> /// </summary> /// <param name="source">The string to receive the token</param> /// <returns>Token for the current string</returns> /// <exception cref="NotSupportedException">The method is no longer valid, or something went wrong</exception> /// <exception cref="HttpRequestException">Http exception</exception> /// <exception cref="GoogleTranslateIPBannedException"></exception> public virtual async Task <string> GenerateAsync(string source) { if (IsExternalKeyObsolete) { try { CurrentExternalKey = await GetNewExternalKeyAsync(); } catch (ExternalKeyParseException) { throw new NotSupportedException("The method is no longer valid, or something went wrong"); } } long time = DecrypthAlgorythm(source); return(time.ToString() + '.' + (time ^ CurrentExternalKey.Time)); }
/// <summary> /// <p>Generate the token for a string</p> /// </summary> /// <param name="source">The string to receive the token</param> /// <returns>Token for the current string</returns> /// <exception cref="NotSupportedException">The method is no longer valid, or something went wrong</exception> public virtual async Task <string> GenerateAsync(string source) { if (IsExternalKeyObsolete) { try { _currentExternalKey = await GetNewExternalKeyAsync(); } catch (ExternalKeyParseException) { throw new NotSupportedException(); } } long time = DecrypthAlgorythm(source); return(time.ToString() + '.' + (time ^ _currentExternalKey.Time)); }
/// <summary> /// Initializes a new instance of the <see cref="GoogleKeyTokenGenerator"/> class /// </summary> public GoogleKeyTokenGenerator() { CurrentExternalKey = new ExternalKey(0, 0); }
protected virtual async Task <ExternalKey> GetNewExternalKeyAsync() { HttpClient httpClient; if (Proxy == null) { httpClient = new HttpClient(); } else { httpClient = new HttpClient( new HttpClientHandler() { Proxy = Proxy, UseProxy = true, }); } httpClient.Timeout = TimeOut; string result; using (httpClient) { var response = httpClient.GetAsync(Address).Result; try { result = response.Content.ReadAsStringAsync().Result; }catch (HttpRequestException ex) { throw new GoogleTranslateIPBannedException(GoogleTranslateIPBannedException.Operation.TokenGeneration); } } long tkk; try { var tkkText = result.GetTextBetween(@"tkk:'", "',"); if (tkkText == null) { throw new ExternalKeyParseException("Unknown TKK position"); } var splitted = tkkText.Split('.'); if (splitted.Length != 2 || !long.TryParse(splitted[1], out tkk)) { throw new ExternalKeyParseException($"Unknown TKK format. TKK: {tkkText}"); } } catch (ArgumentException) { throw new ExternalKeyParseException(); } ExternalKey newExternalKey = new ExternalKey(UnixTotalHours, tkk); return(newExternalKey); }
public override int GetHashCode() { unchecked { return(((Id != null ? Id.GetHashCode() : 0) * 397) ^ (ExternalKey != null ? ExternalKey.GetHashCode() : 0)); } }
//https://github.com/matheuss/google-translate-token#readme protected virtual async Task <ExternalKey> GetNewExternalKeyAsync() { HttpWebRequest request = WebRequest.CreateHttp(_address); HttpWebResponse response; request.Proxy = Proxy; request.ContinueTimeout = (int)TimeOut.TotalMilliseconds; request.ContentType = "application/x-www-form-urlencoded"; try { response = (HttpWebResponse)await request.GetResponseAsync(); } catch (WebException e) { if ((int)e.Status == 7) //ProtocolError { throw new GoogleTranslateIPBannedException( GoogleTranslateIPBannedException.Operation.TokenGeneration); } throw; } string result; using (StreamReader streamReader = new StreamReader(response.GetResponseStream())) result = await streamReader.ReadToEndAsync(); long number; string textNumber; try { //get the token changed //https://github.com/matheuss/google-translate-token#readme int index = result.IndexOf((@"tkk:'"), StringComparison.Ordinal); textNumber = result.GetTextBetween(@"tkk:'", "\'", index).Replace("\'", "").Split(new[] { '.' })[1]; // int index = result.IndexOf((@"var a\x3d"), StringComparison.Ordinal); // textNumber1 = result.GetTextBetween(@"var a\x3d", ";", index); // textNumber2 = result.GetTextBetween(@"var b\x3d", ";", index); if (textNumber == null) { throw new ExternalKeyParseException(); } } catch (ArgumentException) { throw new ExternalKeyParseException(); } if (!long.TryParse(textNumber, out number)) { throw new ExternalKeyParseException(); } //ExternalKey newExternalKey = new ExternalKey(UnixTotalHours, number1 + number2); ExternalKey newExternalKey = new ExternalKey(UnixTotalHours, number); return(newExternalKey); }