quark-publisher 0.1.0 → 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: 013e858ef2331ca6629dae83892c87b6b76c4f66ad08b30075eead8c1a2fa261
4
- data.tar.gz: 00efde7c8cab99509614833f7f33fc8cd9845fe4ca2d3b1eade49c415c8945e2
3
+ metadata.gz: c4b995d0efcbbaf4ea9b37d19e9e4f80afc08325619e9be315ead3752df9e549
4
+ data.tar.gz: ac638014e6c038580235c5ef7a5db26651e814eecd2022be8344ba0e6a86b77f
5
5
  SHA512:
6
- metadata.gz: dd3b6c824d92500431bc1204f33199abff38c07e6164170bf169f2f2ab6f2edd65648c570dabf71a4645134a26b277fde3c821b676a35023f13adff261f9925b
7
- data.tar.gz: 8c6c105c229b315b24f653e48a87e04cd1afd9e4da356d099ed8cb2a76a5d2d103a7c3cfc7bfd61871aba854d3679039398df972a8728cf838a2d4f9bbb152b7
6
+ metadata.gz: 63a03d137e6cf773fa5ce3e9becd493ddf7f548fc8fe42fc92a88954a9d8509192ac93df1d7d4479b226e6804e177435967ffdb07cc666f890f318a5680c9479
7
+ data.tar.gz: 56deadb9ec9bf723f339076be5e640c3a3d06b0375fdace60409d8e9118d3ab1179446af8bea7059f5575254cbfb70f97deff51ace5020a07118c6b539435693
data/Gemfile.lock CHANGED
@@ -2,14 +2,24 @@ PATH
2
2
  remote: .
3
3
  specs:
4
4
  quark-publisher (0.1.0)
5
+ activesupport (~> 5.2)
6
+ faraday (~> 0.14)
5
7
  nokogiri (~> 1.8)
6
8
 
7
9
  GEM
8
10
  remote: https://rubygems.org/
9
11
  specs:
12
+ activesupport (5.2.1)
13
+ concurrent-ruby (~> 1.0, >= 1.0.2)
14
+ i18n (>= 0.7, < 2)
15
+ minitest (~> 5.1)
16
+ tzinfo (~> 1.1)
10
17
  ansi (1.5.0)
11
18
  builder (3.2.3)
12
19
  coderay (1.1.2)
20
+ concurrent-ruby (1.0.5)
21
+ faraday (0.14.0)
22
+ multipart-post (>= 1.2, < 3)
13
23
  ffi (1.9.25)
14
24
  formatador (0.2.5)
15
25
  guard (2.14.2)
@@ -25,6 +35,8 @@ GEM
25
35
  guard-minitest (2.4.6)
26
36
  guard-compat (~> 1.2)
27
37
  minitest (>= 3.0)
38
+ i18n (1.1.0)
39
+ concurrent-ruby (~> 1.0)
28
40
  listen (3.1.5)
29
41
  rb-fsevent (~> 0.9, >= 0.9.4)
30
42
  rb-inotify (~> 0.9, >= 0.9.7)
@@ -38,6 +50,7 @@ GEM
38
50
  builder
39
51
  minitest (>= 5.0)
40
52
  ruby-progressbar
53
+ multipart-post (2.0.0)
41
54
  nenv (0.3.0)
42
55
  nokogiri (1.8.4)
43
56
  mini_portile2 (~> 2.3.0)
@@ -55,6 +68,9 @@ GEM
55
68
  ruby_dep (1.5.0)
56
69
  shellany (0.0.1)
57
70
  thor (0.20.0)
71
+ thread_safe (0.3.6)
72
+ tzinfo (1.2.5)
73
+ thread_safe (~> 0.1)
58
74
 
59
75
  PLATFORMS
60
76
  ruby
@@ -0,0 +1,22 @@
1
+ module Quark
2
+ module Publisher
3
+ module Asset
4
+ def self.get_by_id(id, include_children: false)
5
+ response = self.send_request(id, include_children: include_children)
6
+ Nokogiri::XML(response.body)
7
+ end
8
+
9
+ private
10
+
11
+ # Method used to send the request -- exists for easy testing purposes
12
+ #
13
+ # @return [Faraday::Response]
14
+ def self.send_request(id, include_children: false)
15
+ Quark::Publisher::Request.get do |request|
16
+ request.path = request.path + "/assets/#{id}"
17
+ request.params['includechildren'] = include_children
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,20 @@
1
+ module Quark
2
+ module Publisher
3
+ module AssetBinary
4
+ def self.get_by_id(id)
5
+ self.send_request(id).body
6
+ end
7
+
8
+ private
9
+
10
+ # Method used to send the request -- exists for easy testing purposes
11
+ #
12
+ # @return [Faraday::Response]
13
+ def self.send_request(id)
14
+ Quark::Publisher::Request.get do |request|
15
+ request.path = request.path + "/assets/#{id}"
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -1,6 +1,6 @@
1
1
  module Quark
2
2
  module Publisher
3
- class Document
3
+ module Collection
4
4
  end
5
5
  end
6
6
  end
