Class: Sidekiq::WebApplication
- Inherits:
-
Object
- Object
- Sidekiq::WebApplication
show all
- Extended by:
- WebRouter
- Defined in:
- lib/sidekiq/web/application.rb
Constant Summary
collapse
- CONTENT_LENGTH =
"Content-Length"
- CONTENT_TYPE =
"Content-Type"
- REDIS_KEYS =
%w(redis_version uptime_in_days connected_clients used_memory_human used_memory_peak_human)
[
"default-src 'self' https: http:",
"child-src 'self'",
"connect-src 'self' https: http: wss: ws:",
"font-src 'self' https: http:",
"frame-src 'self'",
"img-src 'self' https: http: data:",
"manifest-src 'self'",
"media-src 'self'",
"object-src 'none'",
"script-src 'self' https: http: 'unsafe-inline'",
"style-src 'self' https: http: 'unsafe-inline'",
"worker-src 'self'",
"base-uri 'self'"
].join('; ').freeze
Constants included
from WebRouter
Sidekiq::WebRouter::DELETE, Sidekiq::WebRouter::GET, Sidekiq::WebRouter::HEAD, Sidekiq::WebRouter::PATCH, Sidekiq::WebRouter::PATH_INFO, Sidekiq::WebRouter::POST, Sidekiq::WebRouter::PUT, Sidekiq::WebRouter::REQUEST_METHOD, Sidekiq::WebRouter::ROUTE_PARAMS
Class Method Summary
collapse
Instance Method Summary
collapse
Methods included from WebRouter
delete, get, match, patch, post, put, route
Constructor Details
Returns a new instance of WebApplication.
26
27
28
|
# File 'lib/sidekiq/web/application.rb', line 26
def initialize(klass)
@klass = klass
end
|
Class Method Details
.after(path = nil, &block) ⇒ Object
328
329
330
|
# File 'lib/sidekiq/web/application.rb', line 328
def self.after(path=nil, &block)
afters << [path && Regexp.new("\\A#{path.gsub("*", ".*")}\\z"), block]
end
|
.afters ⇒ Object
349
350
351
|
# File 'lib/sidekiq/web/application.rb', line 349
def self.afters
@afters ||= []
end
|
.before(path = nil, &block) ⇒ Object
324
325
326
|
# File 'lib/sidekiq/web/application.rb', line 324
def self.before(path=nil, &block)
befores << [path && Regexp.new("\\A#{path.gsub("*", ".*")}\\z"), block]
end
|
.befores ⇒ Object
345
346
347
|
# File 'lib/sidekiq/web/application.rb', line 345
def self.befores
@befores ||= []
end
|
.helpers(mod = nil, &block) ⇒ Object
316
317
318
319
320
321
322
|
# File 'lib/sidekiq/web/application.rb', line 316
def self.helpers(mod=nil, &block)
if block_given?
WebAction.class_eval(&block)
else
WebAction.send(:include, mod)
end
end
|
.run_afters(app, action) ⇒ Object
336
337
338
|
# File 'lib/sidekiq/web/application.rb', line 336
def self.run_afters(app, action)
run_hooks(afters, app, action)
end
|
.run_befores(app, action) ⇒ Object
332
333
334
|
# File 'lib/sidekiq/web/application.rb', line 332
def self.run_befores(app, action)
run_hooks(befores, app, action)
end
|
.run_hooks(hooks, app, action) ⇒ Object
340
341
342
343
|
# File 'lib/sidekiq/web/application.rb', line 340
def self.run_hooks(hooks, app, action)
hooks.select { |p,_| !p || p =~ action.env[WebRouter::PATH_INFO] }.
each {|_,b| action.instance_exec(action.env, app, &b) }
end
|
.set(key, val) ⇒ Object
42
43
44
|
# File 'lib/sidekiq/web/application.rb', line 42
def self.set(key, val)
end
|
.settings ⇒ Object
34
35
36
|
# File 'lib/sidekiq/web/application.rb', line 34
def self.settings
Sidekiq::Web.settings
end
|
.tabs ⇒ Object
38
39
40
|
# File 'lib/sidekiq/web/application.rb', line 38
def self.tabs
Sidekiq::Web.tabs
end
|
Instance Method Details
#call(env) ⇒ Object
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
|
# File 'lib/sidekiq/web/application.rb', line 279
def call(env)
action = self.class.match(env)
return [404, {"Content-Type" => "text/plain", "X-Cascade" => "pass" }, ["Not Found"]] unless action
resp = catch(:halt) do
app = @klass
self.class.run_befores(app, action)
begin
resp = action.instance_exec env, &action.block
ensure
self.class.run_afters(app, action)
end
resp
end
resp = case resp
when Array
resp
else
= {
"Content-Type" => "text/html",
"Cache-Control" => "no-cache",
"Content-Language" => action.locale,
"Content-Security-Policy" =>
}
[200, , [resp]]
end
resp[1] = resp[1].dup
resp[1][CONTENT_LENGTH] = resp[2].inject(0) { |l, p| l + p.bytesize }.to_s
resp
end
|
#settings ⇒ Object
30
31
32
|
# File 'lib/sidekiq/web/application.rb', line 30
def settings
@klass.settings
end
|