achetepe 0.0.1 → 0.0.2
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 +4 -4
- data/achetepe.gemspec +1 -1
- data/lib/achetepe.rb +8 -2
- data/rakefile +5 -5
- data/test/get_test.rb +4 -4
- data/test/helper.rb +23 -0
- data/test/post_test.rb +46 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c73e051ac431425db4964c64469137f4854660c7
|
4
|
+
data.tar.gz: adb35a468bf7718d056b64983edc2522801863c9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f516ae17332a3823edb8df0b5c7edf31e8bcb49268e9aba755caa94b70b068b04a7b53b7209fdf96d65496f78473bca92df0a814113ea2377327e89cb0427add
|
7
|
+
data.tar.gz: 6d27ccf5cd48f58ded01368668706ca3de5bb44e0e76950780627de6a5668ab57d6237f206d11af90f23a2e9f3e7a5daaf8d0b93ae62c3fffe5861fa80849b14
|
data/achetepe.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'achetepe'
|
3
|
-
s.version = '0.0.
|
3
|
+
s.version = '0.0.2'
|
4
4
|
s.date = Time.now.strftime('%Y-%m-%d')
|
5
5
|
s.summary = 'Asynchronous HTTP Requests using Threads'
|
6
6
|
s.description = '`achetepe` is a small and simple library to execute a block of code after an asynchronous HTTP request.'
|
data/lib/achetepe.rb
CHANGED
@@ -7,9 +7,15 @@ class Achetepe
|
|
7
7
|
uri = URI(url)
|
8
8
|
|
9
9
|
Thread.new do
|
10
|
-
|
10
|
+
yield Net::HTTP.get_response(uri)
|
11
|
+
end
|
12
|
+
end
|
11
13
|
|
12
|
-
|
14
|
+
def post(url, params = {}, &block)
|
15
|
+
uri = URI(url)
|
16
|
+
|
17
|
+
Thread.new do
|
18
|
+
yield Net::HTTP.post_form(uri, params)
|
13
19
|
end
|
14
20
|
end
|
15
21
|
|
data/rakefile
CHANGED
@@ -10,13 +10,13 @@ namespace :test do
|
|
10
10
|
require File.expand_path("./test/helper", File.dirname(__FILE__))
|
11
11
|
|
12
12
|
puts 'Starting TestApp server'
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
fork do
|
14
|
+
Rack::Server.start app: TestApp,
|
15
|
+
Port: 9494,
|
16
|
+
daemonize: true,
|
17
|
+
pid: TEST_APP_PID
|
16
18
|
end
|
17
19
|
|
18
|
-
system "echo #{$pid} > #{TEST_APP_PID}"
|
19
|
-
|
20
20
|
sleep(1.5)
|
21
21
|
end
|
22
22
|
end
|
data/test/get_test.rb
CHANGED
@@ -3,8 +3,8 @@ require_relative './helper'
|
|
3
3
|
Protest.describe 'Get' do
|
4
4
|
|
5
5
|
it 'return a Net::HTTPOK on a valid url' do
|
6
|
-
response = Achetepe.get(
|
7
|
-
|
6
|
+
response = Achetepe.get(TestApp.url) do |response|
|
7
|
+
assert_equal response.class, Net::HTTPOK
|
8
8
|
end
|
9
9
|
|
10
10
|
assert_equal Thread, response.class
|
@@ -12,8 +12,8 @@ Protest.describe 'Get' do
|
|
12
12
|
end
|
13
13
|
|
14
14
|
it 'return a Net::HTTPNotFound' do
|
15
|
-
response = Achetepe.get('
|
16
|
-
|
15
|
+
response = Achetepe.get(TestApp.url + 'not_found') do |response|
|
16
|
+
assert_equal response.class, Net::HTTPNotFound
|
17
17
|
end
|
18
18
|
|
19
19
|
assert_equal Thread, response.class
|
data/test/helper.rb
CHANGED
@@ -32,5 +32,28 @@ class TestApp < Cuba
|
|
32
32
|
res.status = 404
|
33
33
|
end
|
34
34
|
end
|
35
|
+
|
36
|
+
on post do
|
37
|
+
on "slow_post" do
|
38
|
+
sleep(2)
|
39
|
+
res.write "It takes too much"
|
40
|
+
end
|
41
|
+
|
42
|
+
on "login" do
|
43
|
+
|
44
|
+
# POST /login, user: foo, pass: baz
|
45
|
+
on param("user"), param("pass") do |user, pass|
|
46
|
+
res.write "#{user}:#{pass}" #=> "foo:baz"
|
47
|
+
end
|
48
|
+
|
49
|
+
# If the params `user` and `pass` are not provided,
|
50
|
+
# this block will get executed.
|
51
|
+
on true do
|
52
|
+
res.status = 400
|
53
|
+
res.write "You need to provide user and pass!"
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
35
58
|
end
|
36
59
|
end
|
data/test/post_test.rb
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
require_relative './helper'
|
2
|
+
|
3
|
+
Protest.describe 'Post' do
|
4
|
+
|
5
|
+
it 'return a Net::HTTPOK on a valid url' do
|
6
|
+
params = { user: 'emancu', pass: 'achetepe_rocks' }
|
7
|
+
|
8
|
+
response = Achetepe.post(TestApp.url + 'login', params) do |response|
|
9
|
+
assert_equal response.class, Net::HTTPOK
|
10
|
+
assert response.class.ancestors.include?(Net::HTTPResponse)
|
11
|
+
end
|
12
|
+
|
13
|
+
assert_equal Thread, response.class
|
14
|
+
response.join
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'return a Net::HTTPBadRequest' do
|
18
|
+
response = Achetepe.post(TestApp.url + 'login') do |response|
|
19
|
+
assert_equal response.class, Net::HTTPBadRequest
|
20
|
+
end
|
21
|
+
|
22
|
+
assert_equal Thread, response.class
|
23
|
+
response.join
|
24
|
+
end
|
25
|
+
|
26
|
+
it "executes the block as soon as a response is received" do
|
27
|
+
params = { user: 'emancu', pass: 'achetepe_rocks' }
|
28
|
+
ordered_responses = []
|
29
|
+
|
30
|
+
get1 = Achetepe.post(TestApp.url + 'slow_post', params) do |response|
|
31
|
+
ordered_responses << 'slow_post'
|
32
|
+
end
|
33
|
+
|
34
|
+
sleep(1)
|
35
|
+
|
36
|
+
get2 = Achetepe.post(TestApp.url + 'login', params) do |response|
|
37
|
+
ordered_responses << 'root'
|
38
|
+
end
|
39
|
+
|
40
|
+
get1.join
|
41
|
+
get2.join
|
42
|
+
|
43
|
+
assert_equal ['root', 'slow_post'], ordered_responses
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: achetepe
|
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
|
- Emiliano Mancuso
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-10-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: protest
|
@@ -52,6 +52,7 @@ files:
|
|
52
52
|
- achetepe.gemspec
|
53
53
|
- test/get_test.rb
|
54
54
|
- test/helper.rb
|
55
|
+
- test/post_test.rb
|
55
56
|
homepage: http://github.com/emancu/achetepe
|
56
57
|
licenses:
|
57
58
|
- MIT
|
@@ -79,3 +80,4 @@ summary: Asynchronous HTTP Requests using Threads
|
|
79
80
|
test_files:
|
80
81
|
- test/get_test.rb
|
81
82
|
- test/helper.rb
|
83
|
+
- test/post_test.rb
|