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.
@@ -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 &#39;User&#39;:
53
+ Email &#39;jim.straw@trestacom.com&#39; 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 &#39;User&#39;:
105
+ Email &#39;jim.straw@trestacom.com&#39; 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 &#39;User&#39;:
157
+ Email &#39;jim.straw@trestacom.com&#39; 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
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Ruby
4
4
  module Miradore
5
- VERSION = "2.1.2"
5
+ VERSION = "2.1.3"
6
6
  end
7
7
  end
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
- Object.const_get(instance_name).new(args.merge(e.transform_keys(&:downcase)))
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
- MiradoreError.new({ error: "#{object_name}(s) not found", status: :not_found })
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
@@ -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.3")
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.2
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-10-22 00:00:00.000000000 Z
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.3
180
+ version: 2.7.4
157
181
  required_rubygems_version: !ruby/object:Gem::Requirement
158
182
  requirements:
159
183
  - - ">="
Binary file
Binary file
Binary file
Binary file
Binary file