samanage 1.6.1 → 1.6.2

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: 348de2f970605e8f2baeb69c0ca87a7dea845e23
4
- data.tar.gz: 8c7ab63ef601c88afac8fe0e6446cf2fa7d8f0a5
3
+ metadata.gz: 6a868afa190497ef5e1ea3933c827800c6a0b872
4
+ data.tar.gz: 1795e4fc05003d145f8e4c20fd73240cac497a6e
5
5
  SHA512:
6
- metadata.gz: 48be69466a5930baf751547391d721f90ae634425c348125c53a0d0ee00d5bc209dc8653b7157cafd3da143adbd36a36e7e92b76df551dd8ff5582ba3994013b
7
- data.tar.gz: 55aece4f1e9a4933803213330827ea0fb6702bfe0d14d07bd89b9762a33178a4d722e532a5cfbdafa051c60f44374eaf0990fafb2c008cc006f2a5e696f8b1ea
6
+ metadata.gz: 55118de925fb9e075bcb4d318076f56a8410c1aa30e99ea6949afd5a7a0b5b977450cb5dfb1df1ca594bd084e11e8cdb14e7636ebb23173e630af4234fb83021
7
+ data.tar.gz: b504e6330c69bfc77db8c6ed614e8c27e0a60eb5d70a5d31da464de1d728ee4cecba7e6597b0284013c3727c79b07b6196e1dcb3fda17cf4f027f90166284ee6
data/README.md CHANGED
@@ -1,10 +1,12 @@
1
1
  # Samanage Ruby Gem
