ruby-miradore 2.1.2 → 2.1.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -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