quark-publisher 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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: