api_versioner 1.1.0 → 1.2.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: 0417fe10195337b05a7f804506c7a5f572fd0baa5be90518cb261e0b69b80a9d
4
- data.tar.gz: f986c19519bd9168c0fc86d7e02e5fe83cb4d8f02735008c1a1c9ce9e2501b26
3
+ metadata.gz: '099f96ae4e782a74607dff5ad091812122c38fe357aa3b43f0855f5151f0b2ca'
4
+ data.tar.gz: 9031bfd2060c4261016afead3e8176070de20e9440c3fd8a3ff736cd3976488f
5
5
  SHA512:
6
- metadata.gz: a0df7a8effc7a24eb5b1d81fba303f9c87a50b6c769f344a70af1ae9064e31ab5954a95adf5667de908772071bf6fc7be4e629e9e8c77f1ee707e46f601df949
7
- data.tar.gz: 5cab927bd7f4295fec65bb1ab431bb2a4259bacff748c4b709ef0802df191434e0f6faa0ecd25bff12b63622c5b0bc908d4f1fb6e0d472a54e1db2e12b896a2c
6
+ metadata.gz: d3ee3f818f676a23ae7f10adcc23dc166a9e7a53fdaf2aa6a13a9a986c95fef864182298311d000215e27d55228cf9dbacd67f8a89dceb9e371d078a5f9bcd4e
7
+ data.tar.gz: 7f116ae279a36d826735662f33c2693535f692c6b27531c703a5745eb660b2adf98c4e31006fea3e8550a54d81d359744fb90d35f986f5c3a18aaccc0d37a099
@@ -0,0 +1,51 @@
1
+ name: Ruby
2
+
3
+ on:
4
+ - push
5
+ - pull_request
6
+
7
+ jobs:
8
+ build:
9
+ # https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources
10
+ runs-on: ubuntu-22.04
11
+ name: Ruby ${{ matrix.ruby }}
12
+ strategy:
13
+ fail-fast: false
14
+ matrix:
15
+ include:
16
+ # https://github.com/ruby/ruby-builder/releases
17
+ - ruby: "head"
18
+ - ruby: "3.2"
19
+ - ruby: "3.1"
20
+ - ruby: "3.0"
21
+ - ruby: "2.7"
22
+ - ruby: "2.6"
23
+ - ruby: "jruby-9.4.2"
24
+ - ruby: "truffleruby-22.3.1"
25
+
26
+ env:
27
+ BUNDLE_GEMFILE: Gemfile
28
+
29
+ steps:
30
+ # https://github.com/actions/checkout
31
+ - uses: actions/checkout@v3
32
+
33
+ # https://github.com/ruby/setup-ruby
34
+ - name: Set up Ruby ${{ matrix.ruby }}
35
+ uses: ruby/setup-ruby@v1
36
+ with:
37
+ ruby-version: ${{ matrix.ruby }}
38
+ bundler-cache: true
39
+
40
+ # Check code standards only for latest MRI. It takes a lot of time for jruby or truffleruby
41
+ - name: Check Code Standards
42
+ if: startsWith(matrix.ruby, '3.2')
43
+ run: bundle exec rubocop
44
+
45
+ # Check code smells
46
+ - name: Check Code Standards
47
+ if: startsWith(matrix.ruby, '3.2')
48
+ run: bundle exec reek
49
+
50
+ - name: Run Tests
51
+ run: bundle exec rspec
data/.reek.yml CHANGED
@@ -14,4 +14,16 @@ detectors:
14
14
 
15
15
  UncommunicativeVariableName:
16
16
  accept:
17
- - e
17
+ - e
18
+ - _
19
+ - id1
20
+ - id2
21
+
22
+ UncommunicativeParameterName:
23
+ accept:
24
+ - id1
25
+ - id2
26
+ - ids1
27
+ - ids2
28
+ - version1
29
+ - version2
data/.rubocop.yml CHANGED
@@ -10,6 +10,9 @@ AllCops:
10
10
  - bin/*
11
11
  - vendor/**/*
12
12
 
13
+ Gemspec/RequireMFA:
14
+ Enabled: false
15
+
13
16
  Layout/ArgumentAlignment:
14
17
  EnforcedStyle: with_fixed_indentation
15
18
 
@@ -59,7 +62,7 @@ RSpec/ScatteredSetup:
59
62
  - spec/integration/**/*
60
63
 
61
64
  RSpec/VariableName:
62
- IgnoredPatterns:
65
+ AllowedPatterns:
63
66
  - Authorization
64
67
 
65
68
  Style/Documentation:
data/CHANGELOG.md ADDED
@@ -0,0 +1,6 @@
1
+ # CHANGELOG
2
+
3
+ ## [Unreleased]
4
+
5
+ ## [1.2.0] - 2023-04-14
6
+ - Remove extra dependency `semantic` gem
data/Gemfile CHANGED
@@ -4,3 +4,10 @@ source 'https://rubygems.org'
4
4
 
5
5
  # Specify your gem's dependencies in versioner.gemspec
6
6
  gemspec
7
+
8
+ gem 'reek', '~> 6.0'
9
+ gem 'rspec', '~> 3.12.0'
10
+ gem 'rubocop', '~> 1.4'
11
+ gem 'rubocop-performance', '~> 1.5', '>= 1.5.2'
12
+ gem 'rubocop-rspec', '~> 2.0'
13
+ gem 'simplecov', '~> 0.22.0'
data/Gemfile.lock CHANGED
@@ -1,95 +1,81 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- api_versioner (1.0.0)
5
- semantic (~> 1.6.1)
4
+ api_versioner (1.2.0)
6
5
 
7
6
  GEM
8
7
  remote: https://rubygems.org/
9
8
  specs:
10
- activesupport (6.1.4.1)
11
- concurrent-ruby (~> 1.0, >= 1.0.2)
12
- i18n (>= 1.6, < 2)
13
- minitest (>= 5.1)
14
- tzinfo (~> 2.0)
15
- zeitwerk (~> 2.3)
16
9
  ast (2.4.2)
17
- concurrent-ruby (1.1.9)
18
- diff-lcs (1.4.4)
10
+ diff-lcs (1.5.0)
19
11
  docile (1.4.0)
20
- i18n (1.8.11)
21
- concurrent-ruby (~> 1.0)
12
+ json (2.6.3)
13
+ json (2.6.3-java)
22
14
  kwalify (0.7.2)
23
- minitest (5.14.4)
24
- parallel (1.21.0)
25
- parser (3.0.2.0)
15
+ parallel (1.23.0)
16
+ parser (3.2.2.0)
26
17
  ast (~> 2.4.1)
27
- rack (2.2.3)
28
- rainbow (3.0.0)
29
- reek (6.0.6)
18
+ rainbow (3.1.1)
19
+ reek (6.1.4)
30
20
  kwalify (~> 0.7.0)
31
- parser (~> 3.0.0)
21
+ parser (~> 3.2.0)
32
22
  rainbow (>= 2.0, < 4.0)
33
- regexp_parser (2.1.1)
23
+ regexp_parser (2.8.0)
34
24
  rexml (3.2.5)
35
- rspec (3.10.0)
36
- rspec-core (~> 3.10.0)
37
- rspec-expectations (~> 3.10.0)
38
- rspec-mocks (~> 3.10.0)
39
- rspec-core (3.10.1)
40
- rspec-support (~> 3.10.0)
41
- rspec-expectations (3.10.1)
25
+ rspec (3.12.0)
26
+ rspec-core (~> 3.12.0)
27
+ rspec-expectations (~> 3.12.0)
28
+ rspec-mocks (~> 3.12.0)
29
+ rspec-core (3.12.2)
30
+ rspec-support (~> 3.12.0)
31
+ rspec-expectations (3.12.3)
42
32
  diff-lcs (>= 1.2.0, < 2.0)
43
- rspec-support (~> 3.10.0)
44
- rspec-mocks (3.10.2)
33
+ rspec-support (~> 3.12.0)
34
+ rspec-mocks (3.12.5)
45
35
  diff-lcs (>= 1.2.0, < 2.0)
46
- rspec-support (~> 3.10.0)
47
- rspec-support (3.10.3)
48
- rubocop (1.22.3)
36
+ rspec-support (~> 3.12.0)
37
+ rspec-support (3.12.0)
38
+ rubocop (1.50.2)
39
+ json (~> 2.3)
49
40
  parallel (~> 1.10)
50
- parser (>= 3.0.0.0)
41
+ parser (>= 3.2.0.0)
51
42
  rainbow (>= 2.2.2, < 4.0)
52
43
  regexp_parser (>= 1.8, < 3.0)
53
- rexml
54
- rubocop-ast (>= 1.12.0, < 2.0)
44
+ rexml (>= 3.2.5, < 4.0)
45
+ rubocop-ast (>= 1.28.0, < 2.0)
55
46
  ruby-progressbar (~> 1.7)
56
- unicode-display_width (>= 1.4.0, < 3.0)
57
- rubocop-ast (1.13.0)
58
- parser (>= 3.0.1.1)
59
- rubocop-performance (1.12.0)
47
+ unicode-display_width (>= 2.4.0, < 3.0)
48
+ rubocop-ast (1.28.0)
49
+ parser (>= 3.2.1.0)
50
+ rubocop-capybara (2.18.0)
51
+ rubocop (~> 1.41)
52
+ rubocop-performance (1.17.1)
60
53
  rubocop (>= 1.7.0, < 2.0)
61
54
  rubocop-ast (>= 0.4.0)
62
- rubocop-rails (2.12.4)
63
- activesupport (>= 4.2.0)
64
- rack (>= 1.1)
65
- rubocop (>= 1.7.0, < 2.0)
66
- rubocop-rspec (2.6.0)
67
- rubocop (~> 1.19)
68
- ruby-progressbar (1.11.0)
69
- semantic (1.6.1)
70
- simplecov (0.21.2)
55
+ rubocop-rspec (2.20.0)
56
+ rubocop (~> 1.33)
57
+ rubocop-capybara (~> 2.17)
58
+ ruby-progressbar (1.13.0)
59
+ simplecov (0.22.0)
71
60
  docile (~> 1.1)
72
61
  simplecov-html (~> 0.11)
73
62
  simplecov_json_formatter (~> 0.1)
74
63
  simplecov-html (0.12.3)
75
- simplecov_json_formatter (0.1.3)
76
- tzinfo (2.0.4)
77
- concurrent-ruby (~> 1.0)
78
- unicode-display_width (2.1.0)
79
- zeitwerk (2.5.1)
64
+ simplecov_json_formatter (0.1.4)
65
+ unicode-display_width (2.4.2)
80
66
 
81
67
  PLATFORMS
68
+ java
82
69
  ruby
83
70
 
84
71
  DEPENDENCIES
85
72
  api_versioner!
86
73
  reek (~> 6.0)
87
- rspec (~> 3.10.0)
74
+ rspec (~> 3.12.0)
88
75
  rubocop (~> 1.4)
89
76
  rubocop-performance (~> 1.5, >= 1.5.2)
90
- rubocop-rails (~> 2.2)
91
77
  rubocop-rspec (~> 2.0)
92
- simplecov (~> 0.21.2)
78
+ simplecov (~> 0.22.0)
93
79
 
94
80
  BUNDLED WITH
95
- 2.1.4
81
+ 2.4.12
@@ -11,11 +11,11 @@ Gem::Specification.new do |spec|
11
11
  spec.summary = 'A simple gem to add semantic versioning support to API applications.'
12
12
  spec.homepage = 'https://github.com/alg/api_versioner'
13
13
  spec.license = 'MIT'
14
- spec.required_ruby_version = Gem::Requirement.new('>= 2.5.0')
14
+ spec.required_ruby_version = Gem::Requirement.new('>= 2.6.0')
15
15
 
16
16
  spec.metadata['homepage_uri'] = spec.homepage
17
17
  spec.metadata['source_code_uri'] = 'https://github.com/alg/api_versioner'
18
- spec.metadata['changelog_uri'] = 'https://github.com/alg/api_versioner/CHANGELOG'
18
+ spec.metadata['changelog_uri'] = 'https://github.com/alg/api_versioner/CHANGELOG.md'
19
19
 
20
20
  # Specify which files should be added to the gem when it is released.
21
21
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
@@ -25,14 +25,4 @@ Gem::Specification.new do |spec|
25
25
  spec.bindir = 'exe'
26
26
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
27
27
  spec.require_paths = %w[lib]
28
-
29
- spec.add_dependency 'semantic', '~> 1.6.1'
30
-
31
- spec.add_development_dependency 'reek', '~> 6.0'
32
- spec.add_development_dependency 'rspec', '~> 3.10.0'
33
- spec.add_development_dependency 'rubocop', '~> 1.4'
34
- spec.add_development_dependency 'rubocop-performance', '~> 1.5', '>= 1.5.2'
35
- spec.add_development_dependency 'rubocop-rails', '~> 2.2'
36
- spec.add_development_dependency 'rubocop-rspec', '~> 2.0'
37
- spec.add_development_dependency 'simplecov', '~> 0.21.2'
38
28
  end
@@ -1,9 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'semantic'
4
- require 'api_versioner/unsupported_version'
5
-
6
3
  module ApiVersioner
4
+ autoload :UnsupportedVersion, 'api_versioner/unsupported_version'
5
+
7
6
  class ClientVersionMiddleware
8
7
  def initialize(app, config = nil)
9
8
  @app = app
@@ -32,15 +31,23 @@ module ApiVersioner
32
31
 
33
32
  def client_version(env)
34
33
  header_name = convert_to_rack_header(@config.client_version_header)
35
- ver = env[header_name]
34
+ version_str = presence(env[header_name])
35
+ return unless version_str
36
36
 
37
- ver && Semantic::Version.new(ver)
37
+ SemanticVersion.new(version_str)
38
38
  rescue ArgumentError
39
39
  nil
40
40
  end
41
41
 
42
+ def presence(str)
43
+ return unless str
44
+
45
+ str = str.strip
46
+ str.empty? ? nil : str
47
+ end
48
+
42
49
  def convert_to_rack_header(header)
43
- "HTTP_#{header.strip.tr('-', '_').upcase}"
50
+ "HTTP_#{header.tr('-', '_').upcase}"
44
51
  end
45
52
  end
46
53
  end
@@ -1,31 +1,38 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'semantic'
4
- require_relative 'default_policy'
5
- require_relative 'default_handler'
6
-
7
3
  module ApiVersioner
4
+ autoload :SemanticVersion, 'api_versioner/semantic_version'
5
+ autoload :DefaultHandler, 'api_versioner/default_handler'
6
+ autoload :DefaultPolicy, 'api_versioner/default_policy'
7
+
8
+ # :reek:InstanceVariableAssumption
8
9
  # :reek:TooManyInstanceVariables
9
10
  class Configuration
10
11
  DEFAULT_SERVER_VERSION_HEADER = 'X-API-Server-Version'
11
12
  DEFAULT_CLIENT_VERSION_HEADER = 'X-API-Client-Version'
12
- DEFAULT_VERSION_POLICY = DefaultPolicy.new
13
- DEFAULT_UNSUPPORTED_VERSION_HANDLER = DefaultHandler.new
14
13
 
15
- attr_accessor :version_policy, :unsupported_version_handler
14
+ attr_writer :version_policy, :unsupported_version_handler
16
15
  attr_reader :current_version, :server_version_header, :client_version_header
17
16
 
18
17
  def initialize
19
18
  @current_version = nil
20
19
  @server_version_header = DEFAULT_SERVER_VERSION_HEADER
21
20
  @client_version_header = DEFAULT_CLIENT_VERSION_HEADER
22
- @version_policy = DEFAULT_VERSION_POLICY
23
- @unsupported_version_handler = DEFAULT_UNSUPPORTED_VERSION_HANDLER
21
+ end
22
+
23
+ def version_policy
24
+ @version_policy = DefaultPolicy.new unless instance_variable_defined?(:@version_policy)
25
+ @version_policy
26
+ end
27
+
28
+ def unsupported_version_handler
29
+ @unsupported_version_handler = DefaultHandler.new unless instance_variable_defined?(:@unsupported_version_handler)
30
+ @unsupported_version_handler
24
31
  end
25
32
 
26
33
  def current_version=(version)
27
34
  ver = version.to_s.strip
28
- @current_version = ver.empty? ? nil : Semantic::Version.new(ver)
35
+ @current_version = ver.empty? ? nil : SemanticVersion.new(ver)
29
36
  end
30
37
 
31
38
  def server_version_header=(name)
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'api_versioner/unsupported_version'
4
-
5
3
  module ApiVersioner
4
+ autoload :UnsupportedVersion, 'api_versioner/unsupported_version'
5
+
6
6
  class DefaultPolicy
7
7
  class VersionTooLow < UnsupportedVersion
8
8
  def initialize(msg)
@@ -1,10 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # :nocov:
4
- require_relative './client_version_middleware'
5
- require_relative './server_version_middleware'
6
-
7
4
  module ApiVersioner
5
+ autoload :ServerVersionMiddleware, 'api_versioner/server_version_middleware'
6
+ autoload :ClientVersionMiddleware, 'api_versioner/client_version_middleware'
7
+
8
8
  class Railtie < Rails::Railtie
9
9
  initializer 'versioner.configure_rails_initialization' do |app|
10
10
  app.middleware.use ServerVersionMiddleware
@@ -0,0 +1,130 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'forwardable'
4
+
5
+ module ApiVersioner
6
+ class SemanticVersion
7
+ extend Forwardable
8
+ include Comparable
9
+
10
+ # https://semver.org
11
+ REGEXP = /\A(?<major>0|[1-9]\d*)\.(?<minor>0|[1-9]\d*)\.(?<patch>0|[1-9]\d*)(?:-(?<prerelease>(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+(?<buildmetadata>[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?\z/.freeze # rubocop:disable Layout/LineLength
12
+
13
+ def initialize(version)
14
+ match = REGEXP.match(version)
15
+ raise ArgumentError, "#{version.inspect} is not a valid SemVer Version (http://semver.org)" unless match
16
+
17
+ @version = Version.new(match)
18
+ end
19
+
20
+ def_delegators :@version, :to_s, :major, :minor, :patch, :pre, :build, :prerelease_identifiers
21
+
22
+ def <=>(other)
23
+ other = SemanticVersion.new(other) if other.is_a?(String)
24
+ Compare.new(self, other).()
25
+ end
26
+ end
27
+
28
+ # :reek:TooManyInstanceVariables
29
+ class Version
30
+ NUMERIC = /\A0|[1-9]\d*\z/.freeze
31
+
32
+ attr_reader :version, :major, :minor, :patch, :pre, :build, :prerelease_identifiers
33
+
34
+ def initialize(regexp_match)
35
+ @version = regexp_match.string
36
+ @major = regexp_match[:major].to_i
37
+ @minor = regexp_match[:minor].to_i
38
+ @patch = regexp_match[:patch].to_i
39
+ @pre = regexp_match[:prerelease]
40
+ @build = regexp_match[:buildmetadata]
41
+ @prerelease_identifiers = parse_prerelease_identifiers(@pre)
42
+ end
43
+
44
+ def to_s
45
+ version
46
+ end
47
+
48
+ private
49
+
50
+ def parse_prerelease_identifiers(pre)
51
+ return nil unless pre
52
+
53
+ pre.split('.').map! { |id| NUMERIC.match?(id) ? id.to_i : id }
54
+ end
55
+ end
56
+
57
+ class Compare
58
+ def initialize(version1, version2)
59
+ @version1 = version1
60
+ @version2 = version2
61
+ end
62
+
63
+ # :reek:TooManyStatements
64
+ # rubocop:disable Metrics/AbcSize
65
+ def call
66
+ by_major = version1.major <=> version2.major
67
+ return by_major unless by_major.zero?
68
+
69
+ by_minor = version1.minor <=> version2.minor
70
+ return by_minor unless by_minor.zero?
71
+
72
+ by_patch = version1.patch <=> version2.patch
73
+ return by_patch unless by_patch.zero?
74
+
75
+ compare_prereleases(version1.prerelease_identifiers, version2.prerelease_identifiers)
76
+ end
77
+ # rubocop:enable Metrics/AbcSize
78
+
79
+ private
80
+
81
+ attr_reader :version1, :version2
82
+
83
+ # :reek:TooManyStatements
84
+ # :reek:FeatureEnvy
85
+ def compare_prereleases(ids1, ids2)
86
+ # A pre-release version has lower precedence than a normal version
87
+ return 0 if !ids1 && !ids2
88
+ return 1 unless ids1
89
+ return -1 unless ids2
90
+
91
+ # Compare pre-release identifiers one-by-one
92
+ each_prerelease_pair(ids1, ids2) do |id1, id2|
93
+ by_prerelease = compare_prerelease(id1, id2)
94
+ return by_prerelease unless by_prerelease.zero?
95
+ end
96
+
97
+ 0
98
+ end
99
+
100
+ # :reek:TooManyStatements
101
+ def compare_prerelease(id1, id2)
102
+ # A larger set of pre-release fields has a higher precedence than a smaller set
103
+ return -1 unless id1
104
+ return 1 unless id2
105
+
106
+ id1_is_numeric = id1.is_a?(Integer)
107
+ id2_is_numeric = id2.is_a?(Integer)
108
+
109
+ # Numeric identifiers always have lower precedence than non-numeric identifiers.
110
+ return -1 if id1_is_numeric && !id2_is_numeric
111
+ return 1 if !id1_is_numeric && id2_is_numeric
112
+
113
+ id1 <=> id2
114
+ end
115
+
116
+ # :reek:TooManyStatements
117
+ def each_prerelease_pair(ids1, ids2)
118
+ index = 0
119
+
120
+ loop do
121
+ id1 = ids1[index]
122
+ id2 = ids2[index]
123
+ break if !id1 && !id2
124
+
125
+ yield(id1, id2)
126
+ index += 1
127
+ end
128
+ end
129
+ end
130
+ end
@@ -8,11 +8,9 @@ module ApiVersioner
8
8
  end
9
9
 
10
10
  def call(env)
11
- status, headers, response = @app.(env)
12
-
13
- add_version_header(headers)
14
-
15
- [status, headers, response]
11
+ response = @app.(env) # status, headers, bodies
12
+ add_version_header(response[1])
13
+ response
16
14
  end
17
15
 
18
16
  private
@@ -20,7 +18,7 @@ module ApiVersioner
20
18
  def add_version_header(headers)
21
19
  return unless adding_versions?
22
20
 
23
- headers[@config.server_version_header] = @config.current_version.to_s
21
+ headers[@config.server_version_header] = @config.current_version
24
22
  end
25
23
 
26
24
  def adding_versions?
@@ -2,5 +2,5 @@
2
2
 
3
3
  # :nocov:
4
4
  module ApiVersioner
5
- VERSION = '1.1.0'
5
+ VERSION = '1.2.0'
6
6
  end
data/lib/api_versioner.rb CHANGED
@@ -4,6 +4,7 @@ require 'api_versioner/version'
4
4
 
5
5
  module ApiVersioner
6
6
  autoload :Configuration, 'api_versioner/configuration'
7
+ autoload :SemanticVersion, 'api_versioner/semantic_version'
7
8
 
8
9
  class << self
9
10
  def configure
metadata CHANGED
@@ -1,134 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: api_versioner
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aleksey Gureiev
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-12-14 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: semantic
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: 1.6.1
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: 1.6.1
27
- - !ruby/object:Gem::Dependency
28
- name: reek
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '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: '6.0'
41
- - !ruby/object:Gem::Dependency
42
- name: rspec
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: 3.10.0
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: 3.10.0
55
- - !ruby/object:Gem::Dependency
56
- name: rubocop
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '1.4'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '1.4'
69
- - !ruby/object:Gem::Dependency
70
- name: rubocop-performance
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: '1.5'
76
- - - ">="
77
- - !ruby/object:Gem::Version
78
- version: 1.5.2
79
- type: :development
80
- prerelease: false
81
- version_requirements: !ruby/object:Gem::Requirement
82
- requirements:
83
- - - "~>"
84
- - !ruby/object:Gem::Version
85
- version: '1.5'
86
- - - ">="
87
- - !ruby/object:Gem::Version
88
- version: 1.5.2
89
- - !ruby/object:Gem::Dependency
90
- name: rubocop-rails
91
- requirement: !ruby/object:Gem::Requirement
92
- requirements:
93
- - - "~>"
94
- - !ruby/object:Gem::Version
95
- version: '2.2'
96
- type: :development
97
- prerelease: false
98
- version_requirements: !ruby/object:Gem::Requirement
99
- requirements:
100
- - - "~>"
101
- - !ruby/object:Gem::Version
102
- version: '2.2'
103
- - !ruby/object:Gem::Dependency
104
- name: rubocop-rspec
105
- requirement: !ruby/object:Gem::Requirement
106
- requirements:
107
- - - "~>"
108
- - !ruby/object:Gem::Version
109
- version: '2.0'
110
- type: :development
111
- prerelease: false
112
- version_requirements: !ruby/object:Gem::Requirement
113
- requirements:
114
- - - "~>"
115
- - !ruby/object:Gem::Version
116
- version: '2.0'
117
- - !ruby/object:Gem::Dependency
118
- name: simplecov
119
- requirement: !ruby/object:Gem::Requirement
120
- requirements:
121
- - - "~>"
122
- - !ruby/object:Gem::Version
123
- version: 0.21.2
124
- type: :development
125
- prerelease: false
126
- version_requirements: !ruby/object:Gem::Requirement
127
- requirements:
128
- - - "~>"
129
- - !ruby/object:Gem::Version
130
- version: 0.21.2
131
- description:
11
+ date: 2023-04-25 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description:
132
14
  email:
133
15
  - agureiev@shakuro.com
134
16
  executables: []
@@ -137,12 +19,13 @@ extra_rdoc_files: []
137
19
  files:
138
20
  - ".devcontainer/Dockerfile"
139
21
  - ".devcontainer/devcontainer.json"
22
+ - ".github/workflows/main.yml"
140
23
  - ".gitignore"
141
24
  - ".reek.yml"
142
25
  - ".rspec"
143
26
  - ".rubocop.yml"
144
27
  - ".travis.yml"
145
- - CHANGELOG
28
+ - CHANGELOG.md
146
29
  - CODE_OF_CONDUCT.md
147
30
  - Gemfile
148
31
  - Gemfile.lock
@@ -158,6 +41,7 @@ files:
158
41
  - lib/api_versioner/default_handler.rb
159
42
  - lib/api_versioner/default_policy.rb
160
43
  - lib/api_versioner/railtie.rb
44
+ - lib/api_versioner/semantic_version.rb
161
45
  - lib/api_versioner/server_version_middleware.rb
162
46
  - lib/api_versioner/unsupported_version.rb
163
47
  - lib/api_versioner/version.rb
@@ -167,8 +51,8 @@ licenses:
167
51
  metadata:
168
52
  homepage_uri: https://github.com/alg/api_versioner
169
53
  source_code_uri: https://github.com/alg/api_versioner
170
- changelog_uri: https://github.com/alg/api_versioner/CHANGELOG
171
- post_install_message:
54
+ changelog_uri: https://github.com/alg/api_versioner/CHANGELOG.md
55
+ post_install_message:
172
56
  rdoc_options: []
173
57
  require_paths:
174
58
  - lib
@@ -176,7 +60,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
176
60
  requirements:
177
61
  - - ">="
178
62
  - !ruby/object:Gem::Version
179
- version: 2.5.0
63
+ version: 2.6.0
180
64
  required_rubygems_version: !ruby/object:Gem::Requirement
181
65
  requirements:
182
66
  - - ">="
@@ -184,7 +68,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
184
68
  version: '0'
185
69
  requirements: []
186
70
  rubygems_version: 3.1.6
187
- signing_key:
71
+ signing_key:
188
72
  specification_version: 4
189
73
  summary: A simple gem to add semantic versioning support to API applications.
190
74
  test_files: []
data/CHANGELOG DELETED
File without changes