Class: Webhookdb::Service

Inherits:
Grape::API
  • Object
show all
Extended by:
MethodUtilities
Includes:
Appydays::Configurable, Appydays::Loggable
Defined in:
lib/webhookdb/service.rb

Overview

Service is the base class for all endpoint/resource classes.

Defined Under Namespace

Modules: Entities, Helpers, Middleware, Types, Validators, ViewApi Classes: Auth, Collection

Constant Summary collapse

"webhookdb.session"
AUTH_TOKEN_HEADER =
"Whdb-Auth-Token"
AUTH_TOKEN_HTTP =
"HTTP_WHDB_AUTH_TOKEN"
SHORT_SESSION_HEADER =
"Whdb-Short-Session"
SHORT_SESSION_HTTP =
"HTTP_WHDB_SHORT_SESSION"
DEFAULT_CORS_ORIGINS =
[/localhost:\d+/, /192\.168\.\d{1,3}\.\d{1,3}:\d{3,5}/].freeze

Class Method Summary collapse

Methods included from MethodUtilities

attr_predicate, attr_predicate_accessor, singleton_attr_accessor, singleton_attr_reader, singleton_attr_writer, singleton_method_alias, singleton_predicate_accessor, singleton_predicate_reader

Class Method Details

.build_appObject

Build the Rack app according to the configured environment.



83
84
85
86
87
88
89
90
# File 'lib/webhookdb/service.rb', line 83

def self.build_app
  inner_app = self
  builder = Rack::Builder.new do
    Webhookdb::Service::Middleware.add_middlewares(self)
    run inner_app
  end
  return builder.to_app
end

Return the config for the Rack::Session::Cookie middleware.



65
66
67
68
69
70
71
72
73
74
# File 'lib/webhookdb/service.rb', line 65

def self.cookie_config
  return {
    key: Webhookdb::Service::SESSION_COOKIE,
    domain: Webhookdb::Service.cookie_domain,
    path: "/",
    expire_after: Webhookdb::Service.max_session_age,
    secret: Webhookdb::Service.session_secret,
    coder: Rack::Session::Cookie::Base64::ZipJSON.new,
  }
end


76
77
78
79
80
# File 'lib/webhookdb/service.rb', line 76

def self.decode_cookie(s)
  cfg = self.cookie_config
  s = s.delete_prefix(cfg[:key] + "=")
  return cfg[:coder].decode(Rack::Utils.unescape(s))
end

.error_body(status, message, code: nil, more: {}) ⇒ Object



92
93
94
95
96
97
98
99
# File 'lib/webhookdb/service.rb', line 92

def self.error_body(status, message, code: nil, more: {})
  error = more.merge(
    message:,
    status:,
  )
  error[:code] = code unless code.nil?
  return {error:}
end