Class: BetterAuth::Endpoint::Context
- Inherits:
-
Object
- Object
- BetterAuth::Endpoint::Context
- Defined in:
- lib/better_auth/endpoint.rb
Instance Attribute Summary collapse
-
#body ⇒ Object
Returns the value of attribute body.
-
#context ⇒ Object
Returns the value of attribute context.
-
#headers ⇒ Object
Returns the value of attribute headers.
-
#method ⇒ Object
Returns the value of attribute method.
-
#params ⇒ Object
Returns the value of attribute params.
-
#path ⇒ Object
Returns the value of attribute path.
-
#query ⇒ Object
Returns the value of attribute query.
-
#request ⇒ Object
Returns the value of attribute request.
-
#response_headers ⇒ Object
Returns the value of attribute response_headers.
-
#returned ⇒ Object
Returns the value of attribute returned.
-
#status ⇒ Object
Returns the value of attribute status.
Instance Method Summary collapse
- #cookies ⇒ Object
- #error(status, message: nil, headers: {}) ⇒ Object
- #get_cookie(name) ⇒ Object
- #get_signed_cookie(name, secret) ⇒ Object
-
#initialize(path:, method:, query:, body:, params:, headers:, context:, request: nil) ⇒ Context
constructor
A new instance of Context.
- #json(value, status: nil, headers: {}) ⇒ Object
- #merge_context!(data) ⇒ Object
- #redirect(location, status: 302) ⇒ Object
- #set_cookie(name, value, options = {}) ⇒ Object
- #set_header(key, value) ⇒ Object
- #set_signed_cookie(name, value, secret, options = {}) ⇒ Object
- #set_status(value) ⇒ Object
Constructor Details
#initialize(path:, method:, query:, body:, params:, headers:, context:, request: nil) ⇒ Context
Returns a new instance of Context.
174 175 176 177 178 179 180 181 182 183 184 185 186 |
# File 'lib/better_auth/endpoint.rb', line 174 def initialize(path:, method:, query:, body:, params:, headers:, context:, request: nil) @path = path @method = method.to_s.upcase @query = query || {} @body = body || {} @params = params || {} @headers = normalize_headers(headers || {}) @context = context @request = request @status = 200 @response_headers = {} @returned = nil end |
Instance Attribute Details
#body ⇒ Object
Returns the value of attribute body.
162 163 164 |
# File 'lib/better_auth/endpoint.rb', line 162 def body @body end |
#context ⇒ Object
Returns the value of attribute context.
162 163 164 |
# File 'lib/better_auth/endpoint.rb', line 162 def context @context end |
#headers ⇒ Object
Returns the value of attribute headers.
162 163 164 |
# File 'lib/better_auth/endpoint.rb', line 162 def headers @headers end |
#method ⇒ Object
Returns the value of attribute method.
162 163 164 |
# File 'lib/better_auth/endpoint.rb', line 162 def method @method end |
#params ⇒ Object
Returns the value of attribute params.
162 163 164 |
# File 'lib/better_auth/endpoint.rb', line 162 def params @params end |
#path ⇒ Object
Returns the value of attribute path.
162 163 164 |
# File 'lib/better_auth/endpoint.rb', line 162 def path @path end |
#query ⇒ Object
Returns the value of attribute query.
162 163 164 |
# File 'lib/better_auth/endpoint.rb', line 162 def query @query end |
#request ⇒ Object
Returns the value of attribute request.
162 163 164 |
# File 'lib/better_auth/endpoint.rb', line 162 def request @request end |
#response_headers ⇒ Object
Returns the value of attribute response_headers.
162 163 164 |
# File 'lib/better_auth/endpoint.rb', line 162 def response_headers @response_headers end |
#returned ⇒ Object
Returns the value of attribute returned.
162 163 164 |
# File 'lib/better_auth/endpoint.rb', line 162 def returned @returned end |
#status ⇒ Object
Returns the value of attribute status.
162 163 164 |
# File 'lib/better_auth/endpoint.rb', line 162 def status @status end |
Instance Method Details
#cookies ⇒ Object
212 213 214 |
# File 'lib/better_auth/endpoint.rb', line 212 def BetterAuth::Cookies.(headers["cookie"]) end |
#error(status, message: nil, headers: {}) ⇒ Object
237 238 239 |
# File 'lib/better_auth/endpoint.rb', line 237 def error(status, message: nil, headers: {}) APIError.new(status, message: , headers: headers) end |
#get_cookie(name) ⇒ Object
208 209 210 |
# File 'lib/better_auth/endpoint.rb', line 208 def (name) [name.to_s] end |
#get_signed_cookie(name, secret) ⇒ Object
221 222 223 224 225 226 227 228 229 |
# File 'lib/better_auth/endpoint.rb', line 221 def (name, secret) value = (name) return nil unless value payload, signature = value.rpartition(".").values_at(0, 2) return nil if payload.empty? || signature.empty? BetterAuth::Crypto.verify_hmac_signature(payload, signature, secret, encoding: :base64url) ? payload : nil end |
#json(value, status: nil, headers: {}) ⇒ Object
231 232 233 234 235 |
# File 'lib/better_auth/endpoint.rb', line 231 def json(value, status: nil, headers: {}) set_status(status) if status headers.each { |key, header_value| set_header(key, header_value) } Result.new(response: value, status: self.status, headers: response_headers) end |
#merge_context!(data) ⇒ Object
246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 |
# File 'lib/better_auth/endpoint.rb', line 246 def merge_context!(data) data.each do |key, value| case key.to_sym when :query @query = deep_merge(query, value) when :body @body = deep_merge(body, value) when :params @params = deep_merge(params, value) when :headers @headers = normalize_headers(deep_merge(headers, value)) else public_send("#{key}=", value) if respond_to?("#{key}=") end end end |
#redirect(location, status: 302) ⇒ Object
241 242 243 244 |
# File 'lib/better_auth/endpoint.rb', line 241 def redirect(location, status: 302) code = (status == 302) ? "FOUND" : status APIError.new(code, message: "Redirect", headers: {"location" => location}) end |
#set_cookie(name, value, options = {}) ⇒ Object
202 203 204 205 206 |
# File 'lib/better_auth/endpoint.rb', line 202 def (name, value, = {}) attributes = () = (["#{name}=#{value}"] + attributes).join("; ") set_header("set-cookie", ) end |
#set_header(key, value) ⇒ Object
192 193 194 195 196 197 198 199 200 |
# File 'lib/better_auth/endpoint.rb', line 192 def set_header(key, value) normalized = safe_header_name(key) safe_value = safe_header_value(value) response_headers[normalized] = if normalized == "set-cookie" && response_headers[normalized] [response_headers[normalized], safe_value].join("\n") else safe_value end end |
#set_signed_cookie(name, value, secret, options = {}) ⇒ Object
216 217 218 219 |
# File 'lib/better_auth/endpoint.rb', line 216 def (name, value, secret, = {}) signature = BetterAuth::Crypto.hmac_signature(value, secret, encoding: :base64url) (name, "#{value}.#{signature}", ) end |
#set_status(value) ⇒ Object
188 189 190 |
# File 'lib/better_auth/endpoint.rb', line 188 def set_status(value) @status = value end |