lm_rest 1.0.6 → 1.0.7
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/.codex +0 -0
- data/README.md +29 -16
- data/api.json +12202 -439
- data/bin/ds_checker.rb +178 -161
- data/bin/graphgrab.rb +41 -0
- data/lib/lm_rest/api_client.rb +409 -170
- data/lib/lm_rest/request_params.rb +13 -5
- data/lib/lm_rest/resource.rb +68 -17
- data/lib/lm_rest/version.rb +1 -1
- data/lm_rest.gemspec +1 -0
- metadata +19 -6
|
@@ -1,12 +1,20 @@
|
|
|
1
|
+
require 'uri'
|
|
2
|
+
|
|
1
3
|
module LMRest
|
|
2
4
|
module RequestParams
|
|
3
5
|
def self.parameterize(params_hash)
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
return '' if params_hash.nil? || params_hash.empty?
|
|
7
|
+
|
|
8
|
+
params = params_hash.each_with_object([]) do |(key, value), pairs|
|
|
9
|
+
next if value.nil?
|
|
10
|
+
|
|
11
|
+
values = value.is_a?(Array) ? value : [value]
|
|
12
|
+
values.each { |item| pairs << [key.to_s, item] unless item.nil? }
|
|
9
13
|
end
|
|
14
|
+
|
|
15
|
+
return '' if params.empty?
|
|
16
|
+
|
|
17
|
+
"?#{URI.encode_www_form(params)}"
|
|
10
18
|
end
|
|
11
19
|
end
|
|
12
20
|
end
|
data/lib/lm_rest/resource.rb
CHANGED
|
@@ -1,46 +1,97 @@
|
|
|
1
1
|
module LMRest
|
|
2
2
|
class Resource
|
|
3
|
+
attr_reader :attributes
|
|
3
4
|
|
|
4
5
|
def initialize(properties)
|
|
6
|
+
@attributes = {}
|
|
7
|
+
|
|
5
8
|
properties.each do |key, value|
|
|
6
|
-
|
|
7
|
-
define_singleton_method(key.intern) { instance_variable_get("@#{key}") }
|
|
8
|
-
define_singleton_method("#{key}=".intern) do |new_value|
|
|
9
|
-
instance_variable_set("@#{key}", new_value)
|
|
10
|
-
end
|
|
9
|
+
@attributes[key.to_s] = value
|
|
11
10
|
end
|
|
12
11
|
end
|
|
13
12
|
|
|
13
|
+
def [](key)
|
|
14
|
+
@attributes[key.to_s]
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def []=(key, value)
|
|
18
|
+
@attributes[key.to_s] = value
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def key?(key)
|
|
22
|
+
@attributes.key?(key.to_s)
|
|
23
|
+
end
|
|
24
|
+
|
|
14
25
|
def to_h
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
26
|
+
deep_copy(@attributes)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def method_missing(name, *args)
|
|
30
|
+
attribute_name = name.to_s
|
|
31
|
+
|
|
32
|
+
if attribute_name.end_with?('=')
|
|
33
|
+
raise ArgumentError, "wrong number of arguments (#{args.count} for 1)" unless args.count == 1
|
|
34
|
+
|
|
35
|
+
@attributes[attribute_name.delete_suffix('=')] = args.first
|
|
36
|
+
elsif args.empty? && @attributes.key?(attribute_name)
|
|
37
|
+
@attributes[attribute_name]
|
|
38
|
+
else
|
|
39
|
+
super
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def respond_to_missing?(name, include_private = false)
|
|
44
|
+
attribute_name = name.to_s
|
|
45
|
+
|
|
46
|
+
attribute_name.end_with?('=') || @attributes.key?(attribute_name) || super
|
|
18
47
|
end
|
|
19
48
|
|
|
20
49
|
class << self
|
|
21
50
|
|
|
22
51
|
def parse(body)
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
52
|
+
case body
|
|
53
|
+
when nil
|
|
54
|
+
nil
|
|
55
|
+
when Array
|
|
56
|
+
parse_collection(body)
|
|
57
|
+
when Hash
|
|
58
|
+
if body.key?('items')
|
|
59
|
+
parse_collection(body['items'] || [])
|
|
26
60
|
else
|
|
27
61
|
parse_object(body)
|
|
28
62
|
end
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
63
|
+
when String
|
|
64
|
+
body
|
|
65
|
+
else
|
|
66
|
+
body
|
|
33
67
|
end
|
|
34
68
|
end
|
|
35
69
|
|
|
36
70
|
def parse_collection(items)
|
|
37
71
|
items.map do |item|
|
|
38
|
-
new(item)
|
|
72
|
+
item.is_a?(Hash) ? new(item) : item
|
|
39
73
|
end
|
|
40
74
|
end
|
|
41
75
|
|
|
42
76
|
def parse_object(item)
|
|
43
|
-
new(item)
|
|
77
|
+
item.is_a?(Hash) ? new(item) : item
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
private
|
|
82
|
+
|
|
83
|
+
def deep_copy(value)
|
|
84
|
+
case value
|
|
85
|
+
when LMRest::Resource
|
|
86
|
+
value.to_h
|
|
87
|
+
when Hash
|
|
88
|
+
value.each_with_object({}) do |(key, item), copied|
|
|
89
|
+
copied[key] = deep_copy(item)
|
|
90
|
+
end
|
|
91
|
+
when Array
|
|
92
|
+
value.map { |item| deep_copy(item) }
|
|
93
|
+
else
|
|
94
|
+
value
|
|
44
95
|
end
|
|
45
96
|
end
|
|
46
97
|
end
|
data/lib/lm_rest/version.rb
CHANGED
data/lm_rest.gemspec
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: lm_rest
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.0.
|
|
4
|
+
version: 1.0.7
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Michael Rodrigues
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: bundler
|
|
@@ -80,6 +79,20 @@ dependencies:
|
|
|
80
79
|
- - ">"
|
|
81
80
|
- !ruby/object:Gem::Version
|
|
82
81
|
version: 2.5.1
|
|
82
|
+
- !ruby/object:Gem::Dependency
|
|
83
|
+
name: base64
|
|
84
|
+
requirement: !ruby/object:Gem::Requirement
|
|
85
|
+
requirements:
|
|
86
|
+
- - ">="
|
|
87
|
+
- !ruby/object:Gem::Version
|
|
88
|
+
version: '0'
|
|
89
|
+
type: :runtime
|
|
90
|
+
prerelease: false
|
|
91
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
92
|
+
requirements:
|
|
93
|
+
- - ">="
|
|
94
|
+
- !ruby/object:Gem::Version
|
|
95
|
+
version: '0'
|
|
83
96
|
description: Interact programmatically with your LogicMonitor account via the REST
|
|
84
97
|
API.
|
|
85
98
|
email:
|
|
@@ -89,6 +102,7 @@ executables:
|
|
|
89
102
|
extensions: []
|
|
90
103
|
extra_rdoc_files: []
|
|
91
104
|
files:
|
|
105
|
+
- ".codex"
|
|
92
106
|
- ".gitignore"
|
|
93
107
|
- ".travis.yml"
|
|
94
108
|
- Gemfile
|
|
@@ -98,6 +112,7 @@ files:
|
|
|
98
112
|
- api.json
|
|
99
113
|
- bin/console
|
|
100
114
|
- bin/ds_checker.rb
|
|
115
|
+
- bin/graphgrab.rb
|
|
101
116
|
- bin/setup
|
|
102
117
|
- bin/system_category_cleaner.rb
|
|
103
118
|
- lib/lm_rest.rb
|
|
@@ -110,7 +125,6 @@ homepage: https://github.com/mikerodrigues/lm_rest
|
|
|
110
125
|
licenses: []
|
|
111
126
|
metadata:
|
|
112
127
|
allowed_push_host: https://rubygems.org
|
|
113
|
-
post_install_message:
|
|
114
128
|
rdoc_options: []
|
|
115
129
|
require_paths:
|
|
116
130
|
- lib
|
|
@@ -125,8 +139,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
125
139
|
- !ruby/object:Gem::Version
|
|
126
140
|
version: '0'
|
|
127
141
|
requirements: []
|
|
128
|
-
rubygems_version: 3.
|
|
129
|
-
signing_key:
|
|
142
|
+
rubygems_version: 3.6.9
|
|
130
143
|
specification_version: 4
|
|
131
144
|
summary: API Wrapper for LogicMonitor Rest API v2.
|
|
132
145
|
test_files: []
|