random_org_http_api 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rspec +2 -0
- data/README.md +12 -4
- data/Rakefile +5 -0
- data/lib/random_org_http_api/configuration.rb +3 -3
- data/lib/random_org_http_api/generator.rb +41 -21
- data/lib/random_org_http_api/version.rb +1 -1
- data/random_org_http_api.gemspec +1 -0
- data/spec/random_org_http_api/generator_spec.rb +63 -0
- data/spec/spec_helper.rb +3 -0
- metadata +22 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 339dec176cb7f910f4a76ef4d4ee7c9045290303
|
4
|
+
data.tar.gz: 414d5c5d5befa1894beeb772274977758798cea8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: db15484b5cec99715f23c35431a3aaa1e2f859d09093860bc00d57395e541542694bf1422d19193d520b245ca5732a375da81efe19cf4da3f6ddb5918bda6636
|
7
|
+
data.tar.gz: 9262f1a2299054ef678005c7a1f3541f2ca7c62b8af8960a64b878ab16315a9c18c2e81c342bf52699077c583f0000ce20e3c27089669591b828c127182bdac9
|
data/.rspec
ADDED
data/README.md
CHANGED
@@ -1,13 +1,14 @@
|
|
1
1
|
# RandomOrgHttpApi
|
2
|
+
[![Gem Version](https://badge.fury.io/rb/random_org_http_api.svg)](http://badge.fury.io/rb/random_org_http_api)
|
2
3
|
|
3
4
|
Realization of old [HTTP API](http://www.random.org/clients/http/) provided by the random.org service.
|
4
5
|
Not to confuse to new [JSON-RPC API](https://api.random.org/json-rpc/1/) which now is in beta release.
|
5
6
|
|
6
7
|
At present realized:
|
7
8
|
|
8
|
-
* generation
|
9
|
-
* generation
|
10
|
-
* generation
|
9
|
+
* numbers generation
|
10
|
+
* strings generation
|
11
|
+
* sequence generation
|
11
12
|
|
12
13
|
|
13
14
|
## Installation
|
@@ -39,6 +40,13 @@ Or install it yourself as:
|
|
39
40
|
g.generate_sequence(num: 5, len: 10, max: 10)
|
40
41
|
=> ["8", "9", "10", "3", "2", "7", "1", "5", "4", "6"]
|
41
42
|
|
43
|
+
Check your quota
|
44
|
+
|
45
|
+
g.quota
|
46
|
+
=> ["1000000"]
|
47
|
+
|
48
|
+
More information about quota [here](http://www.random.org/clients/http/)
|
49
|
+
|
42
50
|
## More available parameters for generate_* methods
|
43
51
|
|
44
52
|
### generate_integers
|
@@ -69,7 +77,7 @@ More information about available parameters on [http://www.random.org/clients/ht
|
|
69
77
|
|
70
78
|
## Contributing
|
71
79
|
|
72
|
-
1. Fork it ( https://github.com/
|
80
|
+
1. Fork it ( https://github.com/istickz/random_org_http_api/fork )
|
73
81
|
2. Create your feature branch (`git checkout -b my-new-feature`)
|
74
82
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
75
83
|
4. Push to the branch (`git push origin my-new-feature`)
|
data/Rakefile
CHANGED
@@ -15,15 +15,15 @@ module RandomOrgHttpApi
|
|
15
15
|
|
16
16
|
# Query templates
|
17
17
|
# Integer
|
18
|
-
|
18
|
+
INTEGER_QUERY_KEYS = [:num, :min, :max, :col, :base, :format, :rnd]
|
19
19
|
INTEGER_QUERY_TEMPLATE = "/integers/?num=%{num}&min=%{min}&max=%{max}&col=%{col}&base=%{base}&format=%{format}&rnd=%{rnd}"
|
20
20
|
|
21
21
|
# String
|
22
|
-
|
22
|
+
STRING_QUERY_KEYS = [:num, :len, :digits, :upperalpha, :loweralpha, :unique, :format, :rnd]
|
23
23
|
STRING_QUERY_TEMPLATE = "/strings/?num=%{num}&len=%{len}&digits=%{digits}&upperalpha=%{upperalpha}&loweralpha=%{loweralpha}&unique=%{unique}&format=%{format}&rnd=%{rnd}"
|
24
24
|
|
25
25
|
# Sequence
|
26
|
-
|
26
|
+
SEQUENCE_QUERY_KEYS = [:min, :max, :col, :format, :rnd]
|
27
27
|
SEQUENCE_QUERY_TEMPLATE = "/sequences/?min=%{min}&max=%{max}&col=%{col}&format=%{format}&rnd=%{rnd}"
|
28
28
|
|
29
29
|
end
|
@@ -4,50 +4,70 @@ module RandomOrgHttpApi
|
|
4
4
|
include RandomOrgHttpApi::Configuration
|
5
5
|
|
6
6
|
def generate_integers(params = {})
|
7
|
-
|
7
|
+
integers_query = query('integer', params)
|
8
|
+
request(DOMAIN, integers_query)
|
8
9
|
end
|
9
10
|
|
10
11
|
def generate_strings(params = {})
|
11
|
-
|
12
|
+
strings_query = query('string', params)
|
13
|
+
request(DOMAIN, strings_query)
|
12
14
|
end
|
13
15
|
|
14
16
|
def generate_sequence(params = {})
|
15
|
-
|
17
|
+
sequence_query = query('sequence', params)
|
18
|
+
request(DOMAIN, sequence_query)
|
19
|
+
end
|
20
|
+
|
21
|
+
# Quota Checker
|
22
|
+
def quota
|
23
|
+
quota_query = "/quota/?ip=#{ip}&format=plain"
|
24
|
+
request(DOMAIN, quota_query).first.to_i
|
16
25
|
end
|
17
26
|
|
18
27
|
private
|
19
28
|
|
20
29
|
# Метод запроса на сайт random.org
|
21
|
-
def request(
|
22
|
-
#
|
30
|
+
def request(domain, query)
|
31
|
+
# Создаем запрос
|
32
|
+
res = Net::HTTP.get_response(domain, query)
|
33
|
+
# Если все хорошо, то возвращаем форматированный ответ,
|
34
|
+
# если нет, то показываем ответ ошибки сервера.
|
35
|
+
res.is_a?(Net::HTTPSuccess) ? res.body.split : res.body.strip
|
36
|
+
end
|
37
|
+
|
38
|
+
# Метод для генерации запроса
|
39
|
+
def query(object_type, params)
|
40
|
+
# Совмещаем параметры по умолчанию с параметами, который передал пользователь
|
41
|
+
all_params = DEFAULT_QUERY_PARAMS.merge(params)
|
42
|
+
# В зависимости от типа объекта, который нужно сгенерировать, оставляем только нужные для него параметры.
|
23
43
|
case object_type
|
24
44
|
when 'integer' then
|
25
|
-
|
26
|
-
|
45
|
+
right_params = permit_params(all_params, INTEGER_QUERY_KEYS)
|
46
|
+
insert_params(right_params, INTEGER_QUERY_TEMPLATE)
|
27
47
|
when 'string' then
|
28
|
-
|
29
|
-
|
48
|
+
right_params = permit_params(all_params, STRING_QUERY_KEYS)
|
49
|
+
insert_params(right_params, STRING_QUERY_TEMPLATE)
|
30
50
|
when 'sequence' then
|
31
|
-
|
32
|
-
|
51
|
+
right_params = permit_params(all_params, SEQUENCE_QUERY_KEYS)
|
52
|
+
insert_params(right_params, SEQUENCE_QUERY_TEMPLATE)
|
33
53
|
end
|
34
|
-
# Создаем запрос
|
35
|
-
res = Net::HTTP.get_response(DOMAIN, query)
|
36
|
-
# Если все хорошо, то возвращаем форматированный ответ,
|
37
|
-
# если нет, то показываем ответ ошибки сервера.
|
38
|
-
res.is_a?(Net::HTTPSuccess) ? res.body.split : res.body.strip
|
39
54
|
end
|
40
55
|
|
41
56
|
# Метод оставляющий только нужные параметры.
|
42
|
-
def permit_params(
|
43
|
-
|
44
|
-
@params = @params.select {|k,v| required_params.include?(k) }
|
57
|
+
def permit_params(params, required_keys)
|
58
|
+
params.select { |k| required_keys.include?(k) }
|
45
59
|
end
|
46
60
|
|
47
|
-
# Метод подстановки параметров в темплейт.
|
48
|
-
|
61
|
+
# Метод подстановки параметров в темплейт.
|
62
|
+
# Параметры должны передаваться в хеше
|
63
|
+
def insert_params(params, template)
|
49
64
|
template % params
|
50
65
|
end
|
51
66
|
|
67
|
+
def ip
|
68
|
+
uri = URI('http://whatismyip.akamai.com')
|
69
|
+
Net::HTTP.get(uri)
|
70
|
+
end
|
71
|
+
|
52
72
|
end
|
53
73
|
end
|
data/random_org_http_api.gemspec
CHANGED
@@ -0,0 +1,63 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
describe RandomOrgHttpApi::Generator do
|
3
|
+
|
4
|
+
before(:all) do
|
5
|
+
@generator = RandomOrgHttpApi::Generator.new
|
6
|
+
end
|
7
|
+
|
8
|
+
describe '#insert_params' do
|
9
|
+
it 'should do insert params in string' do
|
10
|
+
params = {name: 'World'}
|
11
|
+
string = 'Hello %{name}'
|
12
|
+
expect(@generator.send(:insert_params, params, string)).to eq('Hello World')
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe '#permit_params' do
|
17
|
+
it 'should do permit only required params' do
|
18
|
+
params = {a: 'A', b: 'B', c: 'C'}
|
19
|
+
required_keys = [:a, :b]
|
20
|
+
expect(@generator.send(:permit_params, params, required_keys)).to eq({a: 'A', b: 'B'})
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
describe '#query' do
|
25
|
+
it 'should do generate right query for integer' do
|
26
|
+
object_type = 'integer'
|
27
|
+
params = {num: 4, max: 100}
|
28
|
+
right_query = '/integers/?num=4&min=1&max=100&col=1&base=10&format=plain&rnd=new'
|
29
|
+
expect(@generator.send(:query, object_type, params)).to eq(right_query)
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'should do generate right query for string' do
|
33
|
+
object_type = 'string'
|
34
|
+
params = {min: 1, max: 10, num: 3, len: 5}
|
35
|
+
right_query = '/strings/?num=3&len=5&digits=on&upperalpha=on&loweralpha=on&unique=on&format=plain&rnd=new'
|
36
|
+
expect(@generator.send(:query, object_type, params)).to eq(right_query)
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'should do generate right query for sequence' do
|
40
|
+
object_type = 'sequence'
|
41
|
+
params = {num: 5, len: 10, max: 10}
|
42
|
+
right_query = '/sequences/?min=1&max=10&col=1&format=plain&rnd=new'
|
43
|
+
expect(@generator.send(:query, object_type, params)).to eq(right_query)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
describe '#request' do
|
48
|
+
domain = 'www.random.org'
|
49
|
+
|
50
|
+
it 'should do string with error message if request have bad response' do
|
51
|
+
bad_query = '/strings/?num=HelloWorld&len=5&digits=on&upperalpha=on&loweralpha=on&unique=on&format=plain&rnd=new'
|
52
|
+
expect(@generator.send(:request, domain, bad_query).class).to eq(String)
|
53
|
+
end
|
54
|
+
|
55
|
+
it 'should do return array if request have good response' do
|
56
|
+
if @generator.quota > 0
|
57
|
+
good_query = '/strings/?num=3&len=5&digits=on&upperalpha=on&loweralpha=on&unique=on&format=plain&rnd=new'
|
58
|
+
expect(@generator.send(:request, domain, good_query).class).to eq(Array)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: random_org_http_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Temur Fatkulin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-05-
|
11
|
+
date: 2014-05-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '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'
|
41
55
|
description: At present realized generation for numbers, strings and sequences
|
42
56
|
email:
|
43
57
|
- temur.fatkulin@gmail.com
|
@@ -46,6 +60,7 @@ extensions: []
|
|
46
60
|
extra_rdoc_files: []
|
47
61
|
files:
|
48
62
|
- ".gitignore"
|
63
|
+
- ".rspec"
|
49
64
|
- Gemfile
|
50
65
|
- LICENSE.txt
|
51
66
|
- README.md
|
@@ -55,6 +70,8 @@ files:
|
|
55
70
|
- lib/random_org_http_api/generator.rb
|
56
71
|
- lib/random_org_http_api/version.rb
|
57
72
|
- random_org_http_api.gemspec
|
73
|
+
- spec/random_org_http_api/generator_spec.rb
|
74
|
+
- spec/spec_helper.rb
|
58
75
|
homepage: https://github.com/istickz/random_org_http_api
|
59
76
|
licenses:
|
60
77
|
- MIT
|
@@ -79,4 +96,6 @@ rubygems_version: 2.2.2
|
|
79
96
|
signing_key:
|
80
97
|
specification_version: 4
|
81
98
|
summary: Realization of old HTTP API provided by the random.org service
|
82
|
-
test_files:
|
99
|
+
test_files:
|
100
|
+
- spec/random_org_http_api/generator_spec.rb
|
101
|
+
- spec/spec_helper.rb
|