TranslatorAPI 1.0.5

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: e6ee1a98fac8914c5002eb6c71e8e46e387fe92c
4
+ data.tar.gz: 545d2cb44f91fd160c714d7e398f1ca15a8f677a
5
+ SHA512:
6
+ metadata.gz: e70e505f5d93b31623f1d74c09775c0441ff3416d30e39bdb839061526ab71ef33893d85dd0ef5a4f087d65b7d73e13c345d6b29e915970cf5744099283b2642
7
+ data.tar.gz: 6aa3c6eb1c54b29c4ab79dd153df2b10501530cd374d71722a565bca888dbbb959459b3f08dcebe048da6e22ee8eb0fc70af03c1a5e6659aef1e362cb4d39695
@@ -0,0 +1,35 @@
1
+ module TranslatorAPI
2
+
3
+ module Error
4
+
5
+ class YandexError < StandardError
6
+
7
+ CODES = {
8
+ :ok => 200,
9
+ :invalid_key => 401,
10
+ :blocked_key => 402,
11
+ :daily_limit_requests => 403,
12
+ :dailt_limit_scope => 404,
13
+ :max_limit => 413,
14
+ :not_translate => 422,
15
+ :translation_not_suppoted => 501
16
+ }
17
+
18
+ def handling_error(error)
19
+ case error
20
+ when YandexError
21
+ message_error(error)
22
+ nil
23
+ else
24
+ raise error.class, error.message
25
+ end
26
+ end
27
+
28
+ private
29
+
30
+ def message_error(error)
31
+ puts "#{error.class} : #{error.message}"
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,29 @@
1
+ require 'json'
2
+ require "translator_api/error/yandex_error"
3
+
4
+ module TranslatorAPI
5
+
6
+ class Parser
7
+
8
+ def initialize(json)
9
+ @json = JSON.parse json
10
+ end
11
+
12
+ def parse(method_get_list = false)
13
+ fail Error::YandexError.new, @json['message'] if @json['code'] && method_get_list
14
+ fail Error::YandexError.new, @json['message'] if @json['code'] != Error::YandexError::CODES[:ok] && !method_get_list
15
+ rescue => ex
16
+ return Error::YandexError.new.handling_error(ex)
17
+ else
18
+ if @json['dirs']
19
+ return @json['langs'], @json['dirs']
20
+ elsif @json['text']
21
+ return @json['text'].join
22
+ else
23
+ return @json['lang']
24
+ end
25
+ end
26
+
27
+ end
28
+
29
+ end
@@ -0,0 +1,41 @@
1
+ require 'net/http'
2
+
3
+ module TranslatorAPI
4
+
5
+ module Requests
6
+
7
+ class Connect
8
+
9
+ HOST = "https://translate.yandex.net/api/v1.5/tr.json/"
10
+
11
+ def initialize(key)
12
+ @key = key
13
+ end
14
+
15
+ def get_list(lang)
16
+ post_request("#{HOST}getLangs", { 'key' => @key, 'ui' => lang })
17
+ end
18
+
19
+ def detect(text)
20
+ post_request("#{HOST}detect", { 'key' => @key, 'text' => text })
21
+ end
22
+
23
+ def translate(text, lang)
24
+ post_request("#{HOST}translate", { 'key' => @key, 'text' => text, 'lang' => lang})
25
+ end
26
+
27
+ private
28
+
29
+ def post_request(uri, hash_arg)
30
+ uri_parse = URI.parse(uri)
31
+ http = Net::HTTP.new(uri_parse.hostname, uri_parse.port)
32
+ http.use_ssl = true
33
+ post = Net::HTTP::Post.new(uri_parse.path)
34
+ post.set_form_data hash_arg
35
+ doc = http.request(post)
36
+ doc.body
37
+ end
38
+
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,40 @@
1
+ require "translator_api/requests/connect"
2
+ require "translator_api/parser"
3
+
4
+ module TranslatorAPI
5
+ class Translator
6
+
7
+ MAX_TEXT = 10_000
8
+
9
+ def self.new(*arg)
10
+ obj = super(*arg)
11
+ rescue
12
+ obj = nil
13
+ ensure
14
+ obj
15
+ end
16
+
17
+ def initialize(key, lang = "ru")
18
+ @yandex = Requests::Connect.new key
19
+ @lang = lang
20
+ list = get_list
21
+ fail ArgumentError if list.instance_of? NilClass
22
+ if list.instance_of? Array
23
+ fail ArgumentError unless list[0]
24
+ end
25
+ end
26
+
27
+ def get_list
28
+ Parser.new(@yandex.get_list(@lang)).parse(true)
29
+ end
30
+
31
+ def detect(text)
32
+ get_list[0][Parser.new(@yandex.detect(text)).parse]
33
+ end
34
+
35
+ def translate(text, lang = @lang)
36
+ Parser.new(@yandex.translate(text, lang)).parse
37
+ end
38
+
39
+ end
40
+ end
@@ -0,0 +1,3 @@
1
+ module TranslatorAPI
2
+ VERSION = "1.0.5"
3
+ end
@@ -0,0 +1,6 @@
1
+ require "translator_api/version"
2
+ require "translator_api/translator"
3
+
4
+ module TranslatorAPI
5
+
6
+ end
metadata ADDED
@@ -0,0 +1,91 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: TranslatorAPI
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.5
5
+ platform: ruby
6
+ authors:
7
+ - Dmitry Utkin
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2015-12-13 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.10'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.10'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ description: Ruby gem Yandex API
56
+ email:
57
+ - evial10@rambler.ru
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - lib/translator_api.rb
63
+ - lib/translator_api/error/yandex_error.rb
64
+ - lib/translator_api/parser.rb
65
+ - lib/translator_api/requests/connect.rb
66
+ - lib/translator_api/translator.rb
67
+ - lib/translator_api/version.rb
68
+ homepage: https://github.com/Evial10/TranslatorAPI
69
+ licenses: []
70
+ metadata: {}
71
+ post_install_message:
72
+ rdoc_options: []
73
+ require_paths:
74
+ - lib
75
+ required_ruby_version: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
80
+ required_rubygems_version: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
85
+ requirements: []
86
+ rubyforge_project:
87
+ rubygems_version: 2.4.8
88
+ signing_key:
89
+ specification_version: 4
90
+ summary: Ruby gem Yandex API
91
+ test_files: []