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.
- checksums.yaml +7 -0
- data/README.md +7 -1
- data/lib/yandex-translator.rb +36 -6
- data/lib/yandex-translator/version.rb +1 -1
- data/spec/yandex-translator_spec.rb +11 -7
- metadata +28 -21
checksums.yaml
ADDED
@@ -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
|
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')
|
data/lib/yandex-translator.rb
CHANGED
@@ -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 '
|
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"]
|
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
|
@@ -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, "
|
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, "
|
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, "
|
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, "
|
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, "
|
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, "
|
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, "
|
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
|
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-
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
91
|
+
rubygems_version: 2.0.0.rc.2
|
85
92
|
signing_key:
|
86
|
-
specification_version:
|
93
|
+
specification_version: 4
|
87
94
|
summary: Yandex Translate API
|
88
95
|
test_files:
|
89
96
|
- spec/spec_helper.rb
|