2
2
  [![Gem Version](https://badge.fury.io/rb/samanage.svg)](https://badge.fury.io/rb/samanage)
3
3
  ## Requirements
4
- - Ruby >= 2.0
4
+ - Ruby >= 2.3
5
+
5
6
 
6
7
  ## Installation
7
8
  `gem install samanage`
9
+
8
10
  #### Linux (CentOS)
9
11
  - `sudo yum install gcc-c++`
10
12
  - `sudo yum install ruby-devel`
@@ -14,13 +16,22 @@
14
16
 
15
17
 
16
18
  ## Usage
17
- ### Queries
19
+ ### Basic Queries
18
20
 
19
21
  ```ruby
20
22
  api_controller = Samanage::Api.new(token: api_token)
21
- user_query = api_controller.execute(http_method: 'get',
22
- path: 'users.json')
23
+ user_query = api_controller.execute(http_method: 'get', path: 'users.json')
24
+ ```
25
+
26
+ ```ruby
27
+ incident_data = {incident: { priority: 'Critical' }}.to_json
28
+ incident_update = api_controller.execute(http_method: 'put', path: 'incidents/123.json', payload: incident_data)
23
29
  ```
30
+
31
+
32
+
33
+
34
+
24
35
  Returns query returns a Hash with keys:
25
36
  - `:response`*:* unparsed http response
26
37
  - `:code`*:* http status code
@@ -30,6 +41,8 @@ Returns query returns a Hash with keys:
30
41
  - `:total_count`*:* Total count of records
31
42
  - `:data`*:* Hash containing response body
32
43
 
44
+
45
+
33
46
  ### Function examples
34
47
  #### Return all Samanage Users
35
48
  ```ruby
data/lib/samanage/api.rb CHANGED
@@ -9,17 +9,17 @@ module Samanage
9
9
  custom_forms: 'custom_forms.json',
10
10
  }
11
11
  attr_accessor :datacenter, :content_type, :base_url, :token, :custom_forms, :authorized, :admins
12
- def initialize(token: '', dacenter: '', development_mode: false)
13
- self.token = token
14
- self.datacenter = nil || datacenter
12
+ def initialize(token: nil, dacenter: nil, development_mode: false)
13
+ self.token = token if token
14
+ self.datacenter = datacenter if datacenter
15
15
  self.base_url = "https://api#{datacenter}.samanage.com/"
16
- # self.content_type = content_type || 'json'
17
16
  self.content_type = 'json'
18
17
  self.admins = []
19
- if self.authorized != true
20
- self.authorize
21
- end
18
+ # Development mode forzes authorization & prepopulates custom forms/fields and admins
22
19
  if development_mode
20
+ if self.authorized? != true
21
+ self.authorize
22
+ end
23
23
  self.custom_forms = self.organize_forms
24
24
  self.admins = self.list_admins
25
25
  end
@@ -39,7 +39,8 @@ module Samanage
39
39
  end
40
40
 
41
41
  # Defaults to GET
42
- def execute(http_method: 'get', path: nil, payload: nil, verbose: nil, ssl_fix: false)
42
+ def execute(http_method: 'get', path: nil, payload: nil, verbose: nil, ssl_fix: false, token: nil)
43
+ token = token ||= self.token
43
44
  unless verbose.nil?
44
45
  verbose = '?layout=long'
45
46
  end
@@ -47,7 +48,7 @@ module Samanage
47
48
  api_call = HTTP.headers(
48
49
  'Accept' => "application/vnd.samanage.v2.0+#{self.content_type}#{verbose}",
49
50
  'Content-type' => "application/#{self.content_type}",
50
- 'X-Samanage-Authorization' => 'Bearer ' + self.token
51
+ 'X-Samanage-Authorization' => 'Bearer ' + token
51
52
  )
52
53
  ctx = OpenSSL::SSL::SSLContext.new
53
54
  if ssl_fix
@@ -1,18 +1,17 @@
1
1
  module Samanage
2
2
  class Api
3
- # Returns all users in the account
4
-
5
- def get_users(path: PATHS[:user], options: {})
6
- url = Samanage::UrlBuilder.new(path: path, options: options).url
7
- api_call = self.execute(path: url)
8
- api_call
9
- end
10
3
 
4
+ def get_users(path: PATHS[:user], options: {})
5
+ url = Samanage::UrlBuilder.new(path: path, options: options).url
6
+ api_call = self.execute(path: url)
7
+ api_call
8
+ end
9
+
10
+ # Returns all users in the account
11
11
  def collect_users
12
12
  page = 1
13
13
  users = Array.new
14
14
  total_pages = self.get_users[:total_pages]
15
- # puts api_call
16
15
  while page <= total_pages
17
16
  api_call = self.execute(http_method: 'get', path: "users.json?page=#{page}")
18
17
  users += api_call[:data]
@@ -24,20 +23,23 @@ module Samanage
24
23
  def create_user(payload: nil, options: {})
25
24
  api_call = self.execute(path: PATHS[:user], http_method: 'post', payload: payload)
26
25
  api_call
27
- end
28
-
29
- def find_user(id: nil)
26
+ end
27
+
28
+ # Find user by id
29
+ def find_user(id: nil)
30
30
  path = "users/#{id}.json"
31
31
  api_call = self.execute(path: path)
32
32
  api_call
33
33
  end
34
34
 
35
+ # Check for user by field (ex: users.json?field=value)
35
36
  def check_user(field: 'email', value: nil)
36
37
  url = "users.json?#{field}=#{value}"
37
38
  api_call = self.execute(path: url)
38
39
  api_call
39
40
  end
40
41
 
42
+ # Update user by id
41
43
  def update_user(payload: nil, id: nil)
42
44
  path = "users/#{id}.json"
43
45
  puts "Path: #{path}"
data/samanage.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'samanage'
3
- s.version = '1.6.1'
3
+ s.version = '1.6.2'
4
4
  s.date = Date.today.strftime("%Y-%m-%d")
5
5
  s.summary = "Samanage Ruby Gem"
6
6
  s.description = "Connect to Samanage using Ruby!"
@@ -10,6 +10,6 @@ Gem::Specification.new do |s|
10
10
  s.require_paths = ["lib"]
11
11
  s.add_development_dependency 'http', ['~> 2.2']
12
12
  s.add_runtime_dependency 'http', ["~> 2.2"]
13
- s.homepage = 'http://rubygems.org/gems/samanage'
13
+ s.homepage = 'https://github.com/cw2908/samanage-ruby'
14
14
  s.license = 'MIT'
15
15
  end
@@ -1,5 +1,4 @@
1
1
  require 'samanage'
2
-
3
2
  describe Samanage::Api do
4
3
  context 'Incidents' do
5
4
  describe 'API Functions' do
@@ -36,10 +36,10 @@ describe Samanage::Api do
36
36
  expect(user_create[:code]).to eq(200).or(201)
37
37
  end
38
38
  it 'create_user: fails if no email' do
39
- user_name = "samanage-ruby-#{(rand*10**10).ceil}"
39
+ user_name = "samanage-ruby-#{(rand*10**(rand(10))).ceil}"
40
40
  json = {
41
41
  :user => {
42
- :name => user_name,
42
+ :name => user_name,
43
43
  }
44
44
  }
45
45
  expect{@controller.create_user(payload: json.to_json)}.to raise_error(Samanage::InvalidRequest)
@@ -6,7 +6,10 @@ describe Samanage do
6
6
  end
7
7
  context 'on creation' do
8
8
  it 'Requires Email & Token' do
9
- expect{ Samanage::Api.new(token: "invalid token") }.to raise_error(Samanage::AuthorizationError)
9
+ expect{
10
+ api_controller = Samanage::Api.new(token: "invalid token")
11
+ api_controller.authorize
12
+ }.to raise_error(Samanage::AuthorizationError)
10
13
  expect{ Samanage::Api.new(token: TOKEN) }.to_not raise_error
11
14
  end
12
15
 
@@ -14,8 +17,10 @@ describe Samanage do
14
17
  # Valid Credentials
15
18
  expect(Samanage::Api.new(token: TOKEN)).to be_an_instance_of(Samanage::Api)
16
19
  # Invalid / Reversed Credentials
17
- expect{Samanage::Api.new(token: 'invalid')}.to raise_error(Samanage::AuthorizationError)
18
- expect(Samanage::Api.new(token: TOKEN).custom_forms).to be(nil)
20
+ expect{
21
+ api_controller = Samanage::Api.new(token: 'invalid')
22
+ api_controller.authorize
23
+ }.to raise_error(Samanage::AuthorizationError)
19
24
  end
20
25
 
21
26
  it 'Finds all custom forms in development mode' do
@@ -24,6 +29,9 @@ describe Samanage do
24
29
  expect(api_controller.custom_forms).not_to be(nil)
25
30
  expect(api_controller.custom_forms).to be_a(Hash)
26
31
  end
32
+ it 'Fails with invalid token in development mode' do
33
+ expect{ Samanage::Api.new(token: 'Invalid Token', development_mode: true)}.to raise_error(Samanage::AuthorizationError)
34
+ end
27
35
  end
28
36
  end
29
37
  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.6.1
4
+ version: 1.6.2
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-09-07 00:00:00.000000000 Z
11
+ date: 2017-09-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: http
@@ -76,7 +76,7 @@ files:
76
76
  - spec/samanage_url_builder_spec.rb
77
77
  - spec/spec_helper.rb
78
78
  - test.rb
79
- homepage: http://rubygems.org/gems/samanage
79
+ homepage: https://github.com/cw2908/samanage-ruby
80
80
  licenses:
81
81
  - MIT
82
82
  metadata: {}