yandex-translator 0.0.3 → 0.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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 1de77f641e2fa9133334e7e60841e6af74c22153
4
+ data.tar.gz: 996c9c7c4195d9f40ea4f77c36407b684a3f4a63
5
+ SHA512:
6
+ metadata.gz: 206cd4c86dc0c21ee5d03cdae3506c97daeb22ff92c05c536cae6b0b7051db7c7f929bfa8ea654914858496207c50153f1ada8571fa87e84beceafe2ec997d16
7
+ data.tar.gz: 1ec94ecd1aa8ee8f838f43a6cf35a2354a798ca3adbb206fdc2236ed28b7edaef41825f9b10f4c998486fb56aa9b16e25047cefdba10daa006d81a7ebc76e7e2
data/README.md CHANGED
@@ -19,6 +19,12 @@ Or install it yourself as:
19
19
 
20
20
  ## Usage
21
21
 
22
+ First, set your api key:
23
+
24
+ ```ruby
25
+ Yandex::Translator.set_api_key('API_KEY')
26
+ ```
27
+
22
28
  To determine language text use detect method:
23
29
 
24
30
  ```ruby
@@ -31,7 +37,7 @@ To translate text use translate method:
31
37
  ```
32
38
 
33
39
  In this case Yandex automatically detect text language.
34
- If you want to set text language manually add third paramater
40
+ If you want to set text language manually add third parameter
35
41
 
36
42
  ```ruby
37
43
  Yandex::Translator.translate('Car', 'ru', 'en')
@@ -6,24 +6,33 @@ require "httparty"
6
6
  module Yandex
7
7
  module Translator
8
8
 
9
- class TranslationError < StandardError
10
- end
9
+ class TranslationError < StandardError; end
10
+ class ApiError < StandardError; end
11
11
 
12
12
  class Translation
13
13
  include HTTParty
14
- base_uri 'http://translate.yandex.net/api/v1/tr/'
14
+ base_uri 'https://translate.yandex.net/api/v1.5/tr'
15
+
16
+
17
+ def self.api_key=(key)
18
+ @@api_key = key
19
+ end
15
20
 
16
21
  def detect_lang(text)
17
22
  options = {}
18
- options[:query] = { :text => text }
23
+ options[:query] = { :text => text, :key => @@api_key }
19
24
  language = self.class.get("/detect", options)
20
- language["DetectedLang"]["lang"]
25
+ if language["DetectedLang"]
26
+ language["DetectedLang"]["lang"]
27
+ else
28
+ check_api_errors(language)
29
+ end
21
30
  end
22
31
 
23
32
  def translate(text, to_language, from_language)
24
33
  lang = from_language.nil? ? to_language : "#{from_language}-#{to_language}"
25
34
  options = {}
26
- options[:query] = { :lang => lang, :text => text }
35
+ options[:query] = { :lang => lang, :text => text, :key => @@api_key }
27
36
  translation = self.class.get("/translate", options)
28
37
  raise TranslationError.new("Can't translate text to #{to_language}") if translation["Translation"].nil?
29
38
  case translation["Translation"]["code"].to_i
@@ -35,6 +44,23 @@ module Yandex
35
44
  raise TranslationError.new("Can't translate text")
36
45
  when 501
37
46
  raise TranslationError.new("Can't translate text to #{to_language}")
47
+ else
48
+ check_api_errors(translation)
49
+ end
50
+ end
51
+
52
+ private
53
+
54
+ def check_api_errors(responce)
55
+ case responce["Translation"]["code"].to_i
56
+ when 401
57
+ ApiError.new("Invalid api key")
58
+ when 402
59
+ ApiError.new("Api key blocked")
60
+ when 403
61
+ ApiError.new("Daily request limit exceeded")
62
+ when 404
63
+ ApiError.new("Daily char limit exceeded")
38
64
  else
39
65
  raise TranslationError.new("Try again later")
40
66
  end
@@ -42,6 +68,10 @@ module Yandex
42
68
 
43
69
  end
44
70
 
71
+ def self.set_api_key(key)
72
+ Translation.api_key = key
73
+ end
74
+
45
75
  def self.detect(text = '')
46
76
  Translation.new.detect_lang(text)
47
77
  end
@@ -1,5 +1,5 @@
1
1
  module Yandex
2
2
  module Translator
3
- VERSION = "0.0.3"
3
+ VERSION = "0.1.0"
4
4
  end
5
5
  end
@@ -4,14 +4,18 @@ require 'spec_helper'
4
4
 
5
5
  describe Yandex::Translator do
6
6
 
7
+ before do
8
+ Yandex::Translator.set_api_key(ENV['API_KEY'])
9
+ end
10
+
7
11
  it "shoud return right translation" do
8
- stub_request(:get, "http://translate.yandex.net/api/v1/tr/translate?lang=ru&text=Car").
12
+ stub_request(:get, "https://translate.yandex.net/api/v1.5/tr/translate?key=#{ENV['API_KEY']}&lang=ru&text=Car").
9
13
  to_return(:body => "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Translation code=\"200\" lang=\"en-ru\"><text>Автомобиль</text></Translation>")
10
14
  Yandex::Translator.translate("Car", "ru").should == "Автомобиль"
11
15
  end
12
16
 
13
17
  it "should return translation error when translate to the same language" do
14
- stub_request(:get, "http://translate.yandex.net/api/v1/tr/translate?lang=ru-ru&text=Car").
18
+ stub_request(:get, "https://translate.yandex.net/api/v1.5/tr/translate?key=#{ENV['API_KEY']}&lang=ru-ru&text=Car").
15
19
  to_return(:body => "TrService1: Invalid parameter 'lang'" )
16
20
  expect{
17
21
  Yandex::Translator.translate("Car", "ru", "ru")
@@ -19,7 +23,7 @@ describe Yandex::Translator do
19
23
  end
20
24
 
21
25
  it "should return translation error when translate from unknown language" do
22
- stub_request(:get, "http://translate.yandex.net/api/v1/tr/translate?lang=unknown-ru&text=Car").
26
+ stub_request(:get, "https://translate.yandex.net/api/v1.5/tr/translate?key=#{ENV['API_KEY']}&lang=unknown-ru&text=Car").
23
27
  to_return(:body => "TrService1: Invalid parameter 'lang'" )
24
28
  expect{
25
29
  Yandex::Translator.translate("Car", "ru", "unknown")
@@ -27,7 +31,7 @@ describe Yandex::Translator do
27
31
  end
28
32
 
29
33
  it "should return translation error when translate to unknown language" do
30
- stub_request(:get, "http://translate.yandex.net/api/v1/tr/translate?lang=ru-unknown&text=Car").
34
+ stub_request(:get, "https://translate.yandex.net/api/v1.5/tr/translate?key=#{ENV['API_KEY']}&lang=ru-unknown&text=Car").
31
35
  to_return(:body => "TrService1: Invalid parameter 'lang'" )
32
36
  expect{
33
37
  Yandex::Translator.translate("Car", "unknown", "ru")
@@ -35,19 +39,19 @@ describe Yandex::Translator do
35
39
  end
36
40
 
37
41
  it "shoud detect en language" do
38
- stub_request(:get, "http://translate.yandex.net/api/v1/tr/detect?text=Car").
42
+ stub_request(:get, "https://translate.yandex.net/api/v1.5/tr/detect?key=#{ENV['API_KEY']}&text=Car").
39
43
  to_return(:body => "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<DetectedLang code=\"200\" lang=\"en\"/>" )
40
44
  Yandex::Translator.detect("Car").should == "en"
41
45
  end
42
46
 
43
47
  it "shoud detect ru language" do
44
- stub_request(:get, "http://translate.yandex.net/api/v1/tr/detect?text=Автомобиль").
48
+ stub_request(:get, "https://translate.yandex.net/api/v1.5/tr/detect?key=#{ENV['API_KEY']}&text=Автомобиль").
45
49
  to_return(:body => "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<DetectedLang code=\"200\" lang=\"ru\"/>" )
46
50
  Yandex::Translator.detect("Автомобиль").should == "ru"
47
51
  end
48
52
 
49
53
  it "shoud not detect any language" do
50
- stub_request(:get, "http://translate.yandex.net/api/v1/tr/detect?text=CarАвто").
54
+ stub_request(:get, "https://translate.yandex.net/api/v1.5/tr/detect?key=#{ENV['API_KEY']}&text=CarАвто").
51
55
  to_return(:body => "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<DetectedLang code=\"200\" lang=\"\"/>" )
52
56
  Yandex::Translator.detect("CarАвто").should be_nil
53
57
  end
metadata CHANGED
@@ -1,49 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yandex-translator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
5
- prerelease:
4
+ version: 0.1.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Artur Egorov
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-02-10 00:00:00.000000000 Z
11
+ date: 2013-05-19 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: httparty
16
- requirement: &70146220573360 !ruby/object:Gem::Requirement
17
- none: false
15
+ requirement: !ruby/object:Gem::Requirement
18
16
  requirements:
19
- - - ! '>='
17
+ - - '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :runtime
23
21
  prerelease: false
24
- version_requirements: *70146220573360
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
25
27
  - !ruby/object:Gem::Dependency
26
28
  name: rspec
27
- requirement: &70146220572580 !ruby/object:Gem::Requirement
28
- none: false
29
+ requirement: !ruby/object:Gem::Requirement
29
30
  requirements:
30
- - - ! '>='
31
+ - - '>='
31
32
  - !ruby/object:Gem::Version
32
33
  version: '0'
33
34
  type: :development
34
35
  prerelease: false
35
- version_requirements: *70146220572580
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
36
41
  - !ruby/object:Gem::Dependency
37
42
  name: webmock
38
- requirement: &70146220571560 !ruby/object:Gem::Requirement
39
- none: false
43
+ requirement: !ruby/object:Gem::Requirement
40
44
  requirements:
41
- - - ! '>='
45
+ - - '>='
42
46
  - !ruby/object:Gem::Version
43
47
  version: '0'
44
48
  type: :development
45
49
  prerelease: false
46
- version_requirements: *70146220571560
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
47
55
  description: Library for Yandex Translate API
48
56
  email:
49
57
  - artur@egorov.in
@@ -63,27 +71,26 @@ files:
63
71
  - yandex-translator.gemspec
64
72
  homepage: ''
65
73
  licenses: []
74
+ metadata: {}
66
75
  post_install_message:
67
76
  rdoc_options: []
68
77
  require_paths:
69
78
  - lib
70
79
  required_ruby_version: !ruby/object:Gem::Requirement
71
- none: false
72
80
  requirements:
73
- - - ! '>='
81
+ - - '>='
74
82
  - !ruby/object:Gem::Version
75
83
  version: '0'
76
84
  required_rubygems_version: !ruby/object:Gem::Requirement
77
- none: false
78
85
  requirements:
79
- - - ! '>='
86
+ - - '>='
80
87
  - !ruby/object:Gem::Version
81
88
  version: '0'
82
89
  requirements: []
83
90
  rubyforge_project:
84
- rubygems_version: 1.8.10
91
+ rubygems_version: 2.0.0.rc.2
85
92
  signing_key:
86
- specification_version: 3
93
+ specification_version: 4
87
94
  summary: Yandex Translate API
88
95
  test_files:
89
96
  - spec/spec_helper.rb