bbserver 0.3.0 → 0.4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 99665aa54be848e3c4fc6429586022214d4a2f2e12c743dd23ca4cac97582cce
4
- data.tar.gz: 258ab27cb2a11c4379aa648dfff5e8dbec3e9a4e97062499fa293cd4ee66d1b3
3
+ metadata.gz: 2b983d94ca6286708c709a829b31d57808efa1c106d2368e9b36124f6fd92811
4
+ data.tar.gz: 015356ae248ffd85175770aa3a9a3f4a7c306bc5c102cb3cd6ce35dfc3055ee9
5
5
  SHA512:
6
- metadata.gz: 3e8ccc09aa06b5b86a773636f898f85280bee3e718d6f7241b1ccbdf70c5d635cc43b9c1db81217ac8c347bd067a7a3a7f2b19c30869d88573de4d20a074cd04
7
- data.tar.gz: 5123fa56f4d9b285748c7d36ccc92c60565e783d4c3df44814f663de365efad5d5020cc631f13ceab8be2e56f2b32d5f03559d7df91e4efd888bc47aa3b0ee35
6
+ metadata.gz: 241b143ef65b1e3e3951a8e09099401498a5fbdff154674661d508bcbe236f1007a06ad86e62acc1fade7e0ccaa3dd3d9b46140051400807c780242afd11b88c
7
+ data.tar.gz: ab49cfaa643ecde9e2c088ad4f5897d6bd9dce95f835854299dd2dcfdaae3ce7003c9c2b49b00d9c2dd733908d16e3e8585f766e2c2b08b47616399eedbf9776
@@ -3,15 +3,22 @@
3
3
  module BBServer
4
4
  class ContextLocals
5
5
  def initialize
6
- @storage: Hash[Symbol, untyped] = {}
6
+ @storage = {}
7
+ end
8
+
9
+ def get(key)
10
+ @storage[key.to_sym]
11
+ end
12
+
13
+ def set(key, value)
14
+ @storage[key.to_sym] = value
7
15
  end
8
16
 
9
17
  def method_missing(name, *args, &block)
10
18
  if name.to_s.end_with?('=')
11
- key = name.to_s.chomp('=').to_sym
12
- @storage[key] = args.first
13
- elsif @storage.key?(name)
14
- @storage[name]
19
+ set(name.to_s.chomp('='), args.first)
20
+ elsif @storage.key?(name.to_sym)
21
+ get(name)
15
22
  else
16
23
  super
17
24
  end
@@ -10,17 +10,26 @@ module BBServer
10
10
  def execute(context)
11
11
  chain = @middlewares.dup
12
12
 
13
- process = proc do |ctx|
14
- if chain.empty?
15
- handler = @handler_class.new(ctx)
16
- handler.handle
17
- else
18
- middleware = chain.shift
19
- middleware.call(ctx, process)
13
+ executor = Class.new do
14
+ def initialize(chain, handler_class, ctx)
15
+ @chain = chain
16
+ @handler_class = handler_class
17
+ @ctx = ctx
20
18
  end
21
- end
19
+
20
+ def call
21
+ if @chain.empty?
22
+ handler = @handler_class.new(@ctx)
23
+ handler.handle
24
+ else
25
+ middleware_class = @chain.shift.call
26
+ middleware = middleware_class.new(@ctx, self)
27
+ middleware.call
28
+ end
29
+ end
30
+ end.new(chain, @handler_class, context)
22
31
 
23
- process.call(context)
32
+ executor.call
24
33
  end
25
34
  end
26
35
  end
@@ -2,13 +2,14 @@
2
2
 
3
3
  module BBServer
4
4
  class HttpContext
5
- attr_reader :request, :response, :server_context, :params
5
+ attr_reader :request, :response, :server_context, :params, :locals
6
6
 
7
7
  def initialize(server_context, request, response, params)
8
8
  @server_context = server_context
9
9
  @request = request
10
10
  @response = response
11
11
  @params = params
12
+ @locals = ContextLocals.new
12
13
  end
13
14
  end
14
15
  end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BBServer
4
+ class Middleware
5
+ def initialize(context, next_executor)
6
+ @context = context
7
+ @next = next_executor
8
+ end
9
+
10
+ def call()
11
+ @next.call
12
+ end
13
+ end
14
+ end
@@ -11,5 +11,9 @@ module BBServer
11
11
  def body
12
12
  @body ||= env["rack.input"].read
13
13
  end
14
+
15
+ def ip
16
+ env["REMOTE_ADDR"]
17
+ end
14
18
  end
15
19
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module BBServer
4
- VERSION = "0.3.0"
4
+ VERSION = "0.4.0"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bbserver
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Juliano Soares da Silva
@@ -81,6 +81,7 @@ files:
81
81
  - lib/bbserver/handler.rb
82
82
  - lib/bbserver/handlers/not_found_handler.rb
83
83
  - lib/bbserver/http_context.rb
84
+ - lib/bbserver/middleware.rb
84
85
  - lib/bbserver/params.rb
85
86
  - lib/bbserver/request.rb
86
87
  - lib/bbserver/response.rb