ruby-miradore 2.1.2 → 2.1.3
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/.travis.yml +1 -1
- data/Gemfile.lock +24 -8
- data/fixtures/vcr_cassettes/Change_User_Email_Address.yml +2 -2
- data/fixtures/vcr_cassettes/Change_User_Email_Address_Error.yml +2 -2
- data/fixtures/vcr_cassettes/Change_User_Email_Address_Without_v1.yml +2 -2
- data/fixtures/vcr_cassettes/Get_Device_Location.yml +3 -3
- data/fixtures/vcr_cassettes/Get__Mobile_Device.yml +6 -6
- data/fixtures/vcr_cassettes/InvDevice.yml +4 -4
- data/fixtures/vcr_cassettes/LockDevice_all.yml +2 -2
- data/fixtures/vcr_cassettes/all_criteria.yml +56 -24
- data/fixtures/vcr_cassettes/auth_not_found.yml +2 -2
- data/fixtures/vcr_cassettes/error_by_serial_number.yml +2 -2
- data/fixtures/vcr_cassettes/full_list_and_details.yml +5 -5
- data/fixtures/vcr_cassettes/get_location.yml +2 -2
- data/fixtures/vcr_cassettes/get_user_from_miradore.yml +2 -2
- data/fixtures/vcr_cassettes/search_by_serial_number.yml +7 -7
- data/fixtures/vcr_cassettes/user_alredy_exist_in_miradore.yml +159 -0
- data/lib/ruby/miradore/version.rb +1 -1
- data/lib/ruby/miradore.rb +38 -34
- data/ruby-miradore.gemspec +3 -1
- metadata +32 -8
- data/ruby-miradore-0.1.2.gem +0 -0
- data/ruby-miradore-0.1.3.gem +0 -0
- data/ruby-miradore-1.1.0.gem +0 -0
- data/ruby-miradore-1.1.1.gem +0 -0
- data/ruby-miradore-1.2.2.gem +0 -0
@@ -0,0 +1,159 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: https://rzilient.online.miradore.com/API/User?auth=&filters=&select=*,ID
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: |
|
9
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
10
|
+
<Content>
|
11
|
+
<Items>
|
12
|
+
<User>
|
13
|
+
<Email>jim.straw@trestacom.com</Email>
|
14
|
+
<Firstname>Jim</Firstname>
|
15
|
+
<Lastname>Straw</Lastname>
|
16
|
+
<PhoneNumber>123456789</PhoneNumber>
|
17
|
+
</User>
|
18
|
+
</Items>
|
19
|
+
</Content>
|
20
|
+
headers:
|
21
|
+
Accept-Encoding:
|
22
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
23
|
+
Accept:
|
24
|
+
- "*/*"
|
25
|
+
User-Agent:
|
26
|
+
- Ruby
|
27
|
+
response:
|
28
|
+
status:
|
29
|
+
code: 400
|
30
|
+
message: Bad Request
|
31
|
+
headers:
|
32
|
+
Cache-Control:
|
33
|
+
- no-cache
|
34
|
+
Pragma:
|
35
|
+
- no-cache
|
36
|
+
Content-Length:
|
37
|
+
- '179'
|
38
|
+
Content-Type:
|
39
|
+
- text/xml; charset=utf-8
|
40
|
+
Expires:
|
41
|
+
- "-1"
|
42
|
+
Server:
|
43
|
+
- Microsoft-IIS/10.0
|
44
|
+
X-Aspnet-Version:
|
45
|
+
- 4.0.30319
|
46
|
+
X-Frame-Options:
|
47
|
+
- SAMEORIGIN
|
48
|
+
Date:
|
49
|
+
- Tue, 02 Nov 2021 11:37:07 GMT
|
50
|
+
body:
|
51
|
+
encoding: UTF-8
|
52
|
+
string: "<Content><Error><Description>Failed to validate imported 'User':
|
53
|
+
Email 'jim.straw@trestacom.com' is already in use.</Description><Code>400</Code></Error></Content>"
|
54
|
+
recorded_at: Tue, 02 Nov 2021 11:37:08 GMT
|
55
|
+
- request:
|
56
|
+
method: post
|
57
|
+
uri: https://rzilient.online.miradore.com/API/User?auth=&filters=&select=*,ID
|
58
|
+
body:
|
59
|
+
encoding: UTF-8
|
60
|
+
string: |
|
61
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
62
|
+
<Content>
|
63
|
+
<Items>
|
64
|
+
<User>
|
65
|
+
<Email>jim.straw@trestacom.com</Email>
|
66
|
+
<Firstname>Jim</Firstname>
|
67
|
+
<Lastname>Straw</Lastname>
|
68
|
+
<PhoneNumber>123456789</PhoneNumber>
|
69
|
+
</User>
|
70
|
+
</Items>
|
71
|
+
</Content>
|
72
|
+
headers:
|
73
|
+
Accept-Encoding:
|
74
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
75
|
+
Accept:
|
76
|
+
- "*/*"
|
77
|
+
User-Agent:
|
78
|
+
- Ruby
|
79
|
+
response:
|
80
|
+
status:
|
81
|
+
code: 400
|
82
|
+
message: Bad Request
|
83
|
+
headers:
|
84
|
+
Cache-Control:
|
85
|
+
- no-cache
|
86
|
+
Pragma:
|
87
|
+
- no-cache
|
88
|
+
Content-Length:
|
89
|
+
- '179'
|
90
|
+
Content-Type:
|
91
|
+
- text/xml; charset=utf-8
|
92
|
+
Expires:
|
93
|
+
- "-1"
|
94
|
+
Server:
|
95
|
+
- Microsoft-IIS/10.0
|
96
|
+
X-Aspnet-Version:
|
97
|
+
- 4.0.30319
|
98
|
+
X-Frame-Options:
|
99
|
+
- SAMEORIGIN
|
100
|
+
Date:
|
101
|
+
- Tue, 02 Nov 2021 11:37:12 GMT
|
102
|
+
body:
|
103
|
+
encoding: UTF-8
|
104
|
+
string: "<Content><Error><Description>Failed to validate imported 'User':
|
105
|
+
Email 'jim.straw@trestacom.com' is already in use.</Description><Code>400</Code></Error></Content>"
|
106
|
+
recorded_at: Tue, 02 Nov 2021 11:37:12 GMT
|
107
|
+
- request:
|
108
|
+
method: post
|
109
|
+
uri: https://rzilient.online.miradore.com/API/User?auth=&filters=&select=*,ID
|
110
|
+
body:
|
111
|
+
encoding: UTF-8
|
112
|
+
string: |
|
113
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
114
|
+
<Content>
|
115
|
+
<Items>
|
116
|
+
<User>
|
117
|
+
<Email>jim.straw@trestacom.com</Email>
|
118
|
+
<Firstname>Jim</Firstname>
|
119
|
+
<Lastname>Straw</Lastname>
|
120
|
+
<PhoneNumber>123456789</PhoneNumber>
|
121
|
+
</User>
|
122
|
+
</Items>
|
123
|
+
</Content>
|
124
|
+
headers:
|
125
|
+
Accept-Encoding:
|
126
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
127
|
+
Accept:
|
128
|
+
- "*/*"
|
129
|
+
User-Agent:
|
130
|
+
- Ruby
|
131
|
+
response:
|
132
|
+
status:
|
133
|
+
code: 400
|
134
|
+
message: Bad Request
|
135
|
+
headers:
|
136
|
+
Cache-Control:
|
137
|
+
- no-cache
|
138
|
+
Pragma:
|
139
|
+
- no-cache
|
140
|
+
Content-Length:
|
141
|
+
- '179'
|
142
|
+
Content-Type:
|
143
|
+
- text/xml; charset=utf-8
|
144
|
+
Expires:
|
145
|
+
- "-1"
|
146
|
+
Server:
|
147
|
+
- Microsoft-IIS/10.0
|
148
|
+
X-Aspnet-Version:
|
149
|
+
- 4.0.30319
|
150
|
+
X-Frame-Options:
|
151
|
+
- SAMEORIGIN
|
152
|
+
Date:
|
153
|
+
- Tue, 02 Nov 2021 11:37:54 GMT
|
154
|
+
body:
|
155
|
+
encoding: UTF-8
|
156
|
+
string: "<Content><Error><Description>Failed to validate imported 'User':
|
157
|
+
Email 'jim.straw@trestacom.com' is already in use.</Description><Code>400</Code></Error></Content>"
|
158
|
+
recorded_at: Tue, 02 Nov 2021 11:37:54 GMT
|
159
|
+
recorded_with: VCR 6.0.0
|
data/lib/ruby/miradore.rb
CHANGED
@@ -4,6 +4,7 @@ require_relative "miradore/version"
|
|
4
4
|
require "httparty"
|
5
5
|
require "json"
|
6
6
|
require "crack/xml"
|
7
|
+
require "active_support/core_ext/hash/conversions"
|
7
8
|
require "finest/builder"
|
8
9
|
|
9
10
|
module Ruby
|
@@ -32,54 +33,58 @@ module Ruby
|
|
32
33
|
remove_instance_variable(:@auth) if @auth.nil?
|
33
34
|
end
|
34
35
|
|
35
|
-
#
|
36
|
-
# This call will perform all GET calls regardless the API version that it's calling.
|
37
|
-
# The version would be determined based on the superclass name.
|
38
|
-
# If the superclass is Request the GET will call simple_v1 which will require the item which is class name.
|
39
|
-
# otherwise will call to retrieve devices based on filters.
|
40
|
-
#
|
41
|
-
def self.all(**args)
|
42
|
-
response = JSON.parse(
|
43
|
-
Crack::XML.parse(
|
44
|
-
get(
|
45
|
-
Miradore.url[version] % args.merge(
|
46
|
-
item: object_name,
|
47
|
-
attribute: args.fetch(:attribute, "*"),
|
48
|
-
auth: args.fetch(:auth, nil),
|
49
|
-
filter: args.fetch(:filter, nil)
|
50
|
-
)
|
51
|
-
).body
|
52
|
-
).to_json,
|
53
|
-
quirks_mode: true
|
54
|
-
).dig("Content", "Items")
|
55
|
-
transform(response, args)
|
56
|
-
rescue StandardError => e
|
57
|
-
MiradoreError.new({ error: e&.message || "Error connecting to manager service provider", status: :not_found })
|
58
|
-
end
|
59
|
-
|
60
36
|
class << self
|
37
|
+
#
|
38
|
+
# This call will perform all GET calls regardless the API version that it's calling.
|
39
|
+
# The version would be determined based on the superclass name.
|
40
|
+
# If the superclass is Request the GET will call simple_v1 which will require the item which is class name.
|
41
|
+
# otherwise will call to retrieve devices based on filters.
|
42
|
+
#
|
43
|
+
def all(**args)
|
44
|
+
transform(
|
45
|
+
Crack::XML.parse(
|
46
|
+
http_method(args).body
|
47
|
+
).dig("Content", "Items"), args
|
48
|
+
)
|
49
|
+
end
|
50
|
+
|
51
|
+
def add(**args)
|
52
|
+
transform(
|
53
|
+
Crack::XML.parse(
|
54
|
+
http_method(args.merge(method: :post, attribute: "ID")).body
|
55
|
+
)
|
56
|
+
)
|
57
|
+
end
|
58
|
+
|
59
|
+
protected
|
60
|
+
|
61
|
+
def http_method(**args)
|
62
|
+
url = Miradore.url[version] % args.merge(
|
63
|
+
item: to_s.demodulize,
|
64
|
+
attribute: args.fetch(:attribute, "*"),
|
65
|
+
auth: args.fetch(:auth, nil),
|
66
|
+
filter: args.fetch(:filter, nil)
|
67
|
+
)
|
68
|
+
method(args.fetch(:method, :get)).call(url, body: args.fetch(:body, nil)&.to_xml(root: "Content"))
|
69
|
+
end
|
70
|
+
|
61
71
|
private
|
62
72
|
|
63
73
|
def transform(res, args = {})
|
64
|
-
instance_name = "Ruby::Miradore::#{res.keys.first.capitalize}"
|
65
74
|
if res.values.first.is_a?(Array)
|
66
75
|
return res.values.first.map! do |e|
|
67
|
-
|
76
|
+
const_get(to_s).new(args.merge(e.transform_keys(&:downcase)))
|
68
77
|
end
|
69
78
|
end
|
70
|
-
|
71
|
-
Object.const_get(instance_name).new(args.merge(res.values.first&.transform_keys(&:downcase)))
|
79
|
+
const_get(to_s).new(args.merge(res.values.first&.transform_keys(&:downcase)))
|
72
80
|
rescue StandardError
|
73
|
-
|
81
|
+
{ error: "#{to_s.demodulize}(s) not found", status: :not_found }
|
74
82
|
end
|
75
83
|
|
76
84
|
def version
|
77
85
|
superclass == Object ? :request_v1 : :item_v1
|
78
86
|
end
|
79
87
|
|
80
|
-
def object_name
|
81
|
-
to_s.split("::").last
|
82
|
-
end
|
83
88
|
end
|
84
89
|
|
85
90
|
end
|
@@ -154,6 +159,5 @@ module Ruby
|
|
154
159
|
|
155
160
|
class Organization < Request; end
|
156
161
|
|
157
|
-
class MiradoreError < Request; end
|
158
162
|
end
|
159
163
|
end
|
data/ruby-miradore.gemspec
CHANGED
@@ -12,7 +12,7 @@ Gem::Specification.new do |spec|
|
|
12
12
|
spec.description = "Miradore MSP Ruby Gem"
|
13
13
|
spec.homepage = "https://github.com/eddygarcas/ruby-miradore"
|
14
14
|
spec.license = "MIT"
|
15
|
-
spec.required_ruby_version = Gem::Requirement.new(">= 2.7.
|
15
|
+
spec.required_ruby_version = Gem::Requirement.new(">= 2.7.4")
|
16
16
|
|
17
17
|
spec.metadata["allowed_push_host"] = "https://rubygems.org/"
|
18
18
|
|
@@ -31,6 +31,8 @@ Gem::Specification.new do |spec|
|
|
31
31
|
|
32
32
|
# Uncomment to register a new dependency of your gem
|
33
33
|
# spec.add_dependency "example-gem", "~> 1.0"
|
34
|
+
spec.add_dependency "activesupport", "~> 6.1"
|
35
|
+
spec.add_dependency 'builder', '~> 2.0'
|
34
36
|
spec.add_dependency "crack", "~> 0.4"
|
35
37
|
spec.add_dependency "finest-builder", "~> 1.0"
|
36
38
|
spec.add_dependency "httparty", "~> 0.18"
|
metadata
CHANGED
@@ -1,15 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-miradore
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.
|
4
|
+
version: 2.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eduard Garcia Castelló
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-11-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: activesupport
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '6.1'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '6.1'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: builder
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '2.0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '2.0'
|
13
41
|
- !ruby/object:Gem::Dependency
|
14
42
|
name: crack
|
15
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -129,13 +157,9 @@ files:
|
|
129
157
|
- fixtures/vcr_cassettes/get_location.yml
|
130
158
|
- fixtures/vcr_cassettes/get_user_from_miradore.yml
|
131
159
|
- fixtures/vcr_cassettes/search_by_serial_number.yml
|
160
|
+
- fixtures/vcr_cassettes/user_alredy_exist_in_miradore.yml
|
132
161
|
- lib/ruby/miradore.rb
|
133
162
|
- lib/ruby/miradore/version.rb
|
134
|
-
- ruby-miradore-0.1.2.gem
|
135
|
-
- ruby-miradore-0.1.3.gem
|
136
|
-
- ruby-miradore-1.1.0.gem
|
137
|
-
- ruby-miradore-1.1.1.gem
|
138
|
-
- ruby-miradore-1.2.2.gem
|
139
163
|
- ruby-miradore.gemspec
|
140
164
|
homepage: https://github.com/eddygarcas/ruby-miradore
|
141
165
|
licenses:
|
@@ -153,7 +177,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
153
177
|
requirements:
|
154
178
|
- - ">="
|
155
179
|
- !ruby/object:Gem::Version
|
156
|
-
version: 2.7.
|
180
|
+
version: 2.7.4
|
157
181
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
158
182
|
requirements:
|
159
183
|
- - ">="
|
data/ruby-miradore-0.1.2.gem
DELETED
Binary file
|
data/ruby-miradore-0.1.3.gem
DELETED
Binary file
|
data/ruby-miradore-1.1.0.gem
DELETED
Binary file
|
data/ruby-miradore-1.1.1.gem
DELETED
Binary file
|
data/ruby-miradore-1.2.2.gem
DELETED
Binary file
|