samanage 1.8.7 → 1.8.8

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
  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