glogin 0.9.0 → 0.11.0

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: 4cc141a23e15b0f3ab7b965b281e0af9f0b62d35d4d6e4bfe7f08126f5fd15a8
4
- data.tar.gz: f1c8f19028513466cc34370655d07d2a9eb0036ee12d36a191c0f46c5e8b89d2
3
+ metadata.gz: 47dc331e9d98417c38d66ddbeae5b6424284ede02d5a9e1680bc1c3eba6dd3f2
4
+ data.tar.gz: abaa0b7082a1b641a21b1c5828e8ff775cefe0bd78bae72f01d8a5592098ea00
5
5
  SHA512:
6
- metadata.gz: '0639b3241684fb1b20c81e0008f1e4366c579acedb4fa5fede72c0920b9e9c6b9b3f8a7a6cae4a63eb49f394ad7592e86f7a11b7dca1765795cdd4e5c9908266'
7
- data.tar.gz: 584d6a182b189286a3a2feb9559e9decdf5a0821aa3a62241c4b71373201b348c12969f2afd72352f5e81c27ce629929dbc17f1aa1832dc0a095973aa5d9144f
6
+ metadata.gz: 9212904c0f496ae545e401e995bc4d1e47e23c9c0d6644fda205a2cad7e46160244417455a3333501c8e542a2707985aea87319dd3fe7982b4b72a2e2d30fb9b
7
+ data.tar.gz: e093b8ef78894ac6350d8b36f5cacd4251c04957a85b8742d0bd4c7170ff064f77da087172590c5f8715dbb6ba04efd887fa8f4c0821d8c7690d01f280f9a90c
@@ -6,10 +6,10 @@ on:
6
6
  - master
7
7
  jobs:
8
8
  codecov:
9
- runs-on: ubuntu-latest
9
+ runs-on: ubuntu-20.04
10
10
  steps:
11
11
  - uses: actions/checkout@v3
12
- - uses: actions/setup-ruby@v1
12
+ - uses: ruby/setup-ruby@v1
13
13
  with:
14
14
  ruby-version: 2.7
15
15
  - run: bundle update
@@ -0,0 +1,11 @@
1
+ ---
2
+ name: pdd
3
+ on:
4
+ push:
5
+ pull_request:
6
+ jobs:
7
+ pdd:
8
+ runs-on: ubuntu-20.04
9
+ steps:
10
+ - uses: actions/checkout@v3
11
+ - uses: g4s8/pdd-action@master
@@ -12,12 +12,12 @@ jobs:
12
12
  name: test
13
13
  strategy:
14
14
  matrix:
15
- os: [ubuntu-latest, macos-latest]
16
- ruby: [2.7]
15
+ os: [ubuntu-20.04, macos-12]
16
+ ruby: [2.7, 3.2]
17
17
  runs-on: ${{ matrix.os }}
18
18
  steps:
19
19
  - uses: actions/checkout@v3
20
- - uses: actions/setup-ruby@v1
20
+ - uses: ruby/setup-ruby@v1
21
21
  with:
22
22
  ruby-version: ${{ matrix.ruby }}
23
23
  - run: bundle update
@@ -0,0 +1,11 @@
1
+ ---
2
+ name: xcop
3
+ on:
4
+ push:
5
+ pull_request:
6
+ jobs:
7
+ xcop:
8
+ runs-on: ubuntu-20.04
9
+ steps:
10
+ - uses: actions/checkout@v3
11
+ - uses: g4s8/xcop-action@master
data/.rultor.yml CHANGED
@@ -1,11 +1,13 @@
1
1
  docker:
2
- image: yegor256/rultor-image:1.9.0
2
+ image: yegor256/rultor-image:1.19.0
3
3
  assets:
4
4
  rubygems.yml: yegor256/home#assets/rubygems.yml
5
5
  install: |
6
+ sudo gem install openssl -- --with-openssl-dir=/usr/local/rvm/rubies/ruby-3.0.1/lib/ruby/3.0.0/openssl
6
7
  pdd -f /dev/null
7
8
  sudo bundle install --no-color "--gemfile=$(pwd)/Gemfile"
8
9
  release:
10
+ pre: false
9
11
  script: |-
10
12
  [[ "${tag}" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] || exit -1
11
13
  bundle exec rake
@@ -19,7 +21,3 @@ release:
19
21
  merge:
20
22
  script: |-
21
23
  bundle exec rake
22
- deploy:
23
- script: |-
24
- echo "There is nothing to deploy"
25
- exit -1
data/.simplecov CHANGED
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  #
4
- # Copyright (c) 2017-2022 Yegor Bugayenko
4
+ # Copyright (c) 2017-2023 Yegor Bugayenko
5
5
  #
6
6
  # Permission is hereby granted, free of charge, to any person obtaining a copy
7
7
  # of this software and associated documentation files (the 'Software'), to deal
data/Gemfile CHANGED
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  #
4
- # Copyright (c) 2017-2022 Yegor Bugayenko
4
+ # Copyright (c) 2017-2023 Yegor Bugayenko
5
5
  #
6
6
  # Permission is hereby granted, free of charge, to any person obtaining a copy
7
7
  # of this software and associated documentation files (the 'Software'), to deal
@@ -22,5 +22,13 @@
22
22
  # SOFTWARE.
23
23
 
24
24
  source 'https://rubygems.org'
25
- ruby '~>2.3'
26
25
  gemspec
26
+
27
+ gem 'minitest', '5.18.0', require: false
28
+ gem 'rake', '13.0.6', require: false
29
+ gem 'rdoc', '6.5.0', require: false
30
+ gem 'rspec-rails', '5.1.2', require: false
31
+ gem 'rubocop', '1.51.0', require: false
32
+ gem 'rubocop-rspec', '2.22.0', require: false
33
+ gem 'simplecov', '0.22.0', require: false
34
+ gem 'webmock', '3.18.1', require: false
data/LICENSE.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  (The MIT License)
2
2
 
3
- Copyright (c) 2017-2022 Yegor Bugayenko
3
+ Copyright (c) 2017-2023 Yegor Bugayenko
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the 'Software'), to deal
data/README.md CHANGED
@@ -1,6 +1,5 @@
1
1
  <img src="/logo.svg" width="64px" height="64px"/>
2
2
 
3
- [![Managed by Zerocracy](https://www.0crat.com/badge/C3RFVLU72.svg)](https://www.0crat.com/p/C3RFVLU72)
4
3
  [![DevOps By Rultor.com](http://www.rultor.com/b/yegor256/glogin)](http://www.rultor.com/p/yegor256/glogin)
5
4
  [![We recommend RubyMine](https://www.elegantobjects.org/rubymine.svg)](https://www.jetbrains.com/ruby/)
6
5
 
@@ -10,7 +9,6 @@
10
9
  [![Maintainability](https://api.codeclimate.com/v1/badges/155f86b639d155259219/maintainability)](https://codeclimate.com/github/yegor256/glogin/maintainability)
11
10
  [![Test Coverage](https://img.shields.io/codecov/c/github/yegor256/glogin.svg)](https://codecov.io/github/yegor256/glogin?branch=master)
12
11
  [![Yard Docs](http://img.shields.io/badge/yard-docs-blue.svg)](http://rubydoc.info/github/yegor256/glogin/master/frames)
13
-
14
12
  ![Lines of code](https://img.shields.io/tokei/lines/github/yegor256/glogin)
15
13
  [![Hits-of-Code](https://hitsofcode.com/github/yegor256/glogin)](https://hitsofcode.com/view/github/yegor256/glogin)
16
14
  [![License](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/yegor256/glogin/blob/master/LICENSE.txt)
data/Rakefile CHANGED
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  #
4
- # Copyright (c) 2017-2022 Yegor Bugayenko
4
+ # Copyright (c) 2017-2023 Yegor Bugayenko
5
5
  #
6
6
  # Permission is hereby granted, free of charge, to any person obtaining a copy
7
7
  # of this software and associated documentation files (the 'Software'), to deal
data/glogin.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2017-2022 Yegor Bugayenko
3
+ # Copyright (c) 2017-2023 Yegor Bugayenko
4
4
  #
5
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  # of this software and associated documentation files (the 'Software'), to deal
@@ -41,14 +41,7 @@ Gem::Specification.new do |s|
41
41
  s.executables = s.files.grep(%r{^bin/}) { |f| File.basename(f) }
42
42
  s.rdoc_options = ['--charset=UTF-8']
43
43
  s.extra_rdoc_files = ['README.md', 'LICENSE.txt']
44
- s.add_runtime_dependency 'base58', '0.2.3'
45
- s.add_development_dependency 'codecov', '0.6.0'
46
- s.add_development_dependency 'minitest', '5.16.1'
47
- s.add_development_dependency 'rake', '13.0.6'
48
- s.add_development_dependency 'rdoc', '6.4.0'
49
- s.add_development_dependency 'rspec-rails', '5.1.2'
50
- s.add_development_dependency 'rubocop', '1.31.1'
51
- s.add_development_dependency 'rubocop-rspec', '2.11.1'
52
- s.add_development_dependency 'webmock', '3.14.0'
44
+ s.add_runtime_dependency 'base58', '~>0.2'
45
+ s.add_runtime_dependency 'openssl', '~>3.1'
53
46
  s.metadata['rubygems_mfa_required'] = 'true'
54
47
  end
data/lib/glogin/auth.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  #
4
- # Copyright (c) 2017-2022 Yegor Bugayenko
4
+ # Copyright (c) 2017-2023 Yegor Bugayenko
5
5
  #
6
6
  # Permission is hereby granted, free of charge, to any person obtaining a copy
7
7
  # of this software and associated documentation files (the 'Software'), to deal
@@ -28,7 +28,7 @@ require 'cgi'
28
28
 
29
29
  # GLogin main module.
30
30
  # Author:: Yegor Bugayenko (yegor256@gmail.com)
31
- # Copyright:: Copyright (c) 2017-2022 Yegor Bugayenko
31
+ # Copyright:: Copyright (c) 2017-2023 Yegor Bugayenko
32
32
  # License:: MIT
33
33
  module GLogin
34
34
  #
data/lib/glogin/codec.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  #
4
- # Copyright (c) 2017-2022 Yegor Bugayenko
4
+ # Copyright (c) 2017-2023 Yegor Bugayenko
5
5
  #
6
6
  # Permission is hereby granted, free of charge, to any person obtaining a copy
7
7
  # of this software and associated documentation files (the 'Software'), to deal
@@ -28,60 +28,65 @@ require 'base58'
28
28
 
29
29
  # Codec.
30
30
  # Author:: Yegor Bugayenko (yegor256@gmail.com)
31
- # Copyright:: Copyright (c) 2017-2022 Yegor Bugayenko
31
+ # Copyright:: Copyright (c) 2017-2023 Yegor Bugayenko
32
32
  # License:: MIT
33
- class GLogin::Codec
34
- # When can't decode.
35
- class DecodingError < StandardError; end
33
+ module GLogin
34
+ # The codec
35
+ class Codec
36
+ # When can't decode.
37
+ class DecodingError < StandardError; end
36
38
 
37
- def initialize(secret = '')
38
- raise 'Secret can\'t be nil' if secret.nil?
39
- @secret = secret
40
- end
39
+ def initialize(secret = '')
40
+ raise 'Secret can\'t be nil' if secret.nil?
41
+ @secret = secret
42
+ end
41
43
 
42
- def decrypt(text)
43
- raise 'Text can\'t be nil' if text.nil?
44
- if @secret.empty?
45
- text
46
- else
47
- cpr = cipher
48
- cpr.decrypt
49
- cpr.key = digest
50
- raise DecodingError unless /^[a-zA-Z0-9]+$/.match?(text)
51
- plain = Base58.base58_to_binary(text)
52
- raise DecodingError if plain.empty?
53
- decrypted = cpr.update(plain)
54
- decrypted << cpr.final
55
- salt, body = decrypted.to_s.split(' ', 2)
56
- raise DecodingError if salt.empty?
57
- raise DecodingError if body.nil?
58
- body.force_encoding('UTF-8')
59
- body
44
+ def decrypt(text)
45
+ raise 'Text can\'t be nil' if text.nil?
46
+ if @secret.empty?
47
+ text
48
+ else
49
+ cpr = cipher
50
+ cpr.decrypt
51
+ cpr.key = digest(cpr.key_len)
52
+ raise DecodingError unless /^[a-zA-Z0-9]+$/.match?(text)
53
+ plain = Base58.base58_to_binary(text)
54
+ raise DecodingError if plain.empty?
55
+ decrypted = cpr.update(plain)
56
+ decrypted << cpr.final
57
+ salt, body = decrypted.to_s.split(' ', 2)
58
+ raise DecodingError if salt.empty?
59
+ raise DecodingError if body.nil?
60
+ body.force_encoding('UTF-8')
61
+ body
62
+ end
63
+ rescue OpenSSL::Cipher::CipherError => e
64
+ raise DecodingError, e.message
60
65
  end
61
- rescue OpenSSL::Cipher::CipherError => e
62
- raise DecodingError, e.message
63
- end
64
66
 
65
- def encrypt(text)
66
- raise 'Text can\'t be nil' if text.nil?
67
- if @secret.empty?
68
- text
69
- else
70
- cpr = cipher
71
- cpr.encrypt
72
- cpr.key = digest
73
- salt = SecureRandom.base64(Random.rand(8..32))
74
- encrypted = cpr.update("#{salt} #{text}")
75
- encrypted << cpr.final
76
- Base58.binary_to_base58(encrypted)
67
+ def encrypt(text)
68
+ raise 'Text can\'t be nil' if text.nil?
69
+ if @secret.empty?
70
+ text
71
+ else
72
+ cpr = cipher
73
+ cpr.encrypt
74
+ cpr.key = digest(cpr.key_len)
75
+ salt = SecureRandom.base64(Random.rand(8..32))
76
+ encrypted = cpr.update("#{salt} #{text}")
77
+ encrypted << cpr.final
78
+ Base58.binary_to_base58(encrypted)
79
+ end
77
80
  end
78
- end
79
81
 
80
- def digest
81
- Digest::SHA1.hexdigest(@secret)[0..31]
82
- end
82
+ private
83
+
84
+ def digest(len)
85
+ Digest::SHA1.hexdigest(@secret)[0..len - 1]
86
+ end
83
87
 
84
- def cipher
85
- OpenSSL::Cipher.new('aes-256-cbc')
88
+ def cipher
89
+ OpenSSL::Cipher.new('aes-256-cbc')
90
+ end
86
91
  end
87
92
  end
data/lib/glogin/cookie.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  #
4
- # Copyright (c) 2017-2022 Yegor Bugayenko
4
+ # Copyright (c) 2017-2023 Yegor Bugayenko
5
5
  #
6
6
  # Permission is hereby granted, free of charge, to any person obtaining a copy
7
7
  # of this software and associated documentation files (the 'Software'), to deal
@@ -28,7 +28,7 @@ require_relative 'codec'
28
28
 
29
29
  # GLogin main module.
30
30
  # Author:: Yegor Bugayenko (yegor256@gmail.com)
31
- # Copyright:: Copyright (c) 2017-2022 Yegor Bugayenko
31
+ # Copyright:: Copyright (c) 2017-2023 Yegor Bugayenko
32
32
  # License:: MIT
33
33
  module GLogin
34
34
  # Split symbol inside the cookie text
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  #
4
- # Copyright (c) 2017-2022 Yegor Bugayenko
4
+ # Copyright (c) 2017-2023 Yegor Bugayenko
5
5
  #
6
6
  # Permission is hereby granted, free of charge, to any person obtaining a copy
7
7
  # of this software and associated documentation files (the 'Software'), to deal
@@ -23,8 +23,8 @@
23
23
 
24
24
  # GLogin main module.
25
25
  # Author:: Yegor Bugayenko (yegor256@gmail.com)
26
- # Copyright:: Copyright (c) 2017-2022 Yegor Bugayenko
26
+ # Copyright:: Copyright (c) 2017-2023 Yegor Bugayenko
27
27
  # License:: MIT
28
28
  module GLogin
29
- VERSION = '0.9.0'
29
+ VERSION = '0.11.0'
30
30
  end
data/lib/glogin.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  #
4
- # Copyright (c) 2017-2022 Yegor Bugayenko
4
+ # Copyright (c) 2017-2023 Yegor Bugayenko
5
5
  #
6
6
  # Permission is hereby granted, free of charge, to any person obtaining a copy
7
7
  # of this software and associated documentation files (the 'Software'), to deal
@@ -28,7 +28,7 @@ require_relative 'glogin/cookie'
28
28
 
29
29
  # GLogin main module.
30
30
  # Author:: Yegor Bugayenko (yegor256@gmail.com)
31
- # Copyright:: Copyright (c) 2017-2022 Yegor Bugayenko
31
+ # Copyright:: Copyright (c) 2017-2023 Yegor Bugayenko
32
32
  # License:: MIT
33
33
  module GLogin
34
34
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  #
4
- # Copyright (c) 2017-2022 Yegor Bugayenko
4
+ # Copyright (c) 2017-2023 Yegor Bugayenko
5
5
  #
6
6
  # Permission is hereby granted, free of charge, to any person obtaining a copy
7
7
  # of this software and associated documentation files (the 'Software'), to deal
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  #
4
- # Copyright (c) 2017-2022 Yegor Bugayenko
4
+ # Copyright (c) 2017-2023 Yegor Bugayenko
5
5
  #
6
6
  # Permission is hereby granted, free of charge, to any person obtaining a copy
7
7
  # of this software and associated documentation files (the 'Software'), to deal
@@ -60,6 +60,12 @@ class TestCodec < Minitest::Test
60
60
  end
61
61
  end
62
62
 
63
+ def test_decrypts_broken_text_with_empty_key
64
+ assert_raises GLogin::Codec::DecodingError do
65
+ GLogin::Codec.new('key').decrypt('')
66
+ end
67
+ end
68
+
63
69
  def test_encrypts_and_decrypts_with_empty_key
64
70
  crypt = GLogin::Codec.new
65
71
  text = 'This is the text, дорогой друг!'
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  #
4
- # Copyright (c) 2017-2022 Yegor Bugayenko
4
+ # Copyright (c) 2017-2023 Yegor Bugayenko
5
5
  #
6
6
  # Permission is hereby granted, free of charge, to any person obtaining a copy
7
7
  # of this software and associated documentation files (the 'Software'), to deal
data/test/test__helper.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  #
4
- # Copyright (c) 2017-2022 Yegor Bugayenko
4
+ # Copyright (c) 2017-2023 Yegor Bugayenko
5
5
  #
6
6
  # Permission is hereby granted, free of charge, to any person obtaining a copy
7
7
  # of this software and associated documentation files (the 'Software'), to deal
@@ -25,10 +25,6 @@ $stdout.sync = true
25
25
 
26
26
  require 'simplecov'
27
27
  SimpleCov.start
28
- if ENV['CI'] == 'true'
29
- require 'codecov'
30
- SimpleCov.formatter = SimpleCov::Formatter::Codecov
31
- end
32
28
 
33
29
  require 'minitest/autorun'
34
30
  require_relative '../lib/glogin'
data/test/test_glogin.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  #
4
- # Copyright (c) 2017-2022 Yegor Bugayenko
4
+ # Copyright (c) 2017-2023 Yegor Bugayenko
5
5
  #
6
6
  # Permission is hereby granted, free of charge, to any person obtaining a copy
7
7
  # of this software and associated documentation files (the 'Software'), to deal
@@ -26,7 +26,7 @@ require_relative '../lib/glogin'
26
26
 
27
27
  # GLogin main module test.
28
28
  # Author:: Yegor Bugayenko (yegor256@gmail.com)
29
- # Copyright:: Copyright (c) 2017-2022 Yegor Bugayenko
29
+ # Copyright:: Copyright (c) 2017-2023 Yegor Bugayenko
30
30
  # License:: MIT
31
31
  class TestGLogin < Minitest::Test
32
32
  def test_basic
metadata CHANGED
@@ -1,141 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: glogin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yegor Bugayenko
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-12-20 00:00:00.000000000 Z
11
+ date: 2023-05-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: base58
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '='
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.2.3
19
+ version: '0.2'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '='
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.2.3
26
+ version: '0.2'
27
27
  - !ruby/object:Gem::Dependency
28
- name: codecov
28
+ name: openssl
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '='
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.6.0
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - '='
39
- - !ruby/object:Gem::Version
40
- version: 0.6.0
41
- - !ruby/object:Gem::Dependency
42
- name: minitest
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - '='
46
- - !ruby/object:Gem::Version
47
- version: 5.16.1
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - '='
53
- - !ruby/object:Gem::Version
54
- version: 5.16.1
55
- - !ruby/object:Gem::Dependency
56
- name: rake
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - '='
60
- - !ruby/object:Gem::Version
61
- version: 13.0.6
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - '='
67
- - !ruby/object:Gem::Version
68
- version: 13.0.6
69
- - !ruby/object:Gem::Dependency
70
- name: rdoc
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - '='
74
- - !ruby/object:Gem::Version
75
- version: 6.4.0
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - '='
81
- - !ruby/object:Gem::Version
82
- version: 6.4.0
83
- - !ruby/object:Gem::Dependency
84
- name: rspec-rails
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - '='
88
- - !ruby/object:Gem::Version
89
- version: 5.1.2
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - '='
95
- - !ruby/object:Gem::Version
96
- version: 5.1.2
97
- - !ruby/object:Gem::Dependency
98
- name: rubocop
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - '='
102
- - !ruby/object:Gem::Version
103
- version: 1.31.1
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - '='
109
- - !ruby/object:Gem::Version
110
- version: 1.31.1
111
- - !ruby/object:Gem::Dependency
112
- name: rubocop-rspec
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - '='
116
- - !ruby/object:Gem::Version
117
- version: 2.11.1
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - '='
123
- - !ruby/object:Gem::Version
124
- version: 2.11.1
125
- - !ruby/object:Gem::Dependency
126
- name: webmock
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - '='
130
- - !ruby/object:Gem::Version
131
- version: 3.14.0
132
- type: :development
33
+ version: '3.1'
34
+ type: :runtime
133
35
  prerelease: false
134
36
  version_requirements: !ruby/object:Gem::Requirement
135
37
  requirements:
136
- - - '='
38
+ - - "~>"
137
39
  - !ruby/object:Gem::Version
138
- version: 3.14.0
40
+ version: '3.1'
139
41
  description: Enables login/logout functionality for a Ruby web app
140
42
  email: yegor256@gmail.com
141
43
  executables: []
@@ -147,7 +49,9 @@ files:
147
49
  - ".0pdd.yml"
148
50
  - ".gitattributes"
149
51
  - ".github/workflows/codecov.yml"
52
+ - ".github/workflows/pdd.yml"
150
53
  - ".github/workflows/rake.yml"
54
+ - ".github/workflows/xcop.yml"
151
55
  - ".gitignore"
152
56
  - ".pdd"
153
57
  - ".rubocop.yml"
@@ -191,7 +95,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
191
95
  - !ruby/object:Gem::Version
192
96
  version: '0'
193
97
  requirements: []
194
- rubygems_version: 3.1.2
98
+ rubygems_version: 3.2.15
195
99
  signing_key:
196
100
  specification_version: 4
197
101
  summary: Login/logout via GitHub OAuth for your web app