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.
Files changed (2) hide show
  1. data/lib/bing_translator.rb +26 -5
  2. metadata +8 -8
@@ -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
- { 'Authorization' => "Bearer #{@access_token['access_token']}" })
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.0.0
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: 2012-07-22 00:00:00.000000000 Z
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: &7463880 !ruby/object:Gem::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.0
21
+ version: 1.5.9
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *7463880
24
+ version_requirements: *10390120
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: json
27
- requirement: &7463360 !ruby/object:Gem::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.3
32
+ version: 1.7.7
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *7463360
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