idra 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 +41 -0
- data/lib/idra/version.rb +3 -0
- data/lib/idra.rb +71 -0
- metadata +62 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 68e9b10e44c01a0176ab696094b0a400b868b21a
|
4
|
+
data.tar.gz: 69e24798619594a1452f8a0d23bfa11ef2feaf1f
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 630a6c381614f0df48771072c7e89f5b9db984a7d834faf8e01dc7f0042ffe3c6052084037615cb053cdb617319afc1823370da3dc287d2a7685fe28477dc80f
|
7
|
+
data.tar.gz: 704b463912a650ff1f0bcb1221fc88e41d84c681ddaba4a6e95c78fc54b87eb49b0552235046c19f05f86c419853dbf90b1d774a0f1e71418d899cb399a21d55
|
data/Readme.md
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
# Idra
|
2
|
+
|
3
|
+
Idra is a tiny wrapper around Typoheus Hydra to make concurrent http requests.
|
4
|
+
|
5
|
+
Usually you don't need this, the Typoheus API itself is very good ( https://github.com/typhoeus/typhoeus#making-parallel-requests ), but I like to have an even slimmer API :)
|
6
|
+
|
7
|
+
|
8
|
+
```rb
|
9
|
+
idra = Idra.new
|
10
|
+
|
11
|
+
idra.add_request :user1, "https://api.github.com/users/i0rek"
|
12
|
+
idra.add_request :user2, "https://api.github.com/users/makevoid"
|
13
|
+
idra.add_request :user3, "https://api.github.com/users/pauldix"
|
14
|
+
idra.add_request :user4, "https://api.github.com/users/dbalatero"
|
15
|
+
|
16
|
+
idra.response_for :user1 do |response|
|
17
|
+
puts response.body
|
18
|
+
end
|
19
|
+
|
20
|
+
idra.response_for :user2 do |response|
|
21
|
+
puts response.body
|
22
|
+
end
|
23
|
+
|
24
|
+
# ...
|
25
|
+
```
|
26
|
+
|
27
|
+
or:
|
28
|
+
|
29
|
+
```rb
|
30
|
+
idra.refresh # makes the requests again
|
31
|
+
|
32
|
+
idra.run do |request|
|
33
|
+
puts request.name # => :userX
|
34
|
+
puts request.response.body # => {...}
|
35
|
+
end
|
36
|
+
```
|
37
|
+
|
38
|
+
|
39
|
+
You can read the code on github: <https://github.com/makevoid/idra/blob/master/lib/idra.rb> -- It's just few lines.
|
40
|
+
|
41
|
+
enjoy
|
data/lib/idra/version.rb
ADDED
data/lib/idra.rb
ADDED
@@ -0,0 +1,71 @@
|
|
1
|
+
require 'typhoeus'
|
2
|
+
require_relative "idra/version"
|
3
|
+
|
4
|
+
class Typhoeus::Request
|
5
|
+
attr_accessor :name
|
6
|
+
end
|
7
|
+
|
8
|
+
class Idra
|
9
|
+
attr_reader :requests
|
10
|
+
attr_reader :enabled
|
11
|
+
|
12
|
+
def initialize
|
13
|
+
@hydra = Typhoeus::Hydra.new
|
14
|
+
@requests = []
|
15
|
+
@enabled = true
|
16
|
+
end
|
17
|
+
|
18
|
+
def add_request(name, *request)
|
19
|
+
request = Typhoeus::Request.new *request
|
20
|
+
request.name = name
|
21
|
+
@requests << request
|
22
|
+
@hydra.queue request
|
23
|
+
request
|
24
|
+
end
|
25
|
+
|
26
|
+
def response_for(name, &block)
|
27
|
+
run_hydra
|
28
|
+
request = @requests.find{ |req| req.name == name }
|
29
|
+
response = request.response
|
30
|
+
if block
|
31
|
+
block.call response
|
32
|
+
else
|
33
|
+
response
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def run(&block)
|
38
|
+
run_hydra
|
39
|
+
@requests.each do |req|
|
40
|
+
block.call req if block
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def refresh
|
45
|
+
@enabled = false
|
46
|
+
end
|
47
|
+
|
48
|
+
alias :enabled? :enabled
|
49
|
+
|
50
|
+
protected
|
51
|
+
|
52
|
+
def run_hydra
|
53
|
+
@hydra.run if enabled?
|
54
|
+
@enabled = false
|
55
|
+
true
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
|
60
|
+
# usage:
|
61
|
+
#
|
62
|
+
# idra = Idra.new
|
63
|
+
#
|
64
|
+
# idra.add_request "https://api.github.com/users/i0rek"
|
65
|
+
# idra.add_request "https://api.github.com/users/makevoid"
|
66
|
+
# idra.add_request "https://api.github.com/users/pauldix"
|
67
|
+
# idra.add_request "https://api.github.com/users/dbalatero"
|
68
|
+
#
|
69
|
+
# idra.run do |request|
|
70
|
+
# puts request.response.body
|
71
|
+
# end
|
metadata
ADDED
@@ -0,0 +1,62 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: idra
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Francesco 'makevoid' Canessa
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-05-07 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: typhoeus
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.7.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.7.0
|
27
|
+
description: Tiny wrapper around Typoheus Hydra to make concurrent http requests even
|
28
|
+
simpler. Usually you don't need this, the Typoheus API itself is very good ( https://github.com/typhoeus/typhoeus#making-parallel-requests
|
29
|
+
), but I like to have an even slimmer API :)
|
30
|
+
email: makevoid@gmail.com
|
31
|
+
executables: []
|
32
|
+
extensions: []
|
33
|
+
extra_rdoc_files: []
|
34
|
+
files:
|
35
|
+
- Readme.md
|
36
|
+
- lib/idra.rb
|
37
|
+
- lib/idra/version.rb
|
38
|
+
homepage: http://github.com/makevoid?tab=repositories
|
39
|
+
licenses: []
|
40
|
+
metadata: {}
|
41
|
+
post_install_message:
|
42
|
+
rdoc_options: []
|
43
|
+
require_paths:
|
44
|
+
- lib
|
45
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - ">="
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '0'
|
50
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
requirements: []
|
56
|
+
rubyforge_project:
|
57
|
+
rubygems_version: 2.4.3
|
58
|
+
signing_key:
|
59
|
+
specification_version: 4
|
60
|
+
summary: Idra is a tiny wrapper around Typoheus Hydra to make concurrent http requests
|
61
|
+
even simpler.
|
62
|
+
test_files: []
|