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"
- 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.
25
26
27
|
# File 'lib/sidekiq/web/application.rb', line 25
def initialize(klass)
@klass = klass
end
|
Class Method Details
.after(path = nil, &block) ⇒ Object
332
333
334
|
# File 'lib/sidekiq/web/application.rb', line 332
def self.after(path = nil, &block)
afters << [path && Regexp.new("\\A#{path.gsub("*", ".*")}\\z"), block]
end
|
.afters ⇒ Object
353
354
355
|
# File 'lib/sidekiq/web/application.rb', line 353
def self.afters
@afters ||= []
end
|
.before(path = nil, &block) ⇒ Object
328
329
330
|
# File 'lib/sidekiq/web/application.rb', line 328
def self.before(path = nil, &block)
befores << [path && Regexp.new("\\A#{path.gsub("*", ".*")}\\z"), block]
end
|
.befores ⇒ Object
349
350
351
|
# File 'lib/sidekiq/web/application.rb', line 349
def self.befores
@befores ||= []
end
|
.helpers(mod = nil, &block) ⇒ Object
320
321
322
323
324
325
326
|
# File 'lib/sidekiq/web/application.rb', line 320
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
340
341
342
|
# File 'lib/sidekiq/web/application.rb', line 340
def self.run_afters(app, action)
run_hooks(afters, app, action)
end
|
.run_befores(app, action) ⇒ Object
336
337
338
|
# File 'lib/sidekiq/web/application.rb', line 336
def self.run_befores(app, action)
run_hooks(befores, app, action)
end
|
.run_hooks(hooks, app, action) ⇒ Object
344
345
346
347
|
# File 'lib/sidekiq/web/application.rb', line 344
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
41
42
43
|
# File 'lib/sidekiq/web/application.rb', line 41
def self.set(key, val)
end
|
.settings ⇒ Object
33
34
35
|
# File 'lib/sidekiq/web/application.rb', line 33
def self.settings
Sidekiq::Web.settings
end
|
.tabs ⇒ Object
37
38
39
|
# File 'lib/sidekiq/web/application.rb', line 37
def self.tabs
Sidekiq::Web.tabs
end
|
Instance Method Details
#call(env) ⇒ Object
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
315
316
317
318
|
# File 'lib/sidekiq/web/application.rb', line 289
def call(env)
action = self.class.match(env)
return [404, {"Content-Type" => "text/plain", "X-Cascade" => "pass"}, ["Not Found"]] unless action
app = @klass
resp = catch(:halt) do self.class.run_befores(app, action)
action.instance_exec env, &action.block
ensure
self.class.run_afters(app, action)
end
resp = case resp
when Array
resp
else
= {
"Content-Type" => "text/html",
"Cache-Control" => "no-cache",
"Content-Language" => action.locale,
"Content-Security-Policy" => CSP_HEADER
}
[200, , [resp]]
end
resp
end
|
#settings ⇒ Object
29
30
31
|
# File 'lib/sidekiq/web/application.rb', line 29
def settings
@klass.settings
end
|