httpme 0.1.5 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e27183a0829fe35cd8336810fdcbe9a862a1df0a0e0c663aae71ee1bb9d0a78a
4
- data.tar.gz: b7e7403de4fda13bb29a344114910d9bd394566a4dceda51699a564288d7c4f9
3
+ metadata.gz: 99af7b72919ce9067c213da74800f672b83bc32c4ed9aaa138b3b054c5e27d87
4
+ data.tar.gz: 9aab9343681890a51d0a3fa903fa52724866fc6c8829119047b4af62900b204f
5
5
  SHA512:
6
- metadata.gz: 61e63755fc6d3e2982aadd6ca339dbdd9db73ce219f36698612fef9beb14cf8e146601f79f173c8444933cba60b97a891ee775efec5dd7438ec84fc90dcba39e
7
- data.tar.gz: e2e142ddf8ba2ad4a132b85bf76a10164ff75a6e033fc4d96e31758f9770c2ee8028c80f3827792901225b92332faad234343124f01d79cb672eebe18820cfe9
6
+ metadata.gz: a6d80f36f71b0dbc774b15f4d066b3dc55a31ae38e9c10d91796ade658927731cc61f64a1eda16a4fdbc17065b6dc898a1bd1c827ae8af4157d53346500e36c1
7
+ data.tar.gz: 8b5891bf859b15221a9507c8642d1c065a18f5572c6b5f097f260e60c0fb6cd5c562464d88028906f76e5074d02e769f2f6ca96bc5d368118a0fd83deadd7803
data/bin/httpme CHANGED
@@ -11,4 +11,4 @@ rescue => e
11
11
  puts e.backtrace.reverse if ENV['DEBUG']
12
12
  say! "!txtred!#{e.class}: #{e.message}"
13
13
  exit 1
14
- end
14
+ end
@@ -1,31 +1,32 @@
1
1
  require 'mister_bin'
2
2
  require 'colsole'
3
+ require 'httpme/version'
3
4
 
4
5
  module HTTPMe
5
6
  class Command < MisterBin::Command
6
7
  include Colsole
7
8
 
8
9
  version HTTPMe::VERSION
9
- summary "httpme - static web server with basic authentication"
10
+ summary 'httpme - static web server with basic authentication'
10
11
 
11
- help "Options can be set using command line arguments or environment variables"
12
+ help 'Options can be set using command line arguments or environment variables'
12
13
 
13
- usage "httpme [PATH] [--port PORT --host HOST --auth AUTH]"
14
- usage "httpme (-h|--help|--version)"
14
+ usage 'httpme [PATH] [--port PORT --host HOST --auth AUTH]'
15
+ usage 'httpme (-h|--help|--version)'
15
16
 
16
- param "PATH", "Path to the directory you want to serve [default: .]"
17
- option "-p --port PORT", "Server port (default: 3000)"
18
- option "-o --host HOST", "Server host (default: 0.0.0.0)"
19
- option "-a --auth AUTH", "Specify user:password to enable basic authentication"
17
+ param 'PATH', 'Path to the directory you want to serve [default: .]'
18
+ option '-p --port PORT', 'Server port (default: 3000)'
19
+ option '-o --host HOST', 'Server host (default: 0.0.0.0)'
20
+ option '-a --auth AUTH', 'Specify user:password to enable basic authentication'
20
21
 
21
- environment 'HTTPME_PATH', "Same as the PATH argument"
22
- environment 'HTTPME_AUTH', "Same as the --auth option"
23
- environment 'HTTPME_PORT', "Same as the --port option"
24
- environment 'HTTPME_HOST', "Same as the --host option"
22
+ environment 'HTTPME_PATH', 'Same as the PATH argument'
23
+ environment 'HTTPME_AUTH', 'Same as the --auth option'
24
+ environment 'HTTPME_PORT', 'Same as the --port option'
25
+ environment 'HTTPME_HOST', 'Same as the --host option'
25
26
 
26
- example "httpme -p 4000"
27
- example "httpme docs --auth admin:s3cr3t"
28
- example "HTTPME_AUTH=admin:s3cr3t httpme docs # same result as above"
27
+ example 'httpme -p 4000'
28
+ example 'httpme docs --auth admin:s3cr3t'
29
+ example 'HTTPME_AUTH=admin:s3cr3t httpme docs # same result as above'
29
30
 
30
31
  def run
31
32
  path = args['PATH'] || ENV['HTTPME_PATH'] || '.'
@@ -35,8 +36,8 @@ module HTTPMe
35
36
 
36
37
  raise ArgumentError, "Path not found [#{path}]" unless Dir.exist? path
37
38
 
38
- server = Server.new path: path, host: host, port: port, auth: auth
39
- server.run
39
+ Server.setup path: path, host: host, port: port, auth: auth
40
+ Server.run!
40
41
  end
41
42
  end
42
43
  end
data/lib/httpme/server.rb CHANGED
@@ -1,51 +1,31 @@
1
- require 'rack'
2
- require 'rack/handler/puma'
3
- require 'httpme/index_redirector'
1
+ require 'rack/contrib/try_static'
2
+ require 'sinatra/base'
4
3
 
5
4
  module HTTPMe
