ruby-miradore 0.1.1 → 1.0.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: 3a2d7224c804d8330fdd5af6a4f59812484057f75b317f11a2d0501a32b7d637
4
- data.tar.gz: 4f6f3898d4f2a378e37059172b671d87fb8202cea5955880477c1c293726f866
3
+ metadata.gz: bbe3675a437a4f1a7db9f1970b5ffff9f49d7767f8f074212b1d4c115bb4a352
4
+ data.tar.gz: d62031266909082c468a35bd316c642f46c7342bb788283aee194f13cc21c4a0
5
5
  SHA512:
6
- metadata.gz: ed281193865b2c9426fac2fab0fa0f3ed82801562d25effc7a81bdbe566f55514b40d3297b66d0af31cdb690d22002e063c599eb94bd92f0e721443b57455481
7
- data.tar.gz: ccb8a22f0d3f125ab3c930aa34e635af842d69f14f2b28e3ed5948603ca615dfe35065d1948c7da11e205f792b835652f5b9ecce20ebb4b2c50af47175b230c5
6
+ metadata.gz: 391f48e2cf12a8837494506f3badf713fa7c0ad27f3b29b67cedaa9f4cfcbea98f43d70cfa7bd810f9ab7526de9982b7139b77375dec7115d18b7b5b558b5e14
7
+ data.tar.gz: a6c04e0cc89456c175855c73cbde0f7f6b172193fc612b828ae93dbf656c921f7ff41fe33cc72a2dec7708bbe2ac365620f0db28c4a6569cf53bd37d71c848b1
data/Gemfile CHANGED
@@ -5,9 +5,7 @@ source "https://rubygems.org"
5
5
  # Specify your gem's dependencies in ruby-miradore.gemspec
6
6
  gemspec
7
7
 
8
- gem "rake", "~> 13.0"
9
- gem "rspec", "~> 3.0"
10
- gem "rubocop", "~> 1.7"
11
- gem "httparty"
12
- gem "finest-builder", "~> 0.0.4"
13
- gem "crack"
8
+ group :test do
9
+ gem "webmock"
10
+ gem "vcr"
11
+ end
data/Gemfile.lock ADDED
@@ -0,0 +1,80 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ ruby-miradore (1.0.0)
5
+ crack (~> 0.4.5)
6
+ finest-builder (~> 0.0.4)
7
+ httparty (~> 0.18.1)
8
+ rake (~> 13.0)
9
+ rspec (~> 3.0)
10
+ rubocop (~> 1.7)
11
+
12
+ GEM
13
+ remote: https://rubygems.org/
14
+ specs:
15
+ addressable (2.7.0)
16
+ public_suffix (>= 2.0.2, < 5.0)
17
+ ast (2.4.2)
18
+ crack (0.4.5)
19
+ rexml
20
+ diff-lcs (1.4.4)
21
+ finest-builder (0.0.5)
22
+ hashdiff (1.0.1)
23
+ httparty (0.18.1)
24
+ mime-types (~> 3.0)
25
+ multi_xml (>= 0.5.2)
26
+ mime-types (3.3.1)
27
+ mime-types-data (~> 3.2015)
28
+ mime-types-data (3.2021.0225)
29
+ multi_xml (0.6.0)
30
+ parallel (1.20.1)
31
+ parser (3.0.1.1)
32
+ ast (~> 2.4.1)
33
+ public_suffix (4.0.6)
34
+ rainbow (3.0.0)
35
+ rake (13.0.3)
36
+ regexp_parser (2.1.1)
37
+ rexml (3.2.5)
38
+ rspec (3.10.0)
39
+ rspec-core (~> 3.10.0)
40
+ rspec-expectations (~> 3.10.0)
41
+ rspec-mocks (~> 3.10.0)
42
+ rspec-core (3.10.1)
43
+ rspec-support (~> 3.10.0)
44
+ rspec-expectations (3.10.1)
45
+ diff-lcs (>= 1.2.0, < 2.0)
46
+ rspec-support (~> 3.10.0)
47
+ rspec-mocks (3.10.2)
48
+ diff-lcs (>= 1.2.0, < 2.0)
49
+ rspec-support (~> 3.10.0)
50
+ rspec-support (3.10.2)
51
+ rubocop (1.14.0)
52
+ parallel (~> 1.10)
53
+ parser (>= 3.0.0.0)
54
+ rainbow (>= 2.2.2, < 4.0)
55
+ regexp_parser (>= 1.8, < 3.0)
56
+ rexml
57
+ rubocop-ast (>= 1.5.0, < 2.0)
58
+ ruby-progressbar (~> 1.7)
59
+ unicode-display_width (>= 1.4.0, < 3.0)
60
+ rubocop-ast (1.5.0)
61
+ parser (>= 3.0.1.1)
62
+ ruby-progressbar (1.11.0)
63
+ unicode-display_width (2.0.0)
64
+ vcr (6.0.0)
65
+ webmock (3.12.2)
66
+ addressable (>= 2.3.6)
67
+ crack (>= 0.3.2)
68
+ hashdiff (>= 0.4.0, < 2.0.0)
69
+
70
+ PLATFORMS
71
+ x86_64-darwin-20
72
+ x86_64-linux
73
+
74
+ DEPENDENCIES
75
+ ruby-miradore!
76
+ vcr
77
+ webmock
78
+
79
+ BUNDLED WITH
80
+ 2.2.15
data/lib/ruby/miradore.rb CHANGED
@@ -1,31 +1,36 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative "miradore/version"
4
- require 'httparty'
5
- require 'json'
6
- require 'crack/xml'
7
- require 'finest/builder'
4
+ require "httparty"
5
+ require "json"
6
+ require "crack/xml"
7
+ require "finest/builder"
8
8
 
9
9
  module Ruby
10
10
  module Miradore
11
- class Error < StandardError; end
12
-
13
- @@msp_api_key = ENV['MSP_API_KEY'] || '3_IHBPttQ.ub[OG27'
14
-
11
+ class MspConnectionError < StandardError; end
15
12
 
16
13
  def self.api_key
17
- @@msp_api_key
14
+ @@msp_api_key = ENV["MSP_API_KEY"]
18
15
  end
19
16
 
20
17
  def self.api_urls
21
18
  {
22
- v1: 'https://%{subdomain}.online.miradore.com/API/Device?auth=%{auth}&select=*,Category.*,InvDevice.*,InvStorage.*,InvOS.*,Enrollment.*,Client.*,User.*,Location.*,Security.*,ReportedLocation.*',
23
- v2: 'https://%{subdomain}.online.miradore.com/API/v2/Device/%{id}/%{method}'
19
+ simple_v1: "https://%{subdomain}.online.miradore.com/API/Device?auth=%{auth}&select=ID,%{item}.*&filters=%{filter}",
20
+ v1: "https://%{subdomain}.online.miradore.com/API/Device?auth=%{auth}&select=*,Category.*,InvDevice.*,InvStorage.*,InvOS.*,Enrollment.*,Client.*,User.*,Location.*,Security.*,ReportedLocation.*&filters=%{filter}",
21
+ v2: "https://%{subdomain}.online.miradore.com/API/v2/Device/%{id}/%{method}"
24
22
  }
25
23
  end
26
24
 
27
25
  def self.url(version = :v1, *args)
28
- Miradore::api_urls[version] % { subdomain: args[0], id: args[1], method: args[2], auth: Miradore::api_key }
26
+ Miradore.api_urls[version] % {
27
+ subdomain: args[0],
28
+ item: args[1],
29
+ id: args[1],
30
+ method: args[2],
31
+ filter: args[2][0].nil? ? nil : "(InvDevice.SerialNumber eq #{args[2][0]})",
32
+ auth: Miradore.api_key
33
+ }
29
34
  end
30
35
 
31
36
  class Request
@@ -35,14 +40,32 @@ module Ruby
35
40
  attr_reader :subdomain
36
41
 
37
42
  def self.all(subdomain, *args)
38
- response = JSON.parse(Crack::XML.parse(get(Miradore::url(:v1, subdomain)).body).to_json, :quirks_mode => true).dig("Content", "Items", "Device")
39
- if response.is_a?(Array)
40
- response.map! { |e| Device.new(e.transform_keys(&:downcase), subdomain) }
41
- else
42
- Device.new(response.transform_keys(&:downcase), subdomain)
43
- end
43
+ response = JSON.parse(
44
+ Crack::XML.parse(
45
+ get(
46
+ Miradore.url(version, subdomain, class_name, args)
47
+ ).body
48
+ ).to_json,
49
+ quirks_mode: true
50
+ ).dig("Content", "Items", "Device")
51
+ transform(response, subdomain)
52
+ rescue StandardError
53
+ raise MspConnectionError, "Error connecting to manager service provider"
44
54
  end
45
55
 
56
+ def self.transform(response, subdomain)
57
+ return response.map! { |e| Device.new(e.transform_keys(&:downcase), subdomain) } if response.is_a?(Array)
58
+
59
+ Device.new(response.transform_keys(&:downcase), subdomain)
60
+ end
61
+
62
+ def self.version
63
+ superclass == Request ? :simple_v1 : :v1
64
+ end
65
+
66
+ def self.class_name
67
+ to_s.split("::").last
68
+ end
46
69
  end
47
70
 
48
71
  class Device
@@ -63,7 +86,7 @@ module Ruby
63
86
  end
64
87
 
65
88
  def lostmode(*args)
66
- if (args[0])
89
+ if args[0]
67
90
  http_method(:post, id, __method__)
68
91
  else
69
92
  http_method(:delete, id, __method__)
@@ -81,11 +104,33 @@ module Ruby
81
104
  private
82
105
 
83
106
  def http_method(*args)
84
- self.class.headers 'X-API-Key' => Miradore::api_key
85
- self.class.method(args[0]).call(Miradore::url(:v2, subdomain, args[1], args[2]))
107
+ self.class.headers "X-API-Key" => Miradore.api_key
108
+ self.class.method(args[0]).call(Miradore.url(:v2, subdomain, args[1], args[2]))
109
+ rescue StandardError
110
+ raise MspConnectionError, "Error connecting to manager service provider"
86
111
  end
87
112
 
88
113
  end
89
114
 
115
+ class Category < Request; end
116
+
117
+ class InvDevice < Request; end
118
+
119
+ class InvStorage < Request; end
120
+
121
+ class InvOS < Request; end
122
+
123
+ class Enrollment < Request; end
124
+
125
+ class Client < Request; end
126
+
127
+ class User < Request; end
128
+
129
+ class Location < Request; end
130
+
131
+ class Security < Request; end
132
+
133
+ class ReportedLocation < Request; end
134
+
90
135
  end
91
136
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Ruby
4
4
  module Miradore
5
- VERSION = "0.1.1"
5
+ VERSION = "1.0.0"
6
6
  end
7
7
  end
Binary file
Binary file
@@ -31,6 +31,12 @@ 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 "rake", "~> 13.0"
35
+ spec.add_dependency "rspec", "~> 3.0"
36
+ spec.add_dependency "rubocop", "~> 1.7"
37
+ spec.add_dependency "httparty", "~> 0.18.1"
38
+ spec.add_dependency "finest-builder", "~> 0.0.4"
39
+ spec.add_dependency "crack", "~> 0.4.5"
34
40
 
35
41
  # For more information and examples about making a new gem, checkout our
36
42
  # guide at: https://bundler.io/guides/creating_gem.html
metadata CHANGED
@@ -1,15 +1,99 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-miradore
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eduard
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-04-29 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2021-05-12 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rake
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '13.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '13.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '3.0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '3.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rubocop
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.7'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.7'
55
+ - !ruby/object:Gem::Dependency
56
+ name: httparty
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 0.18.1
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 0.18.1
69
+ - !ruby/object:Gem::Dependency
70
+ name: finest-builder
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.0.4
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.0.4
83
+ - !ruby/object:Gem::Dependency
84
+ name: crack
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 0.4.5
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 0.4.5
13
97
  description: Miradore MSP Ruby Gem
14
98
  email:
15
99
  - eduard@rzilient.club
@@ -24,6 +108,7 @@ files:
24
108
  - CHANGELOG.md
25
109
  - CODE_OF_CONDUCT.md
26
110
  - Gemfile
111
+ - Gemfile.lock
27
112
  - LICENSE.txt
28
113
  - README.md
29
114
  - Rakefile
@@ -31,6 +116,8 @@ files:
31
116
  - bin/setup
32
117
  - lib/ruby/miradore.rb
33
118
  - lib/ruby/miradore/version.rb
119
+ - ruby-miradore-0.1.0.gem
120
+ - ruby-miradore-0.1.1.gem
34
121
  - ruby-miradore.gemspec
35
122
  homepage: https://github.com/eddygarcas/ruby-miradore
36
123
  licenses: