static_server 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,3 @@
1
+ .DS_Store
2
+ *.swp
3
+ *.gem
data/Rakefile ADDED
@@ -0,0 +1,9 @@
1
+ require 'rake/testtask'
2
+
3
+ Rake::TestTask.new do |t|
4
+ t.libs << 'test'
5
+ t.test_files = FileList['test/test*.rb', 'test/integration/test*.rb']
6
+ end
7
+
8
+ desc "Run tests"
9
+ task :default => :test
@@ -1,26 +1,30 @@
1
1
  class StaticConfig
2
- def initialize
3
- @redirect = {}
4
- @forward = {}
2
+ attr_reader :base_dir, :forwards, :redirects
3
+ def initialize(base_dir = nil)
4
+ @base_dir = base_dir
5
+ @base_dir ||= 'public'
6
+
7
+ @redirects = {}
8
+ @forwards = {}
9
+ @root = 'index.html'
5
10
  end
6
11
 
7
12
  def redirect(opt)
8
13
  validate_params(opt)
9
- @redirect.merge! opt
14
+ @redirects.merge! opt
10
15
  end
16
+
11
17
  def forward(opt)
12
18
  validate_params(opt)
13
- @forward.merge! opt
19
+ @forwards.merge! opt
14
20
  end
15
21
 
16
- def forwards
17
- @forward
22
+ def root(path = nil)
23
+ @root = path if path
24
+ @root
18
25
  end
19
26
 
20
- def redirects
21
- @redirect
22
- end
23
- private
27
+ private
24
28
  def validate_params(opt)
25
29
  raise "Invalid param" if opt.size != 1
26
30
  end
@@ -1,8 +1,6 @@
1
1
  class StaticServer
2
- def self.configure(params = {})
3
- options = {:root => 'index.html', :base_dir => 'public'}
4
- options.merge!(params)
5
- config = StaticConfig.new
2
+ def self.start(base_dir = nil)
3
+ config = StaticConfig.new(base_dir)
6
4
 
7
5
  yield config if block_given?
8
6
 
@@ -15,12 +13,12 @@ class StaticServer
15
13
  end
16
14
 
17
15
  if env["PATH_INFO"] == '/'
18
- env["PATH_INFO"] = options[:root]
16
+ env["PATH_INFO"] = config.root
19
17
  end
20
-
21
- Rack::File.new("./#{options[:base_dir]}").call(env)
18
+
19
+ Rack::File.new("./#{config.base_dir}").call(env)
22
20
  end
23
21
  }
24
-
22
+
25
23
  end
26
24
  end
data/public/index.html ADDED
@@ -0,0 +1 @@
1
+ <html>Index</html>
@@ -1,7 +1,7 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'static_server'
3
- s.version = '0.0.1'
4
- s.date = '2011-05-26'
3
+ s.version = '0.0.2'
4
+ s.date = '2011-05-28'
5
5
  s.summary = "A simple way to provide static files using rack"
6
6
  s.description = "A simple way to provide static files using rack"
7
7
  s.authors = ["David Paniz"]
@@ -0,0 +1 @@
1
+ <html>init</html>
@@ -0,0 +1 @@
1
+ <html>some_html</html>
@@ -0,0 +1,19 @@
1
+ require 'test/unit'
2
+ require 'static_server'
3
+ require "rack/test"
4
+
5
+ class BasicTest < Test::Unit::TestCase
6
+ include Rack::Test::Methods
7
+
8
+ def app
9
+ # will load files ffrom 'public' dir in the project root
10
+ StaticServer.start
11
+ end
12
+
13
+ def test_starting_server
14
+ get "/"
15
+
16
+ assert last_response.ok?
17
+ assert_equal "<html>Index</html>\n", last_response.body
18
+ end
19
+ end
@@ -0,0 +1,36 @@
1
+ require 'test/unit'
2
+ require 'static_server'
3
+ require "rack/test"
4
+
5
+ class ConfigurationTest < Test::Unit::TestCase
6
+ include Rack::Test::Methods
7
+
8
+ def app
9
+ StaticServer.start('test/integration/other_dir') {|map|
10
+ map.root 'init.html'
11
+ map.redirect '/test_redirect' => 'http://www.caelum.com.br'
12
+ map.forward '/some' => 'some_html.html'
13
+ }
14
+ end
15
+
16
+ def test_root_server
17
+ get "/"
18
+
19
+ assert last_response.ok?
20
+ assert_equal "<html>init</html>\n", last_response.body
21
+ end
22
+
23
+ def test_forward_server
24
+ get "/some"
25
+
26
+ assert last_response.ok?
27
+ assert_equal "<html>some_html</html>\n", last_response.body
28
+ end
29
+
30
+ def test_redirect_server
31
+ get "/test_redirect"
32
+
33
+ assert_equal "http://www.caelum.com.br", last_response.original_headers["Location"]
34
+ assert_equal 302, last_response.status
35
+ end
36
+ end
@@ -0,0 +1,53 @@
1
+ require 'test/unit'
2
+ require 'static_server'
3
+
4
+ class StaticConfigTest < Test::Unit::TestCase
5
+ def test_deafult_values
6
+ conf = StaticConfig.new
7
+ assert_equal "index.html", conf.root
8
+ assert_equal 'public', conf.base_dir
9
+ assert_equal( {}, conf.redirects)
10
+ assert_equal( {}, conf.forwards)
11
+ end
12
+
13
+ def test_adding_forward
14
+ conf = StaticConfig.new
15
+ conf.forward '/paniz' => 'www.davidpaniz.com'
16
+ assert_equal( {'/paniz' => 'www.davidpaniz.com'}, conf.forwards)
17
+
18
+ conf.forward '/caelum' => 'www.caelum.com.br'
19
+ assert_equal( {'/paniz' => 'www.davidpaniz.com', '/caelum' => 'www.caelum.com.br'}, conf.forwards)
20
+ end
21
+
22
+ def test_adding_redirect
23
+ conf = StaticConfig.new
24
+ conf.redirect '/paniz' => '/paniz.html'
25
+ assert_equal( {'/paniz' => '/paniz.html'}, conf.redirects)
26
+
27
+ conf.redirect '/caelum' => '/caelum.html'
28
+ assert_equal( {'/paniz' => '/paniz.html', '/caelum' => '/caelum.html'}, conf.redirects)
29
+ end
30
+
31
+ def test_configuring_root
32
+ conf = StaticConfig.new
33
+ conf.root 'new_index.html'
34
+ assert_equal 'new_index.html', conf.root
35
+
36
+ conf.root 'new_index2.html'
37
+ assert_equal 'new_index2.html', conf.root
38
+ end
39
+
40
+ def test_configuring_base_dir
41
+ conf = StaticConfig.new()
42
+ assert_equal 'public', conf.base_dir
43
+
44
+ conf = StaticConfig.new(nil)
45
+ assert_equal 'public', conf.base_dir
46
+
47
+ conf = StaticConfig.new('my_dir')
48
+ assert_equal 'my_dir', conf.base_dir
49
+
50
+ end
51
+
52
+
53
+ end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: static_server
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.1
5
+ version: 0.0.2
6
6
  platform: ruby
7
7
  authors:
8
8
  - David Paniz
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-05-26 00:00:00 -03:00
13
+ date: 2011-05-28 00:00:00 -03:00
14
14
  default_executable:
15
15
  dependencies: []
16
16
 
@@ -23,16 +23,20 @@ extensions: []
23
23
  extra_rdoc_files: []
24
24
 
25
25
  files:
26
- - .static_server.gemspec.swp
26
+ - .gitignore
27
27
  - README
28
- - lib/.static_config.rb.swp
29
- - lib/.static_s.swp
30
- - lib/.static_server.gemspec.swp
28
+ - Rakefile
31
29
  - lib/static_server.rb
30
+ - lib/static_server/.static_server.rb.swp
32
31
  - lib/static_server/static_config.rb
33
32
  - lib/static_server/static_server.rb
34
- - static_server-0.0.1.gem
33
+ - public/index.html
35
34
  - static_server.gemspec
35
+ - test/integration/other_dir/init.html
36
+ - test/integration/other_dir/some_html.html
37
+ - test/integration/test_basic.rb
38
+ - test/integration/test_configuration.rb
39
+ - test/test_static_config.rb
36
40
  has_rdoc: true
37
41
  homepage: http://github.com/davidpaniz/StaticServer
38
42
  licenses: []
@@ -61,5 +65,9 @@ rubygems_version: 1.5.2
61
65
  signing_key:
62
66
  specification_version: 3
63
67
  summary: A simple way to provide static files using rack
64
- test_files: []
65
-
68
+ test_files:
69
+ - test/integration/other_dir/init.html
70
+ - test/integration/other_dir/some_html.html
71
+ - test/integration/test_basic.rb
72
+ - test/integration/test_configuration.rb
73
+ - test/test_static_config.rb
Binary file
Binary file
data/lib/.static_s.swp DELETED
Binary file
Binary file