6
- class Server
7
- attr_reader :options
5
+ class Server < Sinatra::Application
6
+ class << self
7
+ def setup(port: 3000, host: '0.0.0.0', path: '.', zone: 'Restricted Area', auth: nil)
8
+ reset!
8
9
 
9
- def initialize(options = {})
10
- @options = options
11
- end
12
-
13
- def run
14
- Rack::Handler::Puma.run(app, **rack_options) do |server|
15
- # :nocov: - FIXME: Can we test this?
16
- [:INT, :TERM].each do |sig|
17
- trap(sig) { server.stop }
18
- end
19
- # :nocov:
20
- end
21
- end
22
-
23
- def app
24
- path = options[:path] || '.'
25
- auth = options[:auth]
26
- zone = options[:zone] || 'Restricted Area'
10
+ set :bind, host
11
+ set :port, port
12
+ set :server, %w[puma webrick]
27
13
 
28
- Rack::Builder.new do
29
14
  if auth
30
15
  use Rack::Auth::Basic, zone do |username, password|
31
16
  auth.split(':') == [username, password]
32
17
  end
33
18
  end
34
19
 
35
- use Rack::Static, urls: ["/"], root: path, cascade: true, index: 'index.html'
36
- use IndexRedirector, root: path
37
- run Rack::Directory.new(path)
38
- end
39
- end
20
+ not_found do
21
+ content_type :text
22
+ '404 Not Found'
23
+ end
40
24
 
41
- private
25
+ use Rack::TryStatic, root: path, urls: %w[/], try: %w[.html index.html /index.html]
42
26
 
43
- def rack_options
44
- {
45
- Port: (options[:port] || '3000'),
46
- Host: (options[:host] || '0.0.0.0'),
47
- }
27
+ self
28
+ end
48
29
  end
49
-
50
30
  end
51
31
  end
@@ -1,3 +1,3 @@
1
1
  module HTTPMe
2
- VERSION = "0.1.5"
3
- end
2
+ VERSION = '0.2.0'
3
+ end
data/lib/httpme.rb CHANGED
@@ -1,2 +1,6 @@
1
1
  require 'httpme/server'
2
- require 'byebug' if ENV['BYEBUG']
2
+
3
+ if ENV['BYEBUG']
4
+ require 'byebug'
5
+ require 'lp'
6
+ end
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: httpme
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Danny Ben Shitrit
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-05-15 00:00:00.000000000 Z
11
+ date: 2022-11-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: mister_bin
14
+ name: colsole
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
@@ -25,7 +25,7 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0.7'
27
27
  - !ruby/object:Gem::Dependency
28
- name: colsole
28
+ name: mister_bin
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
@@ -39,33 +39,47 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0.7'
41
41
  - !ruby/object:Gem::Dependency
42
- name: rack
42
+ name: puma
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '2.2'
47
+ version: '6.0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '2.2'
54
+ version: '6.0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: puma
56
+ name: rack-contrib
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '2.3'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '2.3'
69
+ - !ruby/object:Gem::Dependency
70
+ name: sinatra
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
73
  - - "~>"
60
74
  - !ruby/object:Gem::Version
61
- version: '5.1'
75
+ version: '3.0'
62
76
  type: :runtime
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
80
  - - "~>"
67
81
  - !ruby/object:Gem::Version
68
- version: '5.1'
82
+ version: '3.0'
69
83
  description: Command line utility for running a web server for static files with basic
70
84
  authentication support
71
85
  email: db@dannyben.com
@@ -79,13 +93,13 @@ files:
79
93
  - lib/httpme.rb
80
94
  - lib/httpme/cli.rb
81
95
  - lib/httpme/command.rb
82
- - lib/httpme/index_redirector.rb
83
96
  - lib/httpme/server.rb
84
97
  - lib/httpme/version.rb
85
98
  homepage: https://github.com/dannyben/httpme
86
99
  licenses:
87
100
  - MIT
88
- metadata: {}
101
+ metadata:
102
+ rubygems_mfa_required: 'true'
89
103
  post_install_message:
90
104
  rdoc_options: []
91
105
  require_paths:
@@ -94,14 +108,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
94
108
  requirements:
95
109
  - - ">="
96
110
  - !ruby/object:Gem::Version
97
- version: 2.6.0
111
+ version: 2.7.0
98
112
  required_rubygems_version: !ruby/object:Gem::Requirement
99
113
  requirements:
100
114
  - - ">="
101
115
  - !ruby/object:Gem::Version
102
116
  version: '0'
103
117
  requirements: []
104
- rubygems_version: 3.3.3
118
+ rubygems_version: 3.3.26
105
119
  signing_key:
106
120
  specification_version: 4
107
121
  summary: Static files web server with basic authentication
@@ -1,19 +0,0 @@
1
- module HTTPMe
2
- class IndexRedirector
3
- def initialize(app, root: '.')
4
- @app = app
5
- @root = root
6
- end
7
-
8
- def call(env)
9
- path_info = Rack::Utils.unescape env['PATH_INFO']
10
- path = File.join @root, path_info
11
-
12
- if File.directory?(path) and !path_info.end_with? '/'
13
- return [302, { 'Location' => "#{env['PATH_INFO']}/" }, []]
14
- end
15
-
16
- @app.call env
17
- end
18
- end
19
- end