gems-validator 0.1.3 → 0.2.2

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: 4df4699ba5c8041c4914b850518597b09266c9c2d6da73ed27bb2638c3095967
4
- data.tar.gz: 5a388881aa540451eabc6b73aeb718678559c69d4ed964f9a8b73e6c9724e1a3
3
+ metadata.gz: 8ae37438bdbfd143a9bfdb89fa9a5ab9a28b002485fd2fa99312949479650b81
4
+ data.tar.gz: 1ed357c9b869b88541ae5954868a7111b828eddbce9f50ef995bc392d5055375
5
5
  SHA512:
6
- metadata.gz: 5337c007439bf594d884c112fa8a385fb81db644528874a2b393353e7693df3845c8d2137452c805486f46aebedf0276efafb010f24d2273359a03b8e6bfe1c9
7
- data.tar.gz: '0059dc66b395fde2ca5d61d5ed1386fc9523d4f7bd7ce0e267fd5618e2244f10754ba3ebf5e0562ac12b41be793a288ac3e5b7ec2f3992b1325aa6e0244afcce'
6
+ metadata.gz: cc608f741c42a511e9085a0dc06e03a402e9223f651e201c91be86b9bdd14963ca3cb7c71b926cdc25a584a781bd890f30884fa9c5ed57216d2078425be440ca
7
+ data.tar.gz: a52a74d01b16e547aea61cdae7810d7eadb8802760ff5af9d2b27db2f5e4f5270623d889c426efeca5f5fbd74d5ac40d77644ea7932d62a3192abe39e956bb81
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,43 @@
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
+ Net::HTTP.start(uri.host, uri.port) do |http|
37
+ request = Net::HTTP::Get.new uri
38
+ request["Authorization"] = "Bearer #{@access_token}"
39
+ response = http.request request
40
+ end
41
+ end
42
+ end
43
+ end
@@ -4,12 +4,63 @@ module GemsValidator
4
4
  module Validate
5
5
  class << self
6
6
  def exec(gem)
7
- if gem.name == "rake"
8
- puts "Não pode instalar"
9
- raise "NÃO PODE INSTALAR"
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)
10
15
  end
11
- puts "Pode instalar"
12
- puts gem
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()
13
64
  end
14
65
  end
15
66
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GemsValidator
4
- VERSION = "0.1.3"
4
+ VERSION = "0.2.2"
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
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.3
4
+ version: 0.2.2
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