@@ -0,0 +1,40 @@
1
+ require 'faraday'
2
+
3
+ module Quark
4
+ module Publisher
5
+ module Request
6
+ def self.get # :yields: [Faraday::Request] Yields a request object.
7
+ conn = Faraday.new(url: Quark::Publisher.configuration.base_uri)
8
+ conn.ssl.verify_mode = OpenSSL::SSL::VERIFY_NONE unless Isaca.configuration.verify_ssl
9
+
10
+ response = conn.get do |request|
11
+ set_default_request_options(request)
12
+ yield(request) if block_given?
13
+ end
14
+
15
+ if response.success?
16
+ return response
17
+ else
18
+ xml = Nokogiri::XML(response.body)
19
+ exception_code = xml.xpath("//exceptionCode")
20
+
21
+ if exception_code.text
22
+ reason = exception_code.text
23
+ else
24
+ reason = 'unknown'
25
+ end
26
+
27
+ raise ServiceError.new "Error when calling Quark Publisher. [Status Code: #{response.status}] #{reason}"
28
+ end
29
+ end
30
+
31
+ private
32
+
33
+ def self.set_default_request_options(request)
34
+ request.path = URI(Quark::Publisher.configuration.base_uri).path
35
+ request.params['loginname'] = Quark::Publisher.configuration.username
36
+ request.params['loginpassword'] = Quark::Publisher.configuration.password
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,35 @@
1
+ module Quark
2
+ module Publisher
3
+ module SavedQuery
4
+ def self.get(named_query)
5
+ response = self.send_request(named_query)
6
+ hash_assets_response(response.body)
7
+ end
8
+
9
+ private
10
+
11
+ def self.send_request(named_query)
12
+ Quark::Publisher::Request.get do |request|
13
+ request.path = request.path + "/search/#{named_query}"
14
+ end
15
+ end
16
+
17
+ def self.hash_assets_response(response)
18
+ xml = Nokogiri::XML(response)
19
+ assets = xml.xpath("//assetInfo")
20
+
21
+ assets.collect do |asset|
22
+ hash = { id: asset.attr('id') }
23
+
24
+ asset.children.children.each do |attribute|
25
+ if attribute.instance_of?(Nokogiri::XML::Element)
26
+ hash[attribute.attr('name').parameterize.underscore.to_sym] = attribute.text.gsub("\n", '')
27
+ end
28
+ end
29
+
30
+ hash
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,6 @@
1
+ module Quark
2
+ module Publisher
3
+ class ServiceError < StandardError
4
+ end
5
+ end
6
+ end
@@ -1,5 +1,5 @@
1
1
  module Quark
2
2
  module Publisher
3
- VERSION = "0.1.0"
3
+ VERSION = "0.2.0"
4
4
  end
5
5
  end
@@ -1,5 +1,10 @@
1
1
  require "quark/publisher/version"
2
- require "quark/publisher/document"
2
+ require "quark/publisher/service_error"
3
+ require "quark/publisher/request"
4
+ require "quark/publisher/asset"
5
+ require "quark/publisher/asset_binary"
6
+ require "quark/publisher/collection"
7
+ require "quark/publisher/saved_query"
3
8
 
4
9
  module Quark
5
10
  module Publisher
@@ -73,6 +78,13 @@ module Quark
73
78
  #
74
79
  # Quark::Publisher.configure {|config| config.base_uri = 'https://quarkendpoint.com/api/'}
75
80
  attr_accessor :base_uri
81
+
82
+ # If Quark Publisher library should verify ssl
83
+ #
84
+ # You can set verify ssl in the configuration for this library. Defaults to true.
85
+ #
86
+ # Quark::Publisher.configure {|config| config.verify_ssl = true}
87
+ attr_accessor :verify_ssl
76
88
  end
77
89
  end
78
90
  end
@@ -22,6 +22,8 @@ Gem::Specification.new do |spec|
22
22
  spec.require_paths = ["lib"]
23
23
 
24
24
  spec.add_dependency "nokogiri", "~> 1.8"
25
+ spec.add_dependency "faraday", "~> 0.14"
26
+ spec.add_dependency "activesupport", "~> 5.2"
25
27
  spec.add_development_dependency "bundler", "~> 1.16"
26
28
  spec.add_development_dependency "rake", "~> 10.0"
27
29
  spec.add_development_dependency "minitest", "~> 5.0"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: quark-publisher
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Orahood
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-09-18 00:00:00.000000000 Z
11
+ date: 2019-01-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -24,6 +24,34 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.8'
27
+ - !ruby/object:Gem::Dependency
28
+ name: faraday
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.14'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.14'
41
+ - !ruby/object:Gem::Dependency
42
+ name: activesupport
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '5.2'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '5.2'
27
55
  - !ruby/object:Gem::Dependency
28
56
  name: bundler
29
57
  requirement: !ruby/object:Gem::Requirement
@@ -125,7 +153,12 @@ files:
125
153
  - bin/console
126
154
  - bin/setup
127
155
  - lib/quark/publisher.rb
128
- - lib/quark/publisher/document.rb
156
+ - lib/quark/publisher/asset.rb
157
+ - lib/quark/publisher/asset_binary.rb
158
+ - lib/quark/publisher/collection.rb
159
+ - lib/quark/publisher/request.rb
160
+ - lib/quark/publisher/saved_query.rb
161
+ - lib/quark/publisher/service_error.rb
129
162
  - lib/quark/publisher/version.rb
130
163
  - quark-publisher.gemspec
131
164
  homepage: