ruby-miradore 4.2.1 → 4.4.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fb518a8a63cfa4e58056095564a1ec19bc9e813dba11ac741ecefbf0fede3fb4
4
- data.tar.gz: 88da70493a33e3a06c815f85c9eaf5d8532021e8a7df7020c1422ee53b6c992f
3
+ metadata.gz: 6970f265b7922dee506ea4625614c650157fa9c1205d3e411e5e70811a0f626a
4
+ data.tar.gz: 31aaa50424e7d70b8e3c58349bb3a9e0954ad27441a6f7cf2f8381f851e23d3a
5
5
  SHA512:
6
- metadata.gz: 4912e132150438b5a08fe30b5c3b6c2c968b6f0514816b9c25f50e764be78522d5bb740c155ca68309f87b2cb5ab61cec65584ee4ba0b8a52346a92d70f51033
7
- data.tar.gz: 352544d524d5dec3b94fe4aeb13fe56c60965dd42cad8bd95c2a546c1de5ac3149468452ab826d21e72999218122e6ebc596a8fb3260c07435b6ed49ee8ee548
6
+ metadata.gz: 20d16bf2aa88223b73c7964d6419407b505b7d39a1af4eca02670b06a0a893768ade53003e151453a4b1a05feaae16dbc3e9078957efeedc9dfc6d98fe215493
7
+ data.tar.gz: 60d40d8faedfb94a2c8121edd0b2ec86865e17467e66736007a16e9ecaa08345d45f867aff2968e91cd3bd9509c7cf72147e219576ff21d77337e29e194eaf34
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 3.1.1
1
+ 3.2.0
data/.travis.yml CHANGED
@@ -2,5 +2,5 @@
2
2
  language: ruby
3
3
  cache: bundler
4
4
  rvm:
5
- - 3.1.0
5
+ - 3.1.2
6
6
  before_install: gem install bundler
data/Gemfile.lock CHANGED
@@ -1,11 +1,11 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ruby-miradore (4.2.0)
4
+ ruby-miradore (4.4.1)
5
5
  activesupport (~> 7.0)
6
6
  builder (~> 3.1)
7
7
  crack (~> 0.4)
8
- finest-builder (~> 1.0)
8
+ finest-builder (~> 2.0)
9
9
  httparty (~> 0.20)
10
10
  rake (~> 13.0)
11
11
  rspec (~> 3.10)
@@ -14,69 +14,69 @@ PATH
14
14
  GEM
15
15
  remote: https://rubygems.org/
16
16
  specs:
17
- activesupport (7.0.2.3)
17
+ activesupport (7.0.4.2)
18
18
  concurrent-ruby (~> 1.0, >= 1.0.2)
19
19
  i18n (>= 1.6, < 2)
20
20
  minitest (>= 5.1)
21
21
  tzinfo (~> 2.0)
22
- addressable (2.8.0)
23
- public_suffix (>= 2.0.2, < 5.0)
22
+ addressable (2.8.1)
23
+ public_suffix (>= 2.0.2, < 6.0)
24
24
  ast (2.4.2)
25
25
  builder (3.2.4)
26
- concurrent-ruby (1.1.9)
26
+ concurrent-ruby (1.2.0)
27
27
  crack (0.4.5)
28
28
  rexml
29
29
  diff-lcs (1.5.0)
30
- finest-builder (1.1.1)
30
+ finest-builder (2.0.0)
31
31
  hashdiff (1.0.1)
32
- httparty (0.20.0)
33
- mime-types (~> 3.0)
32
+ httparty (0.21.0)
33
+ mini_mime (>= 1.0.0)
34
34
  multi_xml (>= 0.5.2)
35
- i18n (1.10.0)
35
+ i18n (1.12.0)
36
36
  concurrent-ruby (~> 1.0)
37
- mime-types (3.4.1)
38
- mime-types-data (~> 3.2015)
39
- mime-types-data (3.2022.0105)
40
- minitest (5.15.0)
37
+ json (2.6.3)
38
+ mini_mime (1.1.2)
39
+ minitest (5.17.0)
41
40
  multi_xml (0.6.0)
42
- parallel (1.21.0)
43
- parser (3.1.1.0)
41
+ parallel (1.22.1)
42
+ parser (3.2.1.0)
44
43
  ast (~> 2.4.1)
45
- public_suffix (4.0.6)
44
+ public_suffix (5.0.1)
46
45
  rainbow (3.1.1)
47
46
  rake (13.0.6)
48
- regexp_parser (2.2.1)
47
+ regexp_parser (2.7.0)
49
48
  rexml (3.2.5)
50
- rspec (3.11.0)
51
- rspec-core (~> 3.11.0)
52
- rspec-expectations (~> 3.11.0)
53
- rspec-mocks (~> 3.11.0)
54
- rspec-core (3.11.0)
55
- rspec-support (~> 3.11.0)
56
- rspec-expectations (3.11.0)
49
+ rspec (3.12.0)
50
+ rspec-core (~> 3.12.0)
51
+ rspec-expectations (~> 3.12.0)
52
+ rspec-mocks (~> 3.12.0)
53
+ rspec-core (3.12.1)
54
+ rspec-support (~> 3.12.0)
55
+ rspec-expectations (3.12.2)
57
56
  diff-lcs (>= 1.2.0, < 2.0)
58
- rspec-support (~> 3.11.0)
59
- rspec-mocks (3.11.0)
57
+ rspec-support (~> 3.12.0)
58
+ rspec-mocks (3.12.3)
60
59
  diff-lcs (>= 1.2.0, < 2.0)
61
- rspec-support (~> 3.11.0)
62
- rspec-support (3.11.0)
63
- rubocop (1.26.0)
60
+ rspec-support (~> 3.12.0)
61
+ rspec-support (3.12.0)
62
+ rubocop (1.45.1)
63
+ json (~> 2.3)
64
64
  parallel (~> 1.10)
65
- parser (>= 3.1.0.0)
65
+ parser (>= 3.2.0.0)
66
66
  rainbow (>= 2.2.2, < 4.0)
67
67
  regexp_parser (>= 1.8, < 3.0)
68
- rexml
69
- rubocop-ast (>= 1.16.0, < 2.0)
68
+ rexml (>= 3.2.5, < 4.0)
69
+ rubocop-ast (>= 1.24.1, < 2.0)
70
70
  ruby-progressbar (~> 1.7)
71
- unicode-display_width (>= 1.4.0, < 3.0)
72
- rubocop-ast (1.16.0)
73
- parser (>= 3.1.1.0)
71
+ unicode-display_width (>= 2.4.0, < 3.0)
72
+ rubocop-ast (1.26.0)
73
+ parser (>= 3.2.1.0)
74
74
  ruby-progressbar (1.11.0)
75
- tzinfo (2.0.4)
75
+ tzinfo (2.0.6)
76
76
  concurrent-ruby (~> 1.0)
77
- unicode-display_width (2.1.0)
78
- vcr (6.0.0)
79
- webmock (3.14.0)
77
+ unicode-display_width (2.4.2)
78
+ vcr (6.1.0)
79
+ webmock (3.18.1)
80
80
  addressable (>= 2.8.0)
81
81
  crack (>= 0.3.2)
82
82
  hashdiff (>= 0.4.0, < 2.0.0)
@@ -91,4 +91,4 @@ DEPENDENCIES
91
91
  webmock
92
92
 
93
93
  BUNDLED WITH
94
- 2.3.3
94
+ 2.4.5
@@ -19,11 +19,11 @@ http_interactions:
19
19
  - Ruby
20
20
  response:
21
21
  status:
22
- code: 400
23
- message: Bad Request
22
+ code: 401
23
+ message: Unauthorized
24
24
  headers:
25
25
  Content-Type:
26
- - application/json; charset=utf-8
26
+ - text/plain
27
27
  Server:
28
28
  - Microsoft-IIS/10.0
29
29
  X-Content-Type-Options:
@@ -35,11 +35,11 @@ http_interactions:
35
35
  Strict-Transport-Security:
36
36
  - max-age=31536000; includeSubDomains
37
37
  Date:
38
- - Thu, 24 Feb 2022 15:33:21 GMT
38
+ - Tue, 25 Oct 2022 10:51:38 GMT
39
39
  Content-Length:
40
- - '2'
40
+ - '530'
41
41
  body:
42
42
  encoding: UTF-8
43
- string: "{}"
44
- recorded_at: Thu, 24 Feb 2022 15:33:22 GMT
43
+ string: 'Status Code: 401; Unauthorized '
44
+ recorded_at: Tue, 25 Oct 2022 10:51:39 GMT
45
45
  recorded_with: VCR 6.0.0
@@ -12,7 +12,7 @@ http_interactions:
12
12
  Accept:
13
13
  - application/json
14
14
  X-Api-Key:
15
- -
15
+ - ''
16
16
  Accept-Encoding:
17
17
  - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
18
18
  User-Agent:
@@ -26,15 +26,20 @@ http_interactions:
26
26
  - text/plain
27
27
  Server:
28
28
  - Microsoft-IIS/10.0
29
+ X-Content-Type-Options:
30
+ - nosniff
29
31
  X-Frame-Options:
30
32
  - SAMEORIGIN
31
- - SAMEORIGIN
33
+ Referrer-Policy:
34
+ - same-origin
35
+ Strict-Transport-Security:
36
+ - max-age=31536000; includeSubDomains
32
37
  Date:
33
- - Fri, 29 Oct 2021 13:37:41 GMT
38
+ - Tue, 25 Oct 2022 10:50:52 GMT
34
39
  Content-Length:
35
40
  - '527'
36
41
  body:
37
42
  encoding: UTF-8
38
43
  string: 'Status Code: 404; Not Found '
39
- recorded_at: Fri, 29 Oct 2021 13:37:39 GMT
44
+ recorded_at: Tue, 25 Oct 2022 10:50:52 GMT
40
45
  recorded_with: VCR 6.0.0
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Ruby
4
4
  module Miradore
5
- VERSION = "4.2.1"
5
+ VERSION = "4.4.0"
6
6
  end
7
7
  end
data/lib/ruby/miradore.rb CHANGED
@@ -3,6 +3,7 @@
3
3
  require_relative 'miradore/version'
4
4
  require 'active_support/isolated_execution_state'
5
5
  require 'active_support/core_ext/hash/conversions'
6
+ require 'active_support/core_ext/module/attribute_accessors'
6
7
  require 'httparty'
7
8
  require 'json'
8
9
  require 'crack/xml'
@@ -11,11 +12,15 @@ require 'finest/builder'
11
12
  module Ruby
12
13
  module Miradore
13
14
 
14
- def self.url
15
- {
16
- v1: 'https://%<subdomain>s.online.miradore.com/API/%<item>s/%<id>s?auth=%<auth>s&select=*,%<attribute>s&filters=%<filter>s&options=%<options>s',
17
- v2: 'https://%<subdomain>s.online.miradore.com/API/v2/Device/%<id>s/%<method>s'
18
- }
15
+ mattr_accessor :url, default: {
16
+ v1: 'https://%<subdomain>s.online.miradore.com/API/%<item>s/%<id>s?auth=%<auth>s&select=*,%<attribute>s&filters=%<filter>s&options=%<options>s',
17
+ v2: 'https://%<subdomain>s.online.miradore.com/API/v2/Device/%<id>s/%<method>s'
18
+ }
19
+ mattr_accessor :phone_types, default: %w[Android iOS WindowsPhone]
20
+
21
+ # Setup data from initializer
22
+ def self.setup
23
+ yield(self)
19
24
  end
20
25
 
21
26
  class Request
@@ -25,11 +30,11 @@ module Ruby
25
30
 
26
31
  attr_writer :subdomain, :auth, :json
27
32
 
28
- def initialize(json = {})
29
- super json
30
- @subdomain ||= json[:subdomain]
31
- @auth ||= json[:auth]
32
- @json ||= json.to_json
33
+ def initialize(args = {})
34
+ super args
35
+ @subdomain ||= args[:subdomain]
36
+ @auth ||= args[:auth]
37
+ @json ||= args.to_json
33
38
  remove_instance_variable(:@subdomain) if @subdomain.nil?
34
39
  remove_instance_variable(:@auth) if @auth.nil?
35
40
  end
@@ -40,18 +45,18 @@ module Ruby
40
45
  # If the superclass is Request the GET will call simple_v1 which will require the item which is class name.
41
46
  # otherwise will call to retrieve devices based on filters.
42
47
  #
43
- def all(**args)
48
+ def all(args = {})
44
49
  transform(
45
50
  Crack::XML.parse(
46
- http_method_v1(**args).body
51
+ http_method_v1(args).body
47
52
  ).dig('Content', 'Items'), args
48
53
  )
49
54
  end
50
55
 
51
- def call(**args)
56
+ def call(args = {})
52
57
  transform(
53
58
  Crack::XML.parse(
54
- http_method_v1(**args.merge(attribute: 'ID')).body
59
+ http_method_v1(args.merge(attribute: 'ID')).body
55
60
  )['Content'], args
56
61
  )
57
62
  end
@@ -60,8 +65,7 @@ module Ruby
60
65
  @json
61
66
  end
62
67
 
63
-
64
- def http_method_v1(**args)
68
+ def http_method_v1(args)
65
69
  url = Miradore.url[:v1] % args.merge(
66
70
  subdomain: @subdomain || args[:subdomain],
67
71
  auth: args.fetch(:auth, @auth),
@@ -96,48 +100,48 @@ module Ruby
96
100
  headers "Content-Type": 'application/json'
97
101
  headers "Accept": 'application/json'
98
102
 
99
- def initialize(json = {})
100
- super json
103
+ def initialize(args = {})
104
+ super args
101
105
  end
102
106
 
103
- def lock(**args)
104
- http_method(**args.merge(method: :post, id: id, action: __method__))
107
+ def lock(args = {})
108
+ http_method(args.merge(method: :post, id: id, action: __method__))
105
109
  end
106
110
 
107
- def lostmode(**args)
111
+ def lostmode(args = {})
108
112
  if args[0]
109
- http_method(**args.merge(method: :post, id: id, action: __method__))
113
+ http_method(args.merge(method: :post, id: id, action: __method__))
110
114
  else
111
- http_method(**args.merge(method: :delete, id: id, action: __method__))
115
+ http_method(args.merge(method: :delete, id: id, action: __method__))
112
116
  end
113
117
  end
114
118
 
115
- def reboot(**args)
116
- http_method(**args.merge(method: :post, id: id, action: __method__))
119
+ def reboot(args = {})
120
+ http_method(args.merge(method: :post, id: id, action: __method__))
117
121
  end
118
122
 
119
- def wipe(**args)
120
- http_method(**args.merge(method: :post, id: id, action: __method__))
123
+ def wipe(args = {})
124
+ http_method(args.merge(method: :post, id: id, action: __method__))
121
125
  end
122
126
 
123
- def location(**args)
124
- http_method(**args.merge(method: :get, action: __method__))
127
+ def location(args = {})
128
+ http_method(args.merge(method: :get, action: __method__))
125
129
  end
126
130
 
127
- def family(**args)
128
- http_method(**args.merge(method: :put, action: :category))
131
+ def family(args = {})
132
+ http_method(args.merge(method: :put, action: :category))
129
133
  end
130
134
 
131
- def model(**args)
132
- http_method(**args.merge(method: :put, action: __method__))
135
+ def model(args = {})
136
+ http_method(args.merge(method: :put, action: __method__))
133
137
  end
134
138
 
135
- def activate(**args)
136
- http_method(**args.merge(method: :post, action: __method__))
139
+ def activate(args = {})
140
+ http_method(args.merge(method: :post, action: __method__))
137
141
  end
138
142
 
139
- def retire(**args)
140
- http_method(**args.merge(method: :delete, id: id, action: nil))
143
+ def retire(args = {})
144
+ http_method(args.merge(method: :delete, id: id, action: nil))
141
145
  end
142
146
 
143
147
  def device_serial_number
@@ -153,16 +157,16 @@ module Ruby
153
157
  end
154
158
 
155
159
  def phone?
156
- %w[Android iOS WindowsPhone].include?(platform)
160
+ Miradore.phone_types.include?(platform)
157
161
  end
158
162
 
159
- def call(**args)
160
- http_method(**args)
163
+ def call(args = {})
164
+ http_method(args)
161
165
  end
162
166
 
163
167
  private
164
168
 
165
- def http_method(**args)
169
+ def http_method(args)
166
170
  self.class.headers 'X-API-Key' => @auth || args[:auth]
167
171
  url = Miradore.url[:v2] % {
168
172
  subdomain: @subdomain || args[:subdomain],
@@ -3,16 +3,16 @@
3
3
  require_relative "lib/ruby/miradore/version"
4
4
 
5
5
  Gem::Specification.new do |spec|
6
- spec.name = "ruby-miradore"
7
- spec.version = Ruby::Miradore::VERSION
8
- spec.authors = ["Eduard Garcia Castelló"]
9
- spec.email = %w[edugarcas@gmail.com eduard@rzilient.club]
6
+ spec.name = "ruby-miradore"
7
+ spec.version = Ruby::Miradore::VERSION
8
+ spec.authors = ["Eduard Garcia Castelló"]
9
+ spec.email = %w[edugarcas@gmail.com eduard@rzilient.club]
10
10
 
11
- spec.summary = "Miradore is a MSP providing an API to get devices information as well s perform some security actions."
12
- spec.description = "Miradore MSP Ruby Gem"
13
- spec.homepage = "https://github.com/eddygarcas/ruby-miradore"
14
- spec.license = "MIT"
15
- spec.required_ruby_version = Gem::Requirement.new(">= 3.1.1")
11
+ spec.summary = "Miradore is a MSP providing an API to get devices information as well s perform some security actions."
12
+ spec.description = "Miradore MSP Ruby Gem"
13
+ spec.homepage = "https://github.com/eddygarcas/ruby-miradore"
14
+ spec.license = "MIT"
15
+ spec.required_ruby_version = Gem::Requirement.new(">= 3.2.0")
16
16
 
17
17
  spec.metadata["allowed_push_host"] = "https://rubygems.org/"
18
18
 
@@ -25,8 +25,8 @@ Gem::Specification.new do |spec|
25
25
  spec.files = Dir.chdir(File.expand_path(__dir__)) do
26
26
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{\A(?:test|spec|features)/}) }
27
27
  end
28
- spec.bindir = "exe"
29
- spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
28
+ spec.bindir = "exe"
29
+ spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
30
30
  spec.require_paths = ["lib"]
31
31
 
32
32
  # Uncomment to register a new dependency of your gem
@@ -34,7 +34,7 @@ Gem::Specification.new do |spec|
34
34
  spec.add_dependency "activesupport", "~> 7.0"
35
35
  spec.add_dependency 'builder', '~> 3.1'
36
36
  spec.add_dependency "crack", "~> 0.4"
37
- spec.add_dependency "finest-builder", "~> 1.0"
37
+ spec.add_dependency "finest-builder", "~> 2.0"
38
38
  spec.add_dependency "httparty", "~> 0.20"
39
39
  spec.add_dependency "rake", "~> 13.0"
40
40
  spec.add_dependency "rspec", "~> 3.10"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-miradore
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.2.1
4
+ version: 4.4.0
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: 2022-03-21 00:00:00.000000000 Z
11
+ date: 2023-02-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '1.0'
61
+ version: '2.0'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '1.0'
68
+ version: '2.0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: httparty
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -188,14 +188,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
188
188
  requirements:
189
189
  - - ">="
190
190
  - !ruby/object:Gem::Version
191
- version: 3.1.1
191
+ version: 3.2.0
192
192
  required_rubygems_version: !ruby/object:Gem::Requirement
193
193
  requirements:
194
194
  - - ">="
195
195
  - !ruby/object:Gem::Version
196
196
  version: '0'
197
197
  requirements: []
198
- rubygems_version: 3.3.7
198
+ rubygems_version: 3.4.1
199
199
  signing_key:
200
200
  specification_version: 4
201
201
  summary: Miradore is a MSP providing an API to get devices information as well s perform