samanage 1.8.3 → 1.8.6
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 +4 -4
- data/README.md +10 -3
- data/changelog.md +12 -0
- data/lib/samanage.rb +2 -0
- data/lib/samanage/api.rb +8 -2
- data/lib/samanage/api/incidents.rb +3 -2
- data/lib/samanage/api/utils.rb +10 -0
- data/lib/samanage/language.rb +51 -0
- data/lib/samanage/version.rb +1 -1
- data/spec/api/samanage_incident_spec.rb +5 -0
- data/spec/api/samanage_util_spec.rb +20 -0
- data/spec/samanage_language_spec.rb +19 -0
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8eb0f2b3c57cf1e5b9b79b22c49f0d8e413c9c36
|
4
|
+
data.tar.gz: fd23d7f431814e09ca1f354e25fffeca6d1d124b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f7fd9bcaf93c48131728a25c93f038489e993c5f26e53981592e8dfb1483f4baff11755349c9ad309f2309af12d29b502740a75b54c575545ec03a6d0f46a3d5
|
7
|
+
data.tar.gz: 9d26eec84dc84809c951f26787cc9781751c70c8f83def1148aa8a3dfef7662b2b3cadff653f056a43325ebc7efbab666e856dad2402f2515a3b2f93585d5821
|
data/README.md
CHANGED
@@ -24,21 +24,28 @@ Initialize API controller
|
|
24
24
|
api_controller = Samanage::Api.new(token: 'abc123')
|
25
25
|
```
|
26
26
|
|
27
|
+
- Create a user
|
28
|
+
```ruby
|
29
|
+
user = {user: { name: 'John Doe', email: 'john.doe@example.com'}}
|
30
|
+
api_controller.create_user(payload: user)
|
31
|
+
```
|
32
|
+
|
33
|
+
|
27
34
|
- Find a user by email
|
28
35
|
```ruby
|
29
|
-
|
36
|
+
my_user = api_controller.find_user_by_email(email: 'user@example.com')
|
30
37
|
```
|
31
38
|
|
32
39
|
|
33
40
|
- Update incident by ID
|
34
41
|
```ruby
|
35
42
|
incident_data = {incident: { priority: 'Critical' }}
|
36
|
-
incident_update = api_controller.
|
43
|
+
incident_update = api_controller.update_incident(id: 123, payload: incident_data)
|
37
44
|
```
|
38
45
|
|
39
46
|
- Update hardware
|
40
47
|
```ruby
|
41
|
-
hardware = {
|
48
|
+
hardware = {hardware: {name: 'My Computer'}}
|
42
49
|
result = api_controller.update_hardware(id: 123, payload: hardware)
|
43
50
|
```
|
44
51
|
|
data/changelog.md
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
# 1.8.6
|
2
|
+
- Removing layout=long verbosity
|
3
|
+
|
4
|
+
# 1.8.5
|
5
|
+
- Adding option for incidents layout=long
|
6
|
+
|
7
|
+
# 1.8.3
|
8
|
+
- Additional Request Timeout retry support
|
9
|
+
- Support for non-parsed responseq
|
10
|
+
- Moving non object specific methods to samanage/api/utils
|
11
|
+
- Added activation emails
|
12
|
+
|
1
13
|
# 1.8.2
|
2
14
|
- Adding Category support
|
3
15
|
|
data/lib/samanage.rb
CHANGED
@@ -15,7 +15,9 @@ require 'samanage/api/other_assets'
|
|
15
15
|
require 'samanage/api/requester'
|
16
16
|
require 'samanage/api/sites'
|
17
17
|
require 'samanage/api/users'
|
18
|
+
require 'samanage/api/utils'
|
18
19
|
require 'samanage/error'
|
20
|
+
require 'samanage/language'
|
19
21
|
require 'samanage/url_builder'
|
20
22
|
require 'samanage/version'
|
21
23
|
|
data/lib/samanage/api.rb
CHANGED
@@ -87,7 +87,7 @@ module Samanage
|
|
87
87
|
when 'put'
|
88
88
|
api_call = self.class.put(full_path, query: payload, headers: headers)
|
89
89
|
end
|
90
|
-
rescue Errno::ECONNREFUSED => e
|
90
|
+
rescue Errno::ECONNREFUSED, Net::OpenTimeout => e
|
91
91
|
puts "#{e} - #{e.class}"
|
92
92
|
puts "Retry: #{self.retries}/#{self.max_retries}"
|
93
93
|
self.retries += 1
|
@@ -109,7 +109,13 @@ module Samanage
|
|
109
109
|
# Error cases
|
110
110
|
case response[:code]
|
111
111
|
when 200..201
|
112
|
-
|
112
|
+
begin
|
113
|
+
response[:data] = JSON.parse(api_call.body)
|
114
|
+
rescue JSON::ParserError => e
|
115
|
+
response[:data] = api_call.body
|
116
|
+
puts "** Warning **#{e.class}"
|
117
|
+
puts e
|
118
|
+
end
|
113
119
|
response
|
114
120
|
when 401
|
115
121
|
response[:data] = api_call.body
|
@@ -9,12 +9,13 @@ module Samanage
|
|
9
9
|
|
10
10
|
|
11
11
|
# Returns all incidents
|
12
|
-
def collect_incidents
|
12
|
+
def collect_incidents(options: {})
|
13
13
|
page = 1
|
14
14
|
incidents = Array.new
|
15
15
|
total_pages = self.get_incidents[:total_pages]
|
16
|
+
layout = options[:layout] == 'long' ? '&layout=long' : nil
|
16
17
|
while page <= total_pages
|
17
|
-
incidents += self.execute(http_method: 'get', path: "incidents.json?page=#{page}")[:data]
|
18
|
+
incidents += self.execute(http_method: 'get', path: "incidents.json?page=#{page}#{layout}")[:data]
|
18
19
|
page += 1
|
19
20
|
end
|
20
21
|
incidents
|
@@ -0,0 +1,10 @@
|
|
1
|
+
module Samanage
|
2
|
+
class Api
|
3
|
+
# returns
|
4
|
+
def send_activation_email(email: )
|
5
|
+
user_id = self.find_user_id_by_email(email: email)
|
6
|
+
raise Samanage::Error.new(error: 'Invalid Email', response: {}) unless user_id
|
7
|
+
self.execute(http_method: 'put', path: "users/#{user_id}.json?send_activation_email=1&add_callbacks=1")
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
module Samanage
|
2
|
+
LANGUAGE = {
|
3
|
+
'arabic' => 'ar',
|
4
|
+
'belarusian' => 'be',
|
5
|
+
'bulgarian' => 'bg',
|
6
|
+
'catalan' => 'ca',
|
7
|
+
'chinese simplified' => 'zh-cn',
|
8
|
+
'chinese traditional' => 'zh-tw',
|
9
|
+
'croatian' => 'hr',
|
10
|
+
'czech' => 'cs',
|
11
|
+
'danish' => 'da',
|
12
|
+
'dutch' => 'nl',
|
13
|
+
'english' => 'en',
|
14
|
+
'estonian' => 'et',
|
15
|
+
'finnish' => 'fi',
|
16
|
+
'french' => 'fr',
|
17
|
+
'german' => 'de',
|
18
|
+
'greek' => 'el',
|
19
|
+
'hebrew' => 'he',
|
20
|
+
'hindi' => 'hi-in',
|
21
|
+
'hungarian' => 'hu',
|
22
|
+
'bahasa indonesia (indonesian)' => 'id',
|
23
|
+
'italian' => 'it',
|
24
|
+
'japanese' => 'ja',
|
25
|
+
'korean' => 'ko',
|
26
|
+
'latvian' => 'lv',
|
27
|
+
'lithuanian' => 'lt',
|
28
|
+
'malay' => 'ms',
|
29
|
+
'macedonian' => 'mk',
|
30
|
+
'norwegian' => 'nb',
|
31
|
+
'persian' => 'fa',
|
32
|
+
'polish' => 'pl',
|
33
|
+
'portuguese (brazil)' => 'pt-br',
|
34
|
+
'portuguese (portugal)' => 'pt-pt',
|
35
|
+
'romanian' => 'ro',
|
36
|
+
'russian' => 'ru',
|
37
|
+
'serbian' => 'sr',
|
38
|
+
'slovak' => 'sk',
|
39
|
+
'slovenian' => 'sl',
|
40
|
+
'spanish' => 'es',
|
41
|
+
'spanish (latin america)' => 'es-419',
|
42
|
+
'swedish' => 'sv',
|
43
|
+
'thai' => 'th',
|
44
|
+
'turkish' => 'tr',
|
45
|
+
'ukrainian' => 'uk',
|
46
|
+
'vietnamese' => 'vi',
|
47
|
+
}
|
48
|
+
def self.lookup_language(language)
|
49
|
+
return LANGUAGE[language.to_s.downcase] ||= (language.to_s.downcase if LANGUAGE.values.include?(language.to_s.downcase))
|
50
|
+
end
|
51
|
+
end
|
data/lib/samanage/version.rb
CHANGED
@@ -73,6 +73,11 @@ describe Samanage::Api do
|
|
73
73
|
expect(incident_update[:data]['description']).to eq(description)
|
74
74
|
expect(incident_update[:code]).to eq(200).or(201)
|
75
75
|
end
|
76
|
+
it 'finds more data for option[:layout] = "long"' do
|
77
|
+
basic_incident_keys = @controller.incidents.sample.keys
|
78
|
+
full_incident_keys = @controller.incidents(options: {layout: 'long'}).sample.keys
|
79
|
+
expect(basic_incident_keys.size).to be < full_incident_keys.size
|
80
|
+
end
|
76
81
|
end
|
77
82
|
end
|
78
83
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'samanage'
|
2
|
+
describe Samanage::Api do
|
3
|
+
context 'Utils' do
|
4
|
+
describe 'API Functions' do
|
5
|
+
before(:each) do
|
6
|
+
TOKEN ||= ENV['SAMANAGE_TEST_API_TOKEN']
|
7
|
+
@controller = Samanage::Api.new(token: TOKEN)
|
8
|
+
end
|
9
|
+
it 'sends an activation email' do
|
10
|
+
valid_email = @controller.users.sample['email']
|
11
|
+
send_email = @controller.send_activation_email(email: valid_email)
|
12
|
+
expect(send_email[:code]).to be(200)
|
13
|
+
end
|
14
|
+
it 'fails for invalid email' do
|
15
|
+
invalid_email = @controller.users.sample['email'].gsub!('@','$')
|
16
|
+
expect{@controller.send_activation_email(email: invalid_email)}.to raise_error(Samanage::Error)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
describe Samanage do
|
3
|
+
describe 'Language' do
|
4
|
+
context 'when looking up language' do
|
5
|
+
it 'should find case-insensitive valid language codes' do
|
6
|
+
valid_lang = 'Czech'
|
7
|
+
valid_lang_code = 'cs'
|
8
|
+
expect(Samanage.lookup_language(valid_lang)).to eq(valid_lang_code)
|
9
|
+
expect(Samanage.lookup_language(valid_lang_code.upcase)).to eq(valid_lang_code)
|
10
|
+
end
|
11
|
+
it 'should return nil for invalid language codes' do
|
12
|
+
invalid_lang = 'Mandalorian'
|
13
|
+
invalid_lang_code = 'zzzzzzzzz'
|
14
|
+
expect(Samanage.lookup_language(invalid_lang)).to be(nil)
|
15
|
+
expect(Samanage.lookup_language(invalid_lang_code)).to be(nil)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
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.
|
4
|
+
version: 1.8.6
|
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-
|
11
|
+
date: 2017-12-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
@@ -67,7 +67,9 @@ files:
|
|
67
67
|
- lib/samanage/api/requester.rb
|
68
68
|
- lib/samanage/api/sites.rb
|
69
69
|
- lib/samanage/api/users.rb
|
70
|
+
- lib/samanage/api/utils.rb
|
70
71
|
- lib/samanage/error.rb
|
72
|
+
- lib/samanage/language.rb
|
71
73
|
- lib/samanage/url_builder.rb
|
72
74
|
- lib/samanage/version.rb
|
73
75
|
- samanage.gemspec
|
@@ -83,8 +85,10 @@ files:
|
|
83
85
|
- spec/api/samanage_other_asset_spec.rb
|
84
86
|
- spec/api/samanage_site_spec.rb
|
85
87
|
- spec/api/samanage_user_spec.rb
|
88
|
+
- spec/api/samanage_util_spec.rb
|
86
89
|
- spec/samanage_api_spec.rb
|
87
90
|
- spec/samanage_category_spec.rb
|
91
|
+
- spec/samanage_language_spec.rb
|
88
92
|
- spec/samanage_url_builder_spec.rb
|
89
93
|
- spec/spec_helper.rb
|
90
94
|
homepage: https://github.com/cw2908/samanage-ruby
|