bing_translator 3.0.0 → 3.1.0

Sign up to get free protection for your applications and to get access to all the features.
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