gems-validator 0.1.2 → 0.2.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: d9e298013e84bec9aac8c180fddc99baed14c828baab66a83e0667ce4ecfaa5c
4
- data.tar.gz: 35ae29cd631cc85214a398f3ee4f8e17579156a9f5d7db77d8c6845e6425c2b7
3
+ metadata.gz: 37df10e4443084cbe40e5c844889a26ea5f5a63aae78c825039584dcb28c3998
4
+ data.tar.gz: 2cf0f4cbe1853a2311a05aa7ac1640f54dd42d16179f2cd5fb32e0a9691f9279
5
5
  SHA512:
6
- metadata.gz: 5d54048e6cc12c837f899bc254954defafa2d1739311ebfb9369851c00c342a88eb267d88fde1e6faab461fb44138b25d4049886936df45f486d4bea3e54502e
7
- data.tar.gz: 302648a14509192a9dee1071c12c583b26058249767800abf0299c64051e7472d1d6b833b1f98f1a8de6a8132466eb9c77749101d26b31bde77824cc7956c667
6
+ metadata.gz: 40d24ca735aac51e8bf62df70b3cc9b58976453f1d32869f8bc149c428723214e3caba1ce4739e0fbf61fc895a6c8e850cf4acb921ca560ebb0bba11f0723468
7
+ data.tar.gz: 3c567cd0304b7853594eed687dd867ed00a1f441d13062ca3ea9f361f55a01bb4be6fb99b48e2ce5ccdf426c4c81e2dd7b4b6a93452bef21b16c25d56f91a001
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- gems-validator (0.1.1)
4
+ gems-validator (0.2.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -0,0 +1,7 @@
1
+ module GemsValidator
2
+ class FormatError < StandardError
3
+ def initialize(gem:, message:)
4
+ super("[Gems Validator] - Não foi possível instalar a gem #{gem}. Motivo: #{message}")
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,38 @@
1
+ module GemsValidator
2
+ class GemsService
3
+ def initialize()
4
+ @access_token = 'eG5hJT9SZUQyYXpyLUBUX2pqJVU0eiRmVjl5RisjdUV0WmY4LTRWanZ2Rz1VVyo3VHlYXndCbms4V3dkLU1MWA=='
5
+ end
6
+
7
+ # Response:
8
+ # {
9
+ # available_gems: {
10
+ # [name]: {
11
+ # approved_at: Date,
12
+ # version?: String
13
+ # }
14
+ # },
15
+ # blocked_gems: {
16
+ # [name]: {
17
+ # blocked_at: Date,
18
+ # version?: String
19
+ # }
20
+ # },
21
+ # gems_pending_approval: {
22
+ # [name]: {
23
+ # requested_at: Date
24
+ # }
25
+ # }
26
+ # }
27
+ def get_gems()
28
+ response = request
29
+ JSON.parse(response.body)["data"]
30
+ end
31
+
32
+ private
33
+ def request
34
+ uri = URI('http://localhost:3030/gems/formatted')
35
+ Net::HTTP.get_response(uri, { "Authorization" => "Bearer #{@access_token}" })
36
+ end
37
+ end
38
+ end
@@ -4,8 +4,63 @@ module GemsValidator
4
4
  module Validate
5
5
  class << self
6
6
  def exec(gem)
7
- p "AAAAAAAAAAAAAAAAAAAAAAa"
8
- p gem
7
+ @gem = gem
8
+ begin
9
+ is_blocked?
10
+ is_pending?
11
+ is_available?
12
+ p "[Gems Validator] - A gem #{gem} foi instalada com sucesso!"
13
+ rescue => error
14
+ raise GemsValidator::FormatError.new(gem: @gem.name, message: error.to_s)
15
+ end
16
+ end
17
+
18
+ private
19
+ def is_blocked?
20
+ if gems_from_service["blocked_gems"].keys.include?(@gem.name)
21
+ is_version_blocked?
22
+ raise "Essa gem foi bloqueada."
23
+ end
24
+ end
25
+
26
+ def is_version_blocked?
27
+ if gems_from_service["blocked_gems"][@gem.name]["version"]
28
+ blocked_version = gems_from_service["blocked_gems"][@gem.name]["version"]
29
+ if @gem.version.to_s == blocked_version
30
+ raise "A versão #{@gem.version.to_s} foi bloqueada."
31
+ end
32
+ end
33
+ end
34
+
35
+ def is_pending?
36
+ if gems_from_service["pending_gems"].keys.include?(@gem.name)
37
+ raise "Essa gem está aguardando aprovação."
38
+ end
39
+ end
40
+
41
+ def is_available?
42
+ if gems_from_service["available_gems"].keys.include?(@gem.name)
43
+ is_version_available?
44
+ else
45
+ raise "Essa gem não pode ser instalada."
46
+ end
47
+ end
48
+
49
+ def is_version_available?
50
+ if gems_from_service["available_gems"][@gem.name]["version"]
51
+ required_version = gems_from_service["available_gems"][@gem.name]["version"]
52
+ if @gem.version.to_s != required_version
53
+ raise "Essa gem só pode ser instalada na versão #{@gem.version.to_s}."
54
+ end
55
+ end
56
+ end
57
+
58
+ def gems_service
59
+ @gems_service ||= GemsValidator::GemsService.new()
60
+ end
61
+
62
+ def gems_from_service
63
+ @gems_from_service ||= gems_service.get_gems()
9
64
  end
10
65
  end
11
66
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GemsValidator
4
- VERSION = "0.1.2"
4
+ VERSION = "0.2.1"
5
5
  end
@@ -1,7 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'net/http'
4
+ require 'uri'
5
+ require 'json'
6
+
3
7
  require_relative "gems-validator/version"
4
8
  require_relative "gems-validator/validate"
9
+ require_relative "gems-validator/format-error"
10
+ require_relative "gems-validator/gems-service"
5
11
 
6
12
  module GemsValidator
7
13
  class << self
@@ -11,9 +17,6 @@ module GemsValidator
11
17
 
12
18
  Bundler::Plugin.add_hook('before-install') do |dependencie|
13
19
  GemsValidator::Validate.exec(dependencie)
14
- if dependencie.name == "rake"
15
- raise "NÃO PODE INSTALAR"
16
- end
17
20
  end
18
21
  end
19
22
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gems-validator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - henriquesml
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-06-13 00:00:00.000000000 Z
11
+ date: 2022-06-15 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: gems-validator
14
14
  email:
@@ -22,6 +22,8 @@ files:
22
22
  - Gemfile.lock
23
23
  - Rakefile
24
24
  - lib/gems-validator.rb
25
+ - lib/gems-validator/format-error.rb
26
+ - lib/gems-validator/gems-service.rb
25
27
  - lib/gems-validator/validate.rb
26
28
  - lib/gems-validator/version.rb
27
29
  - plugins.rb