glogin 0.14.0 → 0.14.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 276e84fbfff7c015118724369f25d3d5da61fae762762cf96c5bd53fc1bbf7b0
4
- data.tar.gz: 445af8bffcb5359e4e8170b7b9abe0596d28b538b0f07bde510245a0e03b4196
3
+ metadata.gz: 43ce4ccebe57a06bb860c407b9e96dc939932f952aa2a6c4951a64f79a5f34c7
4
+ data.tar.gz: 65854ae4920a4ff27bd67bcf7cf34d8222be36398639bd82b013fa73b94700a5
5
5
  SHA512:
6
- metadata.gz: 466d1bdf480926b5b25d088560df94937adfa0c16a4156aaed125a5c37283d0ae3c2f4bcef8c0a3fc56d55802a198f43885557d528c941c1b257dec7ce7df02b
7
- data.tar.gz: f9ffc87fc989b4969e4dcc96d10398ff7702f947f910048d56545bb6db0fb69b15f0752ad08549036e4ad8933c0fdd2c4ae6a835383d0f60edd052ba45c27cbe
6
+ metadata.gz: c36870984ff3f36eb946b5bbb5273bc4f3633332651bd180196d1b172c7782248583285a0e3c9ae499205d45b6a45bb6e19910b7fb6ca8a455b0b2af8934c457
7
+ data.tar.gz: 456ef6a6e5329d490d2195c58d3c8c007e23f6326f4535d362b04898451009926a5226baa384342b8dd889f6e00c17b8ef595d85e7a0e0fd5fa4a06c69324642
data/Gemfile CHANGED
@@ -24,7 +24,7 @@
24
24
  source 'https://rubygems.org'
25
25
  gemspec
26
26
 
27
- gem 'minitest', '5.20.0', require: false
27
+ gem 'minitest', '5.21.2', require: false
28
28
  gem 'rake', '13.1.0', require: false
29
29
  gem 'rdoc', '6.6.1', require: false
30
30
  gem 'rspec-rails', '6.1.0', require: false
data/lib/glogin/auth.rb CHANGED
@@ -56,9 +56,9 @@ module GLogin
56
56
  if @secret.empty?
57
57
  return {
58
58
  'id' => 526_301,
59
- 'type' => 'User',
60
59
  'login' => 'yegor256',
61
- 'avatar_url' => 'https://github.com/yegor256.png'
60
+ 'avatar_url' => 'https://github.com/yegor256.png',
61
+ 'bearer' => ''
62
62
  }
63
63
  end
64
64
  raise 'Code can\'t be nil' if code.nil?
data/lib/glogin/cookie.rb CHANGED
@@ -39,19 +39,29 @@ module GLogin
39
39
  #
40
40
  class Cookie
41
41
  # Closed cookie.
42
+ #
43
+ # An instance of this class is created when a cookie arrives
44
+ # to the application. The cookie text is provided to the class
45
+ # as the first parameter. Then, when an instance of the class
46
+ # is created, the value encypted inside the cookie text may
47
+ # be retrieved through the +to_user+ method.
42
48
  class Closed
43
49
  def initialize(text, secret, context = '')
44
50
  raise 'Text can\'t be nil' if text.nil?
45
51
  @text = text
46
52
  raise 'Secret can\'t be nil' if secret.nil?
47
53
  @secret = secret
54
+ raise 'Context can\'t be nil' if context.nil?
48
55
  @context = context.to_s
49
56
  end
50
57
 
51
- # Returns a hash with two elements: login and avatar.
52
- # If the secret is empty, the text will be returned, without
53
- # any decryption. If the data is not valid, an exception
54
- # GLogin::Codec::DecodingError will be raised, which you have
58
+ # Returns a hash with four elements: `id`, `login`, `avatar`, and `bearer`.
59
+ #
60
+ # If the `secret` is empty, the text will not be decrypted, but used
61
+ # "as is". This may be helpful during testing.
62
+ #
63
+ # If the data is not valid, an exception
64
+ # `GLogin::Codec::DecodingError` will be raised, which you have
55
65
  # to catch in your applicaiton and ignore the login attempt.
56
66
  def to_user
57
67
  plain = Codec.new(@secret).decrypt(@text)
@@ -68,12 +78,24 @@ module GLogin
68
78
 
69
79
  # Open
70
80
  class Open
71
- # Here comes the JSON you receive from Auth.user()
81
+ # Here comes the JSON you receive from Auth.user().
82
+ #
83
+ # The JSON is a Hash where every key is a string. When the class is instantiated,
84
+ # its methods +id+, +login+, and +avatar_url+ may be used to retrieve
85
+ # the data inside the JSON, but this is not what this class is mainly about.
86
+ #
87
+ # The method +to_s+ returns an encrypted cookie string, that may be
88
+ # sent to the user as a +Set-Cookie+ HTTP header.
72
89
  def initialize(json, secret, context = '')
73
90
  raise 'JSON can\'t be nil' if json.nil?
91
+ raise 'JSON must contain "id" key' if json['id'].nil?
92
+ raise 'JSON must contain "login" key' if json['login'].nil?
93
+ raise 'JSON must contain "avatar_url" key' if json['avatar_url'].nil?
94
+ raise 'JSON must contain "bearer" key' if json['bearer'].nil?
74
95
  @json = json
75
96
  raise 'Secret can\'t be nil' if secret.nil?
76
97
  @secret = secret
98
+ raise 'Context can\'t be nil' if context.nil?
77
99
  @context = context.to_s
78
100
  end
79
101
 
@@ -26,5 +26,5 @@
26
26
  # Copyright:: Copyright (c) 2017-2024 Yegor Bugayenko
27
27
  # License:: MIT
28
28
  module GLogin
29
- VERSION = '0.14.0'
29
+ VERSION = '0.14.1'
30
30
  end
@@ -31,7 +31,7 @@ class TestCookie < Minitest::Test
31
31
  GLogin::Cookie::Open.new(
32
32
  JSON.parse(
33
33
  "{\"id\":\"123\",
34
- \"login\":\"yegor256\",
34
+ \"login\":\"yegor256\",\"bearer\":\"\",
35
35
  \"avatar_url\":\"https://avatars1.githubusercontent.com/u/526301\"}"
36
36
  ),
37
37
  secret
@@ -47,7 +47,7 @@ class TestCookie < Minitest::Test
47
47
  context = '127.0.0.1'
48
48
  user = GLogin::Cookie::Closed.new(
49
49
  GLogin::Cookie::Open.new(
50
- JSON.parse('{"id":"123","login":"jeffrey","avatar_url":"#"}'),
50
+ JSON.parse('{"id":"123","login":"jeffrey","avatar_url":"#","bearer":""}'),
51
51
  secret,
52
52
  context
53
53
  ).to_s,
@@ -81,7 +81,7 @@ class TestCookie < Minitest::Test
81
81
  assert_raises GLogin::Codec::DecodingError do
82
82
  GLogin::Cookie::Closed.new(
83
83
  GLogin::Cookie::Open.new(
84
- JSON.parse('{"login":"x","avatar_url":"x"}'),
84
+ JSON.parse('{"login":"x","avatar_url":"x","id":"1","bearer":""}'),
85
85
  'secret-1'
86
86
  ).to_s,
87
87
  'secret-2'
@@ -94,7 +94,7 @@ class TestCookie < Minitest::Test
94
94
  assert_raises GLogin::Codec::DecodingError do
95
95
  GLogin::Cookie::Closed.new(
96
96
  GLogin::Cookie::Open.new(
97
- JSON.parse('{"login":"x","avatar_url":"x"}'),
97
+ JSON.parse('{"login":"x","avatar_url":"x","id":"999","bearer":""}'),
98
98
  secret,
99
99
  'context-1'
100
100
  ).to_s,
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: glogin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.0
4
+ version: 0.14.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yegor Bugayenko
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-01-19 00:00:00.000000000 Z
11
+ date: 2024-01-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: base58