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
334
335
336
|
# File 'lib/sidekiq/web/application.rb', line 334
def self.after(path = nil, &block)
afters << [path && Regexp.new("\\A#{path.gsub("*", ".*")}\\z"), block]
end
|
.afters ⇒ Object
355
356
357
|
# File 'lib/sidekiq/web/application.rb', line 355
def self.afters
@afters ||= []
end
|
.before(path = nil, &block) ⇒ Object
330
331
332
|
# File 'lib/sidekiq/web/application.rb', line 330
def self.before(path = nil, &block)
befores << [path && Regexp.new("\\A#{path.gsub("*", ".*")}\\z"), block]
end
|
.befores ⇒ Object
351
352
353
|
# File 'lib/sidekiq/web/application.rb', line 351
def self.befores
@befores ||= []
end
|
.helpers(mod = nil, &block) ⇒ Object
322
323
324
325
326
327
328
|
# File 'lib/sidekiq/web/application.rb', line 322
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
342
343
344
|
# File 'lib/sidekiq/web/application.rb', line 342
def self.run_afters(app, action)
run_hooks(afters, app, action)
end
|
.run_befores(app, action) ⇒ Object
338
339
340
|
# File 'lib/sidekiq/web/application.rb', line 338
def self.run_befores(app, action)
run_hooks(befores, app, action)
end
|
.run_hooks(hooks, app, action) ⇒ Object
346
347
348
349
|
# File 'lib/sidekiq/web/application.rb', line 346
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
319
320
|
# 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[1] = resp[1].dup
resp[1][CONTENT_LENGTH] = resp[2].sum(&:bytesize).to_s
resp
end
|
#settings ⇒ Object
29
30
31
|
# File 'lib/sidekiq/web/application.rb', line 29
def settings
@klass.settings
end
|