deelay 0.3.0 → 0.3.1
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.
- data/Gemfile +3 -10
- data/Rakefile +6 -4
- data/deelay.gemspec +1 -1
- data/lib/deelay.rb +3 -4
- data/lib/deelay/app.rb +26 -4
- data/lib/deelay/version.rb +1 -1
- data/test/test_deelay_app.rb +50 -0
- metadata +6 -26
- data/lib/deelay/parse.rb +0 -10
- data/spec/deelay_app_spec.rb +0 -41
data/Gemfile
CHANGED
@@ -1,16 +1,9 @@
|
|
1
1
|
source "http://rubygems.org"
|
2
2
|
|
3
|
-
|
4
|
-
gemspec
|
5
|
-
gem 'sinatra', "~>1.3.3"
|
6
|
-
gem 'thin'
|
3
|
+
gem 'rake'
|
7
4
|
gem 'async_sinatra'
|
8
|
-
|
9
|
-
group :development do
|
10
|
-
gem 'shotgun'
|
11
|
-
end
|
5
|
+
gem 'thin'
|
12
6
|
|
13
7
|
group :test do
|
14
|
-
gem
|
15
|
-
gem "rspec"
|
8
|
+
gem 'rack-test'
|
16
9
|
end
|
data/Rakefile
CHANGED
@@ -1,7 +1,9 @@
|
|
1
1
|
require "bundler/gem_tasks"
|
2
|
-
require '
|
2
|
+
require 'rake/testtask'
|
3
3
|
|
4
|
-
desc "Run
|
5
|
-
|
4
|
+
desc "Run tests"
|
5
|
+
Rake::TestTask.new do |t|
|
6
|
+
t.pattern = "test/test_*.rb"
|
7
|
+
end
|
6
8
|
|
7
|
-
task :default => :
|
9
|
+
task :default => :test
|
data/deelay.gemspec
CHANGED
@@ -19,6 +19,6 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
20
|
s.require_paths = ["lib"]
|
21
21
|
|
22
|
-
s.add_development_dependency "rake"
|
22
|
+
# s.add_development_dependency "rake"
|
23
23
|
# s.add_runtime_dependency "rest-client"
|
24
24
|
end
|
data/lib/deelay.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
require "deelay/app"
|
1
|
+
require_relative "deelay/version"
|
2
|
+
require_relative "deelay/homepage"
|
3
|
+
require_relative "deelay/app"
|
data/lib/deelay/app.rb
CHANGED
@@ -1,13 +1,35 @@
|
|
1
|
-
require
|
1
|
+
require 'sinatra/async'
|
2
|
+
require 'uri'
|
2
3
|
|
3
4
|
module Deelay
|
4
5
|
class App < Sinatra::Base
|
5
6
|
register Sinatra::Async
|
6
7
|
|
7
|
-
aget '/:delay' do
|
8
|
-
|
9
|
-
|
8
|
+
aget '/:delay' do
|
9
|
+
resource_url = parse(request.query_string)
|
10
|
+
|
11
|
+
EM.add_timer(params[:delay].to_i / 1000) do
|
12
|
+
em_async_schedule { redirect resource_url }
|
10
13
|
end
|
11
14
|
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def parse(url)
|
19
|
+
unescaped_url = ::URI.unescape(url)
|
20
|
+
|
21
|
+
raise "Invalid URL" if (::URI::regexp =~ unescaped_url).nil?
|
22
|
+
return unescaped_url
|
23
|
+
end
|
24
|
+
|
25
|
+
# swaps env when testing
|
26
|
+
def em_async_schedule
|
27
|
+
o = self.class.environment
|
28
|
+
self.class.set :environment, :normal
|
29
|
+
async_schedule { yield }
|
30
|
+
ensure
|
31
|
+
self.class.set :environment, o
|
32
|
+
end
|
12
33
|
end
|
13
34
|
end
|
35
|
+
|
data/lib/deelay/version.rb
CHANGED
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'eventmachine'
|
3
|
+
require 'sinatra/async/test'
|
4
|
+
|
5
|
+
require_relative '../lib/deelay'
|
6
|
+
|
7
|
+
Sinatra::Base.set :environment, :test
|
8
|
+
|
9
|
+
class TestDeelayApp < MiniTest::Unit::TestCase
|
10
|
+
include Sinatra::Async::Test::Methods
|
11
|
+
|
12
|
+
def app
|
13
|
+
Deelay::App.new
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_redirect_on_valid_request
|
17
|
+
get "/10?http://testurl.com"
|
18
|
+
em_async_continue
|
19
|
+
assert_equal "http://testurl.com", last_response.location
|
20
|
+
assert_equal 302, last_response.status
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_redirect_on_valid_request_with_port
|
24
|
+
get "/10?http://testurl.com:1234"
|
25
|
+
em_async_continue
|
26
|
+
assert_equal "http://testurl.com:1234", last_response.location
|
27
|
+
assert_equal 302, last_response.status
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_no_query
|
31
|
+
get "/10"
|
32
|
+
assert_raises(RuntimeError) do
|
33
|
+
em_async_continue(0.1)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_no_link
|
38
|
+
get "/10?"
|
39
|
+
assert_raises(RuntimeError) do
|
40
|
+
em_async_continue(0.1)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_no_scheme_link
|
45
|
+
get "/10?testurl.com"
|
46
|
+
assert_raises(RuntimeError) do
|
47
|
+
em_async_continue(0.1)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: deelay
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,24 +9,8 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
13
|
-
dependencies:
|
14
|
-
- !ruby/object:Gem::Dependency
|
15
|
-
name: rake
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
|
-
requirements:
|
19
|
-
- - ! '>='
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
version: '0'
|
22
|
-
type: :development
|
23
|
-
prerelease: false
|
24
|
-
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
|
-
requirements:
|
27
|
-
- - ! '>='
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: '0'
|
12
|
+
date: 2013-09-01 00:00:00.000000000 Z
|
13
|
+
dependencies: []
|
30
14
|
description: Delay proxy for http resources
|
31
15
|
email:
|
32
16
|
- gbiesiadecki@gmail.com
|
@@ -46,9 +30,8 @@ files:
|
|
46
30
|
- lib/deelay.rb
|
47
31
|
- lib/deelay/app.rb
|
48
32
|
- lib/deelay/homepage.rb
|
49
|
-
- lib/deelay/parse.rb
|
50
33
|
- lib/deelay/version.rb
|
51
|
-
-
|
34
|
+
- test/test_deelay_app.rb
|
52
35
|
homepage: http://deelay.me
|
53
36
|
licenses: []
|
54
37
|
post_install_message:
|
@@ -63,16 +46,13 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
63
46
|
version: '0'
|
64
47
|
segments:
|
65
48
|
- 0
|
66
|
-
hash:
|
49
|
+
hash: 3411104809723433661
|
67
50
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
68
51
|
none: false
|
69
52
|
requirements:
|
70
53
|
- - ! '>='
|
71
54
|
- !ruby/object:Gem::Version
|
72
55
|
version: '0'
|
73
|
-
segments:
|
74
|
-
- 0
|
75
|
-
hash: 3755310507841361791
|
76
56
|
requirements: []
|
77
57
|
rubyforge_project: deelay
|
78
58
|
rubygems_version: 1.8.25
|
@@ -80,4 +60,4 @@ signing_key:
|
|
80
60
|
specification_version: 3
|
81
61
|
summary: Delay proxy
|
82
62
|
test_files:
|
83
|
-
-
|
63
|
+
- test/test_deelay_app.rb
|
data/lib/deelay/parse.rb
DELETED
data/spec/deelay_app_spec.rb
DELETED
@@ -1,41 +0,0 @@
|
|
1
|
-
require_relative '../lib/deelay'
|
2
|
-
require 'rspec'
|
3
|
-
require 'rack/test'
|
4
|
-
|
5
|
-
Sinatra::Base.set :environment, :test
|
6
|
-
|
7
|
-
describe "Deelay::App" do
|
8
|
-
include Rack::Test::Methods
|
9
|
-
|
10
|
-
def app
|
11
|
-
Deelay::App
|
12
|
-
end
|
13
|
-
|
14
|
-
context "when url invalid" do
|
15
|
-
it "raise error if query is not a valid url" do
|
16
|
-
expect { get "/10?testurl.com" }.to raise_error
|
17
|
-
expect { get "/10?" }.to raise_error
|
18
|
-
end
|
19
|
-
|
20
|
-
it "raise error if no query" do
|
21
|
-
expect { get "/10" }.to raise_error
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
context "when url valid" do
|
26
|
-
it "redirects request to specified url" do
|
27
|
-
get "/10?http://testurl.com"
|
28
|
-
last_response.location.should == "http://testurl.com"
|
29
|
-
end
|
30
|
-
|
31
|
-
it "redirects request" do
|
32
|
-
get "/10?http://testurl.com"
|
33
|
-
last_response.status.should == 302
|
34
|
-
end
|
35
|
-
|
36
|
-
it "redirects request with port" do
|
37
|
-
get "/10?http://testurl.com:1234"
|
38
|
-
last_response.status.should == 302
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|