easy_translate 0.3.1 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -9,8 +9,8 @@ module EasyTranslate
|
|
9
9
|
# @param [String, Array] texts - A single string or set of strings to detect for
|
10
10
|
# @param [Hash] options - Extra options to pass along with the request
|
11
11
|
# @return [String, Array] The resultant language or languages
|
12
|
-
def detect(texts, options = nil)
|
13
|
-
request = DetectionRequest.new(texts, options)
|
12
|
+
def detect(texts, options = nil, http_options={})
|
13
|
+
request = DetectionRequest.new(texts, options, http_options)
|
14
14
|
# Turn the response into an array of detections
|
15
15
|
raw = request.perform_raw
|
16
16
|
detections = JSON.parse(raw)['data']['detections'].map do |res|
|
@@ -26,14 +26,12 @@ module EasyTranslate
|
|
26
26
|
# Set the texts and options
|
27
27
|
# @param [String, Array] texts - The text (or texts) to translate
|
28
28
|
# @param [Hash] options - Options to override or pass along with the request
|
29
|
-
def initialize(texts, options =
|
30
|
-
|
31
|
-
if options
|
32
|
-
@options =
|
33
|
-
if replacement_api_key = @options.delete(:api_key)
|
34
|
-
@options[:key] = replacement_api_key
|
35
|
-
end
|
29
|
+
def initialize(texts, options = {}, http_options = {})
|
30
|
+
super(options, http_options)
|
31
|
+
if replacement_api_key = @options.delete(:api_key)
|
32
|
+
@options[:key] = replacement_api_key
|
36
33
|
end
|
34
|
+
self.texts = texts
|
37
35
|
end
|
38
36
|
|
39
37
|
# The params for this request
|
@@ -5,6 +5,12 @@ require 'uri'
|
|
5
5
|
module EasyTranslate
|
6
6
|
|
7
7
|
class Request
|
8
|
+
attr_accessor :http_options
|
9
|
+
|
10
|
+
def initialize(options={}, http_options={})
|
11
|
+
@options = options
|
12
|
+
@http_options = http_options
|
13
|
+
end
|
8
14
|
|
9
15
|
# Body, blank by default
|
10
16
|
# @return [String] The body for this request
|
@@ -30,11 +36,6 @@ module EasyTranslate
|
|
30
36
|
# Perform the given request
|
31
37
|
# @return [String] The response String
|
32
38
|
def perform_raw
|
33
|
-
# Get the URI
|
34
|
-
uri = URI.parse("https://www.googleapis.com#{path}?#{param_s}")
|
35
|
-
# Open the HTTP object
|
36
|
-
http = Net::HTTP.new(uri.host, uri.port)
|
37
|
-
http.use_ssl = true
|
38
39
|
# Construct the request
|
39
40
|
request = Net::HTTP::Post.new(uri.request_uri)
|
40
41
|
request.add_field('X-HTTP-Method-Override', 'GET')
|
@@ -50,6 +51,47 @@ module EasyTranslate
|
|
50
51
|
|
51
52
|
private
|
52
53
|
|
54
|
+
def uri
|
55
|
+
@uri ||= URI.parse("https://www.googleapis.com#{path}?#{param_s}")
|
56
|
+
end
|
57
|
+
|
58
|
+
def http
|
59
|
+
@http ||= Net::HTTP.new(uri.host, uri.port).tap do |http|
|
60
|
+
configure_timeouts(http)
|
61
|
+
configure_ssl(http)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
def configure_timeouts(http)
|
66
|
+
http.read_timeout = http.open_timeout = http_options[:timeout] if http_options[:timeout]
|
67
|
+
http.open_timeout = http_options[:open_timeout] if http_options[:open_timeout]
|
68
|
+
end
|
69
|
+
|
70
|
+
def configure_ssl(http)
|
71
|
+
http.use_ssl = true
|
72
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
73
|
+
http.cert_store = ssl_cert_store
|
74
|
+
|
75
|
+
http.cert = ssl_options[:client_cert] if ssl_options[:client_cert]
|
76
|
+
http.key = ssl_options[:client_key] if ssl_options[:client_key]
|
77
|
+
http.ca_file = ssl_options[:ca_file] if ssl_options[:ca_file]
|
78
|
+
http.ca_path = ssl_options[:ca_path] if ssl_options[:ca_path]
|
79
|
+
http.verify_depth = ssl_options[:verify_depth] if ssl_options[:verify_depth]
|
80
|
+
http.ssl_version = ssl_options[:version] if ssl_options[:version]
|
81
|
+
end
|
82
|
+
|
83
|
+
def ssl_cert_store
|
84
|
+
return ssl_options[:cert_store] if ssl_options[:cert_store]
|
85
|
+
# Use the default cert store by default, i.e. system ca certs
|
86
|
+
cert_store = OpenSSL::X509::Store.new
|
87
|
+
cert_store.set_default_paths
|
88
|
+
cert_store
|
89
|
+
end
|
90
|
+
|
91
|
+
def ssl_options
|
92
|
+
http_options[:ssl] || {}
|
93
|
+
end
|
94
|
+
|
53
95
|
# Stringify the params
|
54
96
|
# @return [String] The params as a string
|
55
97
|
def param_s
|
@@ -11,8 +11,8 @@ module EasyTranslate
|
|
11
11
|
# @option options [String, Symbol] :target - The target language (required)
|
12
12
|
# @option options [Boolean] :html - Whether or not the supplied string is HTML (optional)
|
13
13
|
# @return [String, Array] Translated text or texts
|
14
|
-
def translate(texts, options = {})
|
15
|
-
request = TranslationRequest.new(texts, options)
|
14
|
+
def translate(texts, options = {}, http_options={})
|
15
|
+
request = TranslationRequest.new(texts, options, http_options)
|
16
16
|
# Turn the response into an array of translations
|
17
17
|
raw = request.perform_raw
|
18
18
|
translations = JSON.parse(raw)['data']['translations'].map do |res|
|
@@ -28,13 +28,14 @@ module EasyTranslate
|
|
28
28
|
# Set the texts and options
|
29
29
|
# @param [String, Array] texts - the text (or texts) to translate
|
30
30
|
# @param [Hash] options - Options to override or pass along with the request
|
31
|
-
def initialize(texts, options)
|
31
|
+
def initialize(texts, options, http_options={})
|
32
32
|
self.texts = texts
|
33
33
|
self.html = options.delete(:html)
|
34
34
|
@source = options.delete(:from)
|
35
35
|
@target = options.delete(:to)
|
36
36
|
raise ArgumentError.new('No target language provded') unless @target
|
37
37
|
raise ArgumentError.new('Support for multiple targets dropped in V2') if @target.is_a?(Array)
|
38
|
+
@http_options = http_options
|
38
39
|
if options
|
39
40
|
@options = options
|
40
41
|
if replacement_api_key = @options.delete(:api_key)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: easy_translate
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-01-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,15 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
31
|
name: json
|
27
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
28
33
|
none: false
|
29
34
|
requirements:
|
30
35
|
- - ! '>='
|
@@ -32,7 +37,12 @@ dependencies:
|
|
32
37
|
version: '0'
|
33
38
|
type: :runtime
|
34
39
|
prerelease: false
|
35
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
36
46
|
description: easy_translate is a wrapper for the google translate API that makes sense
|
37
47
|
programatically, and implements API keys
|
38
48
|
email: john.crepezzi@gmail.com
|
@@ -40,13 +50,13 @@ executables: []
|
|
40
50
|
extensions: []
|
41
51
|
extra_rdoc_files: []
|
42
52
|
files:
|
53
|
+
- lib/easy_translate/detection.rb
|
54
|
+
- lib/easy_translate/easy_translate_exception.rb
|
43
55
|
- lib/easy_translate/languages.rb
|
44
56
|
- lib/easy_translate/request.rb
|
57
|
+
- lib/easy_translate/translation.rb
|
45
58
|
- lib/easy_translate/translation_target.rb
|
46
59
|
- lib/easy_translate/version.rb
|
47
|
-
- lib/easy_translate/easy_translate_exception.rb
|
48
|
-
- lib/easy_translate/translation.rb
|
49
|
-
- lib/easy_translate/detection.rb
|
50
60
|
- lib/easy_translate.rb
|
51
61
|
- spec/spec_helper.rb
|
52
62
|
homepage: https://github.com/seejohnrun/easy_translate
|
@@ -69,7 +79,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
69
79
|
version: '0'
|
70
80
|
requirements: []
|
71
81
|
rubyforge_project:
|
72
|
-
rubygems_version: 1.8.
|
82
|
+
rubygems_version: 1.8.24
|
73
83
|
signing_key:
|
74
84
|
specification_version: 3
|
75
85
|
summary: Google Translate API Wrapper for Ruby
|