Module: Himari::Storages::Base

Included in:
Filesystem, Memory
Defined in:
lib/himari/storages/base.rb

Defined Under Namespace

Classes: Conflict

Instance Method Summary collapse

Instance Method Details

#delete_authorization(authz) ⇒ Object



23
24
25
# File 'lib/himari/storages/base.rb', line 23

def delete_authorization(authz)
  delete_authorization_by_code(authz.code)
end

#delete_authorization_by_code(code) ⇒ Object



27
28
29
# File 'lib/himari/storages/base.rb', line 27

def delete_authorization_by_code(code)
  delete('authz', code)
end

#delete_dynamic_client(client) ⇒ Object



81
82
83
# File 'lib/himari/storages/base.rb', line 81

def delete_dynamic_client(client)
  delete_dynamic_client_by_id(client.id)
end

#delete_dynamic_client_by_id(id) ⇒ Object



85
86
87
# File 'lib/himari/storages/base.rb', line 85

def delete_dynamic_client_by_id(id)
  delete('dynamic_client', id)
end

#delete_refresh_token(token) ⇒ Object



60
61
62
# File 'lib/himari/storages/base.rb', line 60

def delete_refresh_token(token)
  delete_refresh_token_by_handle(token.handle)
end

#delete_refresh_token_by_handle(handle) ⇒ Object



64
65
66
# File 'lib/himari/storages/base.rb', line 64

def delete_refresh_token_by_handle(handle)
  delete('refresh', handle)
end

#delete_session(session) ⇒ Object



98
99
100
# File 'lib/himari/storages/base.rb', line 98

def delete_session(session)
  delete_session_by_handle(session.handle)
end

#delete_session_by_handle(handle) ⇒ Object



102
103
104
# File 'lib/himari/storages/base.rb', line 102

def delete_session_by_handle(handle)
  delete('session', handle)
end

#delete_token(token) ⇒ Object



41
42
43
# File 'lib/himari/storages/base.rb', line 41

def delete_token(token)
  delete_authorization_by_token(token.handle)
end

#delete_token_by_handle(handle) ⇒ Object



45
46
47
# File 'lib/himari/storages/base.rb', line 45

def delete_token_by_handle(handle)
  delete('token', handle)
end

#find_authorization(code) ⇒ Object



14
15
16
17
# File 'lib/himari/storages/base.rb', line 14

def find_authorization(code)
  content = read('authz', code)
  content && AuthorizationCode.new(**content)
end

#find_dynamic_client(id) ⇒ Object



68
69
70
71
72
73
74
75
# File 'lib/himari/storages/base.rb', line 68

def find_dynamic_client(id)
  # ids are server-generated url-safe base64; reject anything else before it reaches a
  # storage key (defense-in-depth against path traversal on filesystem-backed storage).
  return unless id.is_a?(String) && id.match?(/\A[A-Za-z0-9_-]+\z/)

  content = read('dynamic_client', id)
  content && DynamicClientRegistration.from_json(content)
end

#find_refresh_token(handle) ⇒ Object



49
50
51
52
# File 'lib/himari/storages/base.rb', line 49

def find_refresh_token(handle)
  content = read('refresh', handle)
  content && RefreshToken.new(**content)
end

#find_session(handle) ⇒ Object



89
90
91
92
# File 'lib/himari/storages/base.rb', line 89

def find_session(handle)
  content = read('session', handle)
  content && SessionData.new(**content)
end

#find_token(handle) ⇒ Object



31
32
33
34
35
# File 'lib/himari/storages/base.rb', line 31

def find_token(handle)
  content = read('token', handle)
  content[:handle] = content.delete(:handle) if content.key?(:handler) # compat
  content && AccessToken.new(**content)
end

#put_authorization(authz, overwrite: false) ⇒ Object



19
20
21
# File 'lib/himari/storages/base.rb', line 19

def put_authorization(authz, overwrite: false)
  write('authz', authz.code, authz.as_json, overwrite: overwrite)
end

#put_dynamic_client(client, overwrite: false) ⇒ Object



77
78
79
# File 'lib/himari/storages/base.rb', line 77

def put_dynamic_client(client, overwrite: false)
  write('dynamic_client', client.id, client.as_json, overwrite: overwrite)
end

#put_refresh_token(token, overwrite: false, if_version: nil) ⇒ Object

Parameters:

  • if_version (Integer, nil) (defaults to: nil)

    when given, only write if the stored record’s version equals this value (compare-and-swap); raises Conflict otherwise.



56
57
58
# File 'lib/himari/storages/base.rb', line 56

def put_refresh_token(token, overwrite: false, if_version: nil)
  write('refresh', token.handle, token.as_json, overwrite: overwrite, if_version: if_version)
end

#put_session(session, overwrite: false) ⇒ Object



94
95
96
# File 'lib/himari/storages/base.rb', line 94

def put_session(session, overwrite: false)
  write('session', session.handle, session.as_json, overwrite: overwrite)
end

#put_token(token, overwrite: false) ⇒ Object



37
38
39
# File 'lib/himari/storages/base.rb', line 37

def put_token(token, overwrite: false)
  write('token', token.handle, token.as_json, overwrite: overwrite)
end