bing_translator 3.0.0 → 3.1.0
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.
- data/lib/bing_translator.rb +26 -5
- metadata +8 -8
data/lib/bing_translator.rb
CHANGED
|
@@ -15,7 +15,8 @@ class BingTranslator
|
|
|
15
15
|
DETECT_URI = 'http://api.microsofttranslator.com/V2/Http.svc/Detect'
|
|
16
16
|
LANG_CODE_LIST_URI = 'http://api.microsofttranslator.com/V2/Http.svc/GetLanguagesForTranslate'
|
|
17
17
|
ACCESS_TOKEN_URI = 'https://datamarket.accesscontrol.windows.net/v2/OAuth2-13'
|
|
18
|
-
|
|
18
|
+
SPEAK_URI = 'http://api.microsofttranslator.com/v2/Http.svc/Speak'
|
|
19
|
+
|
|
19
20
|
def initialize(client_id, client_secret)
|
|
20
21
|
@client_id = client_id
|
|
21
22
|
@client_secret = client_secret
|
|
@@ -23,6 +24,7 @@ class BingTranslator
|
|
|
23
24
|
@detect_uri = URI.parse DETECT_URI
|
|
24
25
|
@list_codes_uri = URI.parse LANG_CODE_LIST_URI
|
|
25
26
|
@access_token_uri = URI.parse ACCESS_TOKEN_URI
|
|
27
|
+
@speak_uri = URI.parse SPEAK_URI
|
|
26
28
|
end
|
|
27
29
|
|
|
28
30
|
def translate(text, params = {})
|
|
@@ -40,7 +42,7 @@ class BingTranslator
|
|
|
40
42
|
|
|
41
43
|
Nokogiri.parse(result.body).xpath("//xmlns:string")[0].content
|
|
42
44
|
end
|
|
43
|
-
|
|
45
|
+
|
|
44
46
|
def detect(text)
|
|
45
47
|
params = {
|
|
46
48
|
'text' => CGI.escape(text.to_s),
|
|
@@ -52,21 +54,40 @@ class BingTranslator
|
|
|
52
54
|
Nokogiri.parse(result.body).xpath("//xmlns:string")[0].content.to_sym
|
|
53
55
|
end
|
|
54
56
|
|
|
57
|
+
# format: 'audio/wav' [default] or 'audio/mp3'
|
|
58
|
+
# language: valid translator language code
|
|
59
|
+
# options: 'MinSize' [default] or 'MaxQuality'
|
|
60
|
+
def speak(text, params = {})
|
|
61
|
+
raise "Must provide :language" if params[:language].nil?
|
|
62
|
+
|
|
63
|
+
params = {
|
|
64
|
+
'format' => CGI.escape(params[:format].to_s),
|
|
65
|
+
'text' => CGI.escape(text.to_s),
|
|
66
|
+
'language' => params[:language].to_s
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
result = result(@speak_uri, params, { "Content-Type" => params[:format].to_s })
|
|
70
|
+
|
|
71
|
+
result.body
|
|
72
|
+
end
|
|
73
|
+
|
|
55
74
|
def supported_language_codes
|
|
56
75
|
result = result @list_codes_uri
|
|
57
76
|
Nokogiri.parse(result.body).xpath("//xmlns:string").map(&:content)
|
|
58
77
|
end
|
|
59
78
|
|
|
79
|
+
|
|
60
80
|
private
|
|
61
81
|
def prepare_param_string(params)
|
|
62
82
|
params.map { |key, value| "#{key}=#{value}" }.join '&'
|
|
63
83
|
end
|
|
64
84
|
|
|
65
|
-
def result(uri, params={})
|
|
85
|
+
def result(uri, params={}, headers={})
|
|
66
86
|
get_access_token
|
|
87
|
+
headers['Authorization'] = "Bearer #{@access_token['access_token']}"
|
|
67
88
|
result = Net::HTTP.new(uri.host, uri.port).get(
|
|
68
89
|
"#{uri.path}?#{prepare_param_string(params)}",
|
|
69
|
-
|
|
90
|
+
headers)
|
|
70
91
|
end
|
|
71
92
|
|
|
72
93
|
# Private: Get a new access token
|
|
@@ -75,7 +96,7 @@ private
|
|
|
75
96
|
# This gets a new token if it's required. We call this internally
|
|
76
97
|
# before any request we make to the Translate API.
|
|
77
98
|
#
|
|
78
|
-
# Returns nothing if we don't need a new token yet, or
|
|
99
|
+
# Returns nothing if we don't need a new token yet, or
|
|
79
100
|
# a Hash of information relating to the token if we obtained a new one.
|
|
80
101
|
# Also sets @access_token internally.
|
|
81
102
|
def get_access_token
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: bing_translator
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.
|
|
4
|
+
version: 3.1.0
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -9,30 +9,30 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date:
|
|
12
|
+
date: 2013-04-12 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: nokogiri
|
|
16
|
-
requirement: &
|
|
16
|
+
requirement: &10390120 !ruby/object:Gem::Requirement
|
|
17
17
|
none: false
|
|
18
18
|
requirements:
|
|
19
19
|
- - ~>
|
|
20
20
|
- !ruby/object:Gem::Version
|
|
21
|
-
version: 1.5.
|
|
21
|
+
version: 1.5.9
|
|
22
22
|
type: :runtime
|
|
23
23
|
prerelease: false
|
|
24
|
-
version_requirements: *
|
|
24
|
+
version_requirements: *10390120
|
|
25
25
|
- !ruby/object:Gem::Dependency
|
|
26
26
|
name: json
|
|
27
|
-
requirement: &
|
|
27
|
+
requirement: &6950060 !ruby/object:Gem::Requirement
|
|
28
28
|
none: false
|
|
29
29
|
requirements:
|
|
30
30
|
- - ~>
|
|
31
31
|
- !ruby/object:Gem::Version
|
|
32
|
-
version: 1.7.
|
|
32
|
+
version: 1.7.7
|
|
33
33
|
type: :runtime
|
|
34
34
|
prerelease: false
|
|
35
|
-
version_requirements: *
|
|
35
|
+
version_requirements: *6950060
|
|
36
36
|
description: Translate strings using the Bing HTTP API. Requires that you have a Client
|
|
37
37
|
ID and Secret. See README.md for information.
|
|
38
38
|
email: ricky@elrod.me
|