yandex_dictionary_api 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
@@ -7,20 +7,43 @@ module YandexDictionaryApi
|
|
7
7
|
|
8
8
|
class ApiInterface
|
9
9
|
|
10
|
-
def initialize(
|
10
|
+
def initialize(api_key)
|
11
11
|
@client = YandexDictionaryApi::ApiClient.new( api_key )
|
12
12
|
end
|
13
13
|
|
14
14
|
#Executes getLangs (list of supported languages) request to YandexDictionaryApi api
|
15
15
|
def get_langs
|
16
|
-
response = @client.
|
17
|
-
|
16
|
+
response = @client.execute("getLangs", Hash.new)
|
17
|
+
self.check_response(response)
|
18
|
+
JSON.parse(response.body)
|
18
19
|
end
|
19
20
|
|
20
21
|
#Executes lookup (Interpretation and translate) request to yandex dictionary api
|
21
|
-
def lookup(
|
22
|
-
response = @client.
|
23
|
-
|
22
|
+
def lookup(params_hash)
|
23
|
+
response = @client.execute("lookup", params_hash)
|
24
|
+
self.check_response(response)
|
25
|
+
JSON.parse(response.body)
|
26
|
+
end
|
27
|
+
|
28
|
+
protected
|
29
|
+
|
30
|
+
def check_response(response)
|
31
|
+
case response.code
|
32
|
+
when 200
|
33
|
+
response
|
34
|
+
when 401
|
35
|
+
raise ApiError.new("Invalid api key.")
|
36
|
+
when 402
|
37
|
+
raise ApiError.new("Spicified api key is blocked.")
|
38
|
+
when 403
|
39
|
+
raise ApiError.new("The daily limit on the number of requests exceeded.")
|
40
|
+
when 413
|
41
|
+
raise ApiError.new("Limit on the size of text exceeded.")
|
42
|
+
when 501
|
43
|
+
raise ApiError.new("Spicified direction of translation is not supported.")
|
44
|
+
else
|
45
|
+
raise ApiError.new("Try again later.")
|
46
|
+
end
|
24
47
|
end
|
25
48
|
end
|
26
49
|
end
|
@@ -1,31 +1,26 @@
|
|
1
|
-
gem "httpclient"
|
2
1
|
require "httpclient"
|
3
2
|
|
4
3
|
module YandexDictionaryApi
|
5
4
|
|
6
5
|
class ApiClient
|
7
6
|
|
8
|
-
|
9
|
-
LOOKUP_HTTP_REQUEST_TMPL = "https://dictionary.yandex.net/api/v1/dicservice.json/lookup?".freeze
|
7
|
+
BASE_URI = "https://dictionary.yandex.net/api/v1/dicservice.json"
|
10
8
|
|
11
|
-
def initialize(
|
9
|
+
def initialize(api_key)
|
12
10
|
@http_client = HTTPClient.new
|
13
11
|
@api_key = api_key
|
14
12
|
end
|
15
13
|
|
16
|
-
def
|
17
|
-
str_request =
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
def execute_lookup( params_hash )
|
22
|
-
str_request = self.add_parameters_to_request(LOOKUP_HTTP_REQUEST_TMPL, params_hash)
|
23
|
-
self.exec_request_http( str_request )
|
14
|
+
def execute(str_req_type, params_hash)
|
15
|
+
str_request = BASE_URI + "/#{str_req_type}?"
|
16
|
+
params_hash["key"] = @api_key
|
17
|
+
#str_request = self.add_parameters_to_request(str_request, params_hash)
|
18
|
+
self.exec_request_http(str_request, params_hash)
|
24
19
|
end
|
25
20
|
|
26
21
|
protected
|
27
22
|
|
28
|
-
def add_parameters_to_request(
|
23
|
+
def add_parameters_to_request(str_request, params_hash)
|
29
24
|
str_res = str_request + "key=#{@api_key}"
|
30
25
|
params_hash.each do |(key, value)|
|
31
26
|
str_res += "&#{key}=#{value}"
|
@@ -33,9 +28,8 @@ module YandexDictionaryApi
|
|
33
28
|
str_res
|
34
29
|
end
|
35
30
|
|
36
|
-
def exec_request_http(
|
37
|
-
|
38
|
-
ApiError.check( response )
|
31
|
+
def exec_request_http(str_uri, params_hash)
|
32
|
+
@http_client.post(str_uri, params_hash)
|
39
33
|
end
|
40
34
|
end
|
41
35
|
|
@@ -2,24 +2,6 @@ module YandexDictionaryApi
|
|
2
2
|
|
3
3
|
class ApiError < StandardError
|
4
4
|
|
5
|
-
def self.check( response )
|
6
|
-
case response.code
|
7
|
-
when 200
|
8
|
-
response
|
9
|
-
when 401
|
10
|
-
raise ApiError.new("Invalid api key.")
|
11
|
-
when 402
|
12
|
-
raise ApiError.new("Spicified api key is blocked.")
|
13
|
-
when 403
|
14
|
-
raise ApiError.new("The daily limit on the number of requests exceeded.")
|
15
|
-
when 413
|
16
|
-
raise ApiError.new("Limit on the size of text exceeded.")
|
17
|
-
when 501
|
18
|
-
raise ApiError.new("Spicified direction of translation is not supported.")
|
19
|
-
else
|
20
|
-
raise ApiError.new("Try again later.")
|
21
|
-
end
|
22
|
-
end
|
23
5
|
end
|
24
6
|
|
25
7
|
end
|
@@ -3,7 +3,7 @@ require "spec_helper"
|
|
3
3
|
describe YandexDictionaryApi do
|
4
4
|
|
5
5
|
before do
|
6
|
-
$interface = YandexDictionaryApi::ApiInterface.new(
|
6
|
+
$interface = YandexDictionaryApi::ApiInterface.new("dict.1.1.20140904T085142Z.bc794363dea5e8da.bcafbef2c018fc447d8de5c67ff8e2dd7f57481f")
|
7
7
|
end
|
8
8
|
|
9
9
|
it "should return a list of supported languages" do
|
@@ -20,8 +20,8 @@ Gem::Specification.new do |spec|
|
|
20
20
|
|
21
21
|
spec.add_development_dependency "bundler", "~> 1.7"
|
22
22
|
spec.add_development_dependency "rake", "~> 10.0"
|
23
|
-
spec.
|
24
|
-
spec.
|
23
|
+
spec.add_dependency "httpclient"
|
24
|
+
spec.add_dependency "json"
|
25
25
|
spec.add_development_dependency "rspec"
|
26
26
|
end
|
27
27
|
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: yandex_dictionary_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0.
|
5
|
+
version: 0.0.2
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- IronSerj
|
@@ -51,7 +51,7 @@ dependencies:
|
|
51
51
|
- !ruby/object:Gem::Version
|
52
52
|
version: '0'
|
53
53
|
name: httpclient
|
54
|
-
type: :
|
54
|
+
type: :runtime
|
55
55
|
requirement: !ruby/object:Gem::Requirement
|
56
56
|
none: false
|
57
57
|
requirements:
|
@@ -67,7 +67,7 @@ dependencies:
|
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
name: json
|
70
|
-
type: :
|
70
|
+
type: :runtime
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|