samanage 1.8.7 → 1.8.8

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
  SHA1:
3
- metadata.gz: e1dc65a5a8e92d420166469ca9959c5555e1538f
4
- data.tar.gz: c15598bf31ea9488ba0d7f8897484bd0c0ad7756
3
+ metadata.gz: 4cedeeea723b8028baf7e86f24cd0fdc19e92ab1
4
+ data.tar.gz: e5c30e6130bed20c7ab1307af38fad03ecaad412
5
5
  SHA512:
6
- metadata.gz: db8cc22baef9596bcbb263be8c51efda54e5c99656fcc2b2825e98033c8342a69bf1795e1621f50a39b6159dcfeb46f6066cc4c32d095cc18a511d48cb9814ab
7
- data.tar.gz: 33d2093ce8704852315ca18edcc9b40433da36f16c9453de3637bb737ca9663cdf79aeef2044484ab7ca0862349668378eb6c8278d203bcd06c51b8900c64066
6
+ metadata.gz: 80188be6d78b1eab07e99d5a076485fed80ddd2ba7c2cfc400817a0df3173d7ec45252e7fdb88f096e61f0abcc4e9ad5b64652fcefbaa15a7695b1483cd9a12f
7
+ data.tar.gz: fda39d8acf665d196c624102ddb1aa50fdd6d01dcba93eb9e640a4a34894f4968d6a7186ea96e608f704cb6ecbec4d506199da70f09968391a80557e89777f3f
data/changelog.md CHANGED
@@ -1,3 +1,8 @@
1
+ # 1.8.8
2
+ - Base level .execute delete functionality
3
+ - Error message for invalid http methods
4
+ - Added audit_archive to incident options
5
+
1
6
  # 1.8.7
2
7
  - Fixing retry bug
3
8
 
data/lib/samanage/api.rb CHANGED
@@ -20,9 +20,8 @@ module Samanage
20
20
 
21
21
  # Development mode forzes authorization & prepopulates custom forms/fields and admins
22
22
  # datacenter should equal 'eu' or blank
23
- def initialize(token: nil, datacenter: nil, development_mode: false, max_retries: MAX_RETRIES)
24
- self.max_retries = max_retries
25
- self.token = token if token
23
+ def initialize(token: , datacenter: nil, development_mode: false, max_retries: MAX_RETRIES)
24
+ self.token = token
26
25
  if !datacenter.nil? && datacenter.to_s.downcase != 'eu'
27
26
  datacenter = nil
28
27
  end
@@ -30,6 +29,7 @@ module Samanage
30
29
  self.base_url = "https://api#{self.datacenter.to_s.downcase}.samanage.com/"
31
30
  self.content_type = 'json'
32
31
  self.admins = []
32
+ self.max_retries = max_retries
33
33
  if development_mode
34
34
  if self.authorized? != true
35
35
  self.authorize
@@ -87,8 +87,12 @@ module Samanage
87
87
  api_call = self.class.post(full_path, query: payload, headers: headers)
88
88
  when 'put'
89
89
  api_call = self.class.put(full_path, query: payload, headers: headers)
90
+ when 'delete'
91
+ api_call = self.class.put(full_path, query: payload, headers: headers)
92
+ else
93
+ raise Samanage::Error.new(response: {response: 'Unknown HTTP method'})
90
94
  end
91
- rescue Errno::ECONNREFUSED, Net::OpenTimeout => e
95
+ rescue Errno::ECONNREFUSED, Net::OpenTimeout, Errno::ETIMEDOUT => e
92
96
  puts "#{e} - #{e.class}"
93
97
  puts "Retry: #{retries}/#{self.max_retries}"
94
98
  retries += 1
@@ -8,15 +8,25 @@ module Samanage
8
8
  end
9
9
 
10
10
 
11
- # Returns all incidents
11
+ # Returns all incidents.
12
+ # Options:
13
+ # - audit_archives: true
14
+ # - layout: 'long'
12
15
  def collect_incidents(options: {})
13
- page = 1
14
16
  incidents = Array.new
15
17
  total_pages = self.get_incidents[:total_pages]
16
- layout = options[:layout] == 'long' ? '&layout=long' : nil
17
- while page <= total_pages
18
- incidents += self.execute(http_method: 'get', path: "incidents.json?page=#{page}#{layout}")[:data]
19
- page += 1
18
+ 1.upto(total_pages) do |page|
19
+ if options[:audit_archives]
20
+ archives = 'layout=long&audit_archive=true'
21
+ paginated_incidents = self.execute(path: "incidents.json?page=#{page}")[:data]
22
+ paginated_incidents.map do |incident|
23
+ archive_path = "incidents/#{incident['id']}.json?#{archives}"
24
+ incidents << self.execute(path: archive_path)[:data]
25
+ end
26
+ else
27
+ layout = options[:layout] == 'long' ? '&layout=long' : nil
28
+ incidents += self.execute(http_method: 'get', path: "incidents.json?page=#{page}#{layout}")[:data]
29
+ end
20
30
  end
21
31
  incidents
22
32
  end
@@ -1,8 +1,9 @@
1
1
  module Samanage
2
- # Errors in gem
3
2
  class Error < StandardError
4
3
  attr_accessor :status_code, :response, :error
4
+
5
5
  def initialize(error: nil, response: {})
6
+ self.error = error
6
7
  if response.class == Hash
7
8
  self.status_code = response[:code]
8
9
  self.response = response[:data] ||= response[:response]
@@ -11,10 +12,8 @@ module Samanage
11
12
  self.response = response
12
13
  end
13
14
 
14
- self.error = error
15
15
  puts "[Error] #{self.status_code}: #{self.response}"
16
16
  end
17
-
18
17
  end
19
18
 
20
19
  # API Errors
@@ -1,3 +1,3 @@
1
1
  module Samanage
2
- VERSION = '1.8.7'
2
+ VERSION = '1.8.8'
3
3
  end
@@ -26,10 +26,10 @@ describe Samanage::Api do
26
26
  end
27
27
 
28
28
  it 'collects all comments' do
29
- incident_id = @controller.get_incidents()[:data].sample.dig('id')
30
- incident_id = 19394209
31
- comments_api = @controller.get_comments(incident_id: incident_id)
32
- comments_found = @controller.collect_comments(incident_id: incident_id)
29
+ ## incident_id = @controller.get_incidents()[:data].sample.dig('id')
30
+ # incident_id = 19394209
31
+ # comments_api = @controller.get_comments(incident_id: incident_id)
32
+ # comments_found = @controller.collect_comments(incident_id: incident_id)
33
33
 
34
34
  # Total count bug
35
35
  # expect(comments_api[:total_count]).to eq(comments_found.size)
@@ -74,10 +74,20 @@ describe Samanage::Api do
74
74
  expect(incident_update[:code]).to eq(200).or(201)
75
75
  end
76
76
  it 'finds more data for option[:layout] = "long"' do
77
+ full_layout_incident_keys = @controller.incidents(options: {layout: 'long'}).first.keys
78
+ basic_incident_keys = @controller.incidents.sample.keys
79
+ expect(basic_incident_keys.size).to be < full_layout_incident_keys.size
80
+ end
81
+ it 'finds more audit archives for option[:audit_archives] = true' do
82
+ incident_keys = @controller.incidents(options: {audit_archives: true}).sample.keys
83
+ expect(incident_keys).to include('audits')
84
+ end
85
+ it 'finds audit archives for options: {audit_archives: true, layout: "long"}' do
86
+ full_incident_keys = @controller.incidents(options: {audit_archives: true}).sample.keys
77
87
  basic_incident_keys = @controller.incidents.sample.keys
78
- full_incident_keys = @controller.incidents(options: {layout: 'long'}).sample.keys
79
88
  expect(basic_incident_keys.size).to be < full_incident_keys.size
89
+ expect(full_incident_keys).to include('audits')
80
90
  end
81
91
  end
82
92
  end
83
- end
93
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: samanage
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.7
4
+ version: 1.8.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Walls
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-12-27 00:00:00.000000000 Z
11
+ date: 2018-01-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty