gems-validator 0.1.1 → 0.2.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: b9c6d1580294c69e40561c50fb77f182a39a491118f2dccf854e52afbb37636e
4
- data.tar.gz: bf7e225a19b4c04458055042892da41c243386498bbad84f706206085f0f7ac5
3
+ metadata.gz: ce4b940ae3ec03ef697466cea01274581f36826366548115a9266d4535362874
4
+ data.tar.gz: 3ecfb26f8a2b69dfb509f6034bbeb00f63a9234442ff389d1742f89582bffbc5
5
5
  SHA512:
6
- metadata.gz: 7c2eccbafb9cb2ae953a7a869d30794750626d8754f0620c2b769a27a8c05967495ecbd3f4a1965af91c0b94649b46610b137850e29e26c39b8eb865f7acde1f
7
- data.tar.gz: 1d126a0a6cd299b5ffc7fe23a58d01223310d7139649b765c4cae0b34444432a7dba035858520ecbb211a7b0e415e9016695a2b51d825ff24c6cdf4bdfccca1a
6
+ metadata.gz: 39d8cf53126bc3799572862576e3c21a5c32d2348e63f8ff4d928ddcbc3b0e0a8a343f5dbe34d4d54a397284a25012208c5bbc1cba0a2876c26a7f9b339761ae
7
+ data.tar.gz: 548344408cbce8728823d0564f61b3d7e7015f2181260e73eaffa63b3f734e1e679ae320a79e140a765bdea9132248cf3b037735909157a5e6579e3e941bcc39
data/.env ADDED
@@ -0,0 +1 @@
1
+ GET_TOKEN=eG5hJT9SZUQyYXpyLUBUX2pqJVU0eiRmVjl5RisjdUV0WmY4LTRWanZ2Rz1VVyo3VHlYXndCbms4V3dkLU1MWA==
data/Gemfile CHANGED
@@ -6,3 +6,4 @@ source "https://rubygems.org"
6
6
  gemspec
7
7
 
8
8
  gem "rake", "~> 13.0"
9
+ gem "dotenv"
data/Gemfile.lock ADDED
@@ -0,0 +1,21 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ gems-validator (0.1.3)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ dotenv (2.7.6)
10
+ rake (13.0.6)
11
+
12
+ PLATFORMS
13
+ x86_64-linux
14
+
15
+ DEPENDENCIES
16
+ dotenv
17
+ gems-validator!
18
+ rake (~> 13.0)
19
+
20
+ BUNDLED WITH
21
+ 2.3.7
@@ -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 = ENV['GET_TOKEN']
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.1"
4
+ VERSION = "0.2.0"
5
5
  end
@@ -1,7 +1,16 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'net/http'
4
+ require 'uri'
5
+ require 'json'
6
+ require 'dotenv'
7
+
8
+ Dotenv.load
9
+
3
10
  require_relative "gems-validator/version"
4
11
  require_relative "gems-validator/validate"
12
+ require_relative "gems-validator/format-error"
13
+ require_relative "gems-validator/gems-service"
5
14
 
6
15
  module GemsValidator
7
16
  class << self
@@ -10,13 +19,8 @@ module GemsValidator
10
19
  @registered = true
11
20
 
12
21
  Bundler::Plugin.add_hook('before-install') do |dependencie|
13
- puts "aaaaaaaaaaaaaaaaaaaaaaa"
14
22
  GemsValidator::Validate.exec(dependencie)
15
23
  end
16
-
17
- Bundler::Plugin.add_hook('after-install') do |spec_install|
18
- puts "aaaaaaaaaaaaaaaaaaaaaaa"
19
- end
20
24
  end
21
25
  end
22
26
  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.1
4
+ version: 0.2.0
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:
@@ -17,10 +17,14 @@ executables: []
17
17
  extensions: []
18
18
  extra_rdoc_files: []
19
19
  files:
20
+ - ".env"
20
21
  - ".rspec"
21
22
  - Gemfile
23
+ - Gemfile.lock
22
24
  - Rakefile
23
25
  - lib/gems-validator.rb
26
+ - lib/gems-validator/format-error.rb
27
+ - lib/gems-validator/gems-service.rb
24
28
  - lib/gems-validator/validate.rb
25
29
  - lib/gems-validator/version.rb
26
30
  - plugins.rb