glogin 0.9.0 → 0.11.0

Sign up to get free protection for your applications and to get access to all the features.
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