Class: Supermarket::API
- Inherits:
-
Object
- Object
- Supermarket::API
- Defined in:
- lib/bundles/inspec-supermarket/api.rb
Constant Summary collapse
- SUPERMARKET_URL =
'https://supermarket.chef.io'.freeze
Class Method Summary collapse
-
.exist?(profile) ⇒ Boolean
verifies that a profile exists.
- .find(profile) ⇒ Object
- .get(url, params) ⇒ Object
-
.info(profile) ⇒ Object
displays profile infos.
- .profile_name(profile) ⇒ Object
-
.profiles ⇒ Object
displays a list of profiles.
-
.same?(profile, supermarket_tool) ⇒ Boolean
compares a profile with the supermarket tool info.
- .send_request(uri, req) ⇒ Object
- .supermarket_url ⇒ Object
Class Method Details
.exist?(profile) ⇒ Boolean
verifies that a profile exists
63 64 65 |
# File 'lib/bundles/inspec-supermarket/api.rb', line 63 def self.exist?(profile) !find(profile).nil? end |
.find(profile) ⇒ Object
53 54 55 56 57 58 59 60 |
# File 'lib/bundles/inspec-supermarket/api.rb', line 53 def self.find(profile) profiles = Supermarket::API.profiles if !profiles.empty? index = profiles.index { |t| same?(profile, t) } # return profile or nil profiles[index] if !index.nil? && index >= 0 end end |
.get(url, params) ⇒ Object
67 68 69 70 71 72 |
# File 'lib/bundles/inspec-supermarket/api.rb', line 67 def self.get(url, params) uri = URI.parse(url) uri.query = URI.encode_www_form(params) req = Net::HTTP::Get.new(uri) send_request(uri, req) end |
.info(profile) ⇒ Object
displays profile infos
33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/bundles/inspec-supermarket/api.rb', line 33 def self.info(profile) _tool_owner, tool_name = profile_name("supermarket://#{profile}") url = "#{SUPERMARKET_URL}/api/v1/tools/#{tool_name}" _success, data = get(url, {}) if !data.nil? JSON.parse(data) else {} end rescue JSON::ParserError {} end |
.profile_name(profile) ⇒ Object
25 26 27 28 29 30 |
# File 'lib/bundles/inspec-supermarket/api.rb', line 25 def self.profile_name(profile) uri = URI(profile) [uri.host, uri.path[1..-1]] rescue URI::Error => _e nil end |
.profiles ⇒ Object
displays a list of profiles
14 15 16 17 18 19 20 21 22 23 |
# File 'lib/bundles/inspec-supermarket/api.rb', line 14 def self.profiles url = "#{SUPERMARKET_URL}/api/v1/tools-search" _success, data = get(url, { q: 'compliance_profile' }) if !data.nil? profiles = JSON.parse(data) profiles['items'] else [] end end |
.same?(profile, supermarket_tool) ⇒ Boolean
compares a profile with the supermarket tool info
47 48 49 50 51 |
# File 'lib/bundles/inspec-supermarket/api.rb', line 47 def self.same?(profile, supermarket_tool) tool_owner, tool_name = profile_name(profile) tool = "#{SUPERMARKET_URL}/api/v1/tools/#{tool_name}" supermarket_tool['tool_owner'] == tool_owner && supermarket_tool['tool'] == tool end |
.send_request(uri, req) ⇒ Object
74 75 76 77 78 79 80 |
# File 'lib/bundles/inspec-supermarket/api.rb', line 74 def self.send_request(uri, req) # send request res = Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == 'https') {|http| http.request(req) } [res.is_a?(Net::HTTPSuccess), res.body] end |
.supermarket_url ⇒ Object
9 10 11 |
# File 'lib/bundles/inspec-supermarket/api.rb', line 9 def self.supermarket_url SUPERMARKET_URL end |