Skip to content

Commit 5d4c4b9

Browse files
authored
Merge pull request #20 from Ethenyl/feature/add-hardware-model
[JAMFKit] Add Hardware model
2 parents 04847ab + 32f248b commit 5d4c4b9

32 files changed

+1371
-78
lines changed

.travis.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
os: osx
22
language: objective-c
3-
osx_image: xcode8.3
3+
osx_image: xcode9.2
44

55
env:
66
global:
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3+
<plist version="1.0">
4+
<dict>
5+
<key>BuildSystemType</key>
6+
<string>Latest</string>
7+
</dict>
8+
</plist>

JAMFKit/JAMFKit.xcodeproj/project.pbxproj

+82
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,20 @@
99
/* Begin PBXBuildFile section */
1010
52D6D9871BEFF229002C0205 /* JAMFKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 52D6D97C1BEFF229002C0205 /* JAMFKit.framework */; };
1111
DD7502881C68FEDE006590AF /* JAMFKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 52D6DA0F1BF000BD002C0205 /* JAMFKit.framework */; };
12+
ED071F4E1FB33275003FAB0E /* HardwareGeneral.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED071F4D1FB33275003FAB0E /* HardwareGeneral.swift */; };
13+
ED071F4F1FB33275003FAB0E /* HardwareGeneral.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED071F4D1FB33275003FAB0E /* HardwareGeneral.swift */; };
14+
ED071F521FB33399003FAB0E /* HardwareTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED071F511FB33399003FAB0E /* HardwareTests.swift */; };
15+
ED071F531FB33399003FAB0E /* HardwareTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED071F511FB33399003FAB0E /* HardwareTests.swift */; };
16+
ED071F551FB333A6003FAB0E /* HardwareGeneralTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED071F541FB333A6003FAB0E /* HardwareGeneralTests.swift */; };
17+
ED071F561FB333A6003FAB0E /* HardwareGeneralTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED071F541FB333A6003FAB0E /* HardwareGeneralTests.swift */; };
18+
ED071F581FB333AF003FAB0E /* HardwareLocationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED071F571FB333AF003FAB0E /* HardwareLocationTests.swift */; };
19+
ED071F591FB333AF003FAB0E /* HardwareLocationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED071F571FB333AF003FAB0E /* HardwareLocationTests.swift */; };
20+
ED071F5B1FB33D11003FAB0E /* HardwareRemoteManagement.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED071F5A1FB33D11003FAB0E /* HardwareRemoteManagement.swift */; };
21+
ED071F5C1FB33D11003FAB0E /* HardwareRemoteManagement.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED071F5A1FB33D11003FAB0E /* HardwareRemoteManagement.swift */; };
22+
ED071F5E1FB33DF9003FAB0E /* HardwareRemoteManagementTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED071F5D1FB33DF9003FAB0E /* HardwareRemoteManagementTests.swift */; };
23+
ED071F5F1FB33DF9003FAB0E /* HardwareRemoteManagementTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED071F5D1FB33DF9003FAB0E /* HardwareRemoteManagementTests.swift */; };
24+
ED071F611FB34222003FAB0E /* PreciseDate.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED071F601FB34222003FAB0E /* PreciseDate.swift */; };
25+
ED071F621FB34222003FAB0E /* PreciseDate.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED071F601FB34222003FAB0E /* PreciseDate.swift */; };
1226
ED1D930B1FA20FAB005589F5 /* Identifiable.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED1D930A1FA20FAB005589F5 /* Identifiable.swift */; };
1327
ED1D930D1FA20FB0005589F5 /* BaseObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED1D930C1FA20FB0005589F5 /* BaseObject.swift */; };
1428
ED1D930E1FA20FB3005589F5 /* Identifiable.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED1D930A1FA20FAB005589F5 /* Identifiable.swift */; };
@@ -17,6 +31,12 @@
1731
ED1D93111FA20FB9005589F5 /* BaseObjectTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED1D93081FA20F86005589F5 /* BaseObjectTests.swift */; };
1832
ED3597831FAA11B6006E3B66 /* JSONHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED3597821FAA11B6006E3B66 /* JSONHelper.swift */; };
1933
ED3597841FAA11B6006E3B66 /* JSONHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED3597821FAA11B6006E3B66 /* JSONHelper.swift */; };
34+
ED56BB7C1FB1B15700416C1A /* Hardware.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED56BB7B1FB1B15700416C1A /* Hardware.swift */; };
35+
ED56BB7D1FB1B15700416C1A /* Hardware.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED56BB7B1FB1B15700416C1A /* Hardware.swift */; };
36+
ED56BB7F1FB1B24B00416C1A /* HardwareLocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED56BB7E1FB1B24B00416C1A /* HardwareLocation.swift */; };
37+
ED56BB801FB1B24B00416C1A /* HardwareLocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED56BB7E1FB1B24B00416C1A /* HardwareLocation.swift */; };
38+
ED5B01471FB357F8005F0C47 /* PreciseDateTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED5B01461FB357F8005F0C47 /* PreciseDateTests.swift */; };
39+
ED5B01481FB357F8005F0C47 /* PreciseDateTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED5B01461FB357F8005F0C47 /* PreciseDateTests.swift */; };
2040
ED6C4AE31FAC61DF007B7026 /* User.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED7383A01FAB75CE006259FC /* User.swift */; };
2141
ED71F2B51FA9ED890056790C /* Mocks.bundle in Resources */ = {isa = PBXBuildFile; fileRef = ED71F2B41FA9ED890056790C /* Mocks.bundle */; };
2242
ED71F2B61FA9ED890056790C /* Mocks.bundle in Resources */ = {isa = PBXBuildFile; fileRef = ED71F2B41FA9ED890056790C /* Mocks.bundle */; };
@@ -27,6 +47,8 @@
2747
ED7383A11FAB75CE006259FC /* User.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED7383A01FAB75CE006259FC /* User.swift */; };
2848
ED7383A31FAB7D5A006259FC /* UserTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED7383A21FAB7D5A006259FC /* UserTests.swift */; };
2949
ED7383A41FAB7D5A006259FC /* UserTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED7383A21FAB7D5A006259FC /* UserTests.swift */; };
50+
EDCE84B01FC3152E0066AA75 /* HardwarePurchasing.swift in Sources */ = {isa = PBXBuildFile; fileRef = EDCE84AF1FC3152E0066AA75 /* HardwarePurchasing.swift */; };
51+
EDCE84B11FC3152E0066AA75 /* HardwarePurchasing.swift in Sources */ = {isa = PBXBuildFile; fileRef = EDCE84AF1FC3152E0066AA75 /* HardwarePurchasing.swift */; };
3052
/* End PBXBuildFile section */
3153

3254
/* Begin PBXContainerItemProxy section */
@@ -53,15 +75,26 @@
5375
AD2FAA261CD0B6D800659CF4 /* JAMFKit.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = JAMFKit.plist; sourceTree = "<group>"; };
5476
AD2FAA281CD0B6E100659CF4 /* JAMFKitTests.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = JAMFKitTests.plist; sourceTree = "<group>"; };
5577
DD75027A1C68FCFC006590AF /* JAMFKit-macOS Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "JAMFKit-macOS Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
78+
ED071F4D1FB33275003FAB0E /* HardwareGeneral.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HardwareGeneral.swift; sourceTree = "<group>"; };
79+
ED071F511FB33399003FAB0E /* HardwareTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HardwareTests.swift; sourceTree = "<group>"; };
80+
ED071F541FB333A6003FAB0E /* HardwareGeneralTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HardwareGeneralTests.swift; sourceTree = "<group>"; };
81+
ED071F571FB333AF003FAB0E /* HardwareLocationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HardwareLocationTests.swift; sourceTree = "<group>"; };
82+
ED071F5A1FB33D11003FAB0E /* HardwareRemoteManagement.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HardwareRemoteManagement.swift; sourceTree = "<group>"; };
83+
ED071F5D1FB33DF9003FAB0E /* HardwareRemoteManagementTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HardwareRemoteManagementTests.swift; sourceTree = "<group>"; };
84+
ED071F601FB34222003FAB0E /* PreciseDate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreciseDate.swift; sourceTree = "<group>"; };
5685
ED1D93081FA20F86005589F5 /* BaseObjectTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BaseObjectTests.swift; sourceTree = "<group>"; };
5786
ED1D930A1FA20FAB005589F5 /* Identifiable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Identifiable.swift; sourceTree = "<group>"; };
5887
ED1D930C1FA20FB0005589F5 /* BaseObject.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BaseObject.swift; sourceTree = "<group>"; };
5988
ED3597821FAA11B6006E3B66 /* JSONHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JSONHelper.swift; sourceTree = "<group>"; };
89+
ED56BB7B1FB1B15700416C1A /* Hardware.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Hardware.swift; sourceTree = "<group>"; };
90+
ED56BB7E1FB1B24B00416C1A /* HardwareLocation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HardwareLocation.swift; sourceTree = "<group>"; };
91+
ED5B01461FB357F8005F0C47 /* PreciseDateTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreciseDateTests.swift; sourceTree = "<group>"; };
6092
ED71F2B41FA9ED890056790C /* Mocks.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = Mocks.bundle; sourceTree = "<group>"; };
6193
ED73839A1FAB5AD9006259FC /* Site.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Site.swift; sourceTree = "<group>"; };
6294
ED73839D1FAB5B09006259FC /* SiteTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SiteTests.swift; sourceTree = "<group>"; };
6395
ED7383A01FAB75CE006259FC /* User.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = User.swift; sourceTree = "<group>"; };
6496
ED7383A21FAB7D5A006259FC /* UserTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserTests.swift; sourceTree = "<group>"; };
97+
EDCE84AF1FC3152E0066AA75 /* HardwarePurchasing.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HardwarePurchasing.swift; sourceTree = "<group>"; };
6598
/* End PBXFileReference section */
6699

67100
/* Begin PBXFrameworksBuildPhase section */
@@ -163,10 +196,23 @@
163196
name = Tests;
164197
sourceTree = "<group>";
165198
};
199+
ED071F501FB33386003FAB0E /* Hardware */ = {
200+
isa = PBXGroup;
201+
children = (
202+
ED071F541FB333A6003FAB0E /* HardwareGeneralTests.swift */,
203+
ED071F571FB333AF003FAB0E /* HardwareLocationTests.swift */,
204+
ED071F5D1FB33DF9003FAB0E /* HardwareRemoteManagementTests.swift */,
205+
ED071F511FB33399003FAB0E /* HardwareTests.swift */,
206+
);
207+
path = Hardware;
208+
sourceTree = "<group>";
209+
};
166210
ED1D93051FA20F43005589F5 /* Models */ = {
167211
isa = PBXGroup;
168212
children = (
169213
ED1D930C1FA20FB0005589F5 /* BaseObject.swift */,
214+
ED071F601FB34222003FAB0E /* PreciseDate.swift */,
215+
ED56BB7A1FB1B14400416C1A /* Hardware */,
170216
ED73839A1FAB5AD9006259FC /* Site.swift */,
171217
ED7383A01FAB75CE006259FC /* User.swift */,
172218
);
@@ -185,6 +231,8 @@
185231
isa = PBXGroup;
186232
children = (
187233
ED1D93081FA20F86005589F5 /* BaseObjectTests.swift */,
234+
ED071F501FB33386003FAB0E /* Hardware */,
235+
ED5B01461FB357F8005F0C47 /* PreciseDateTests.swift */,
188236
ED73839D1FAB5B09006259FC /* SiteTests.swift */,
189237
ED7383A21FAB7D5A006259FC /* UserTests.swift */,
190238
);
@@ -199,6 +247,18 @@
199247
path = Helpers;
200248
sourceTree = "<group>";
201249
};
250+
ED56BB7A1FB1B14400416C1A /* Hardware */ = {
251+
isa = PBXGroup;
252+
children = (
253+
ED56BB7B1FB1B15700416C1A /* Hardware.swift */,
254+
ED071F4D1FB33275003FAB0E /* HardwareGeneral.swift */,
255+
ED56BB7E1FB1B24B00416C1A /* HardwareLocation.swift */,
256+
EDCE84AF1FC3152E0066AA75 /* HardwarePurchasing.swift */,
257+
ED071F5A1FB33D11003FAB0E /* HardwareRemoteManagement.swift */,
258+
);
259+
path = Hardware;
260+
sourceTree = "<group>";
261+
};
202262
ED71F2B31FA9ED720056790C /* Resources */ = {
203263
isa = PBXGroup;
204264
children = (
@@ -418,9 +478,15 @@
418478
isa = PBXSourcesBuildPhase;
419479
buildActionMask = 2147483647;
420480
files = (
481+
ED071F5B1FB33D11003FAB0E /* HardwareRemoteManagement.swift in Sources */,
421482
ED7383A11FAB75CE006259FC /* User.swift in Sources */,
422483
ED1D930B1FA20FAB005589F5 /* Identifiable.swift in Sources */,
484+
ED56BB7C1FB1B15700416C1A /* Hardware.swift in Sources */,
423485
ED73839B1FAB5AD9006259FC /* Site.swift in Sources */,
486+
ED56BB7F1FB1B24B00416C1A /* HardwareLocation.swift in Sources */,
487+
ED071F611FB34222003FAB0E /* PreciseDate.swift in Sources */,
488+
EDCE84B01FC3152E0066AA75 /* HardwarePurchasing.swift in Sources */,
489+
ED071F4E1FB33275003FAB0E /* HardwareGeneral.swift in Sources */,
424490
ED1D930D1FA20FB0005589F5 /* BaseObject.swift in Sources */,
425491
);
426492
runOnlyForDeploymentPostprocessing = 0;
@@ -429,8 +495,13 @@
429495
isa = PBXSourcesBuildPhase;
430496
buildActionMask = 2147483647;
431497
files = (
498+
ED071F5E1FB33DF9003FAB0E /* HardwareRemoteManagementTests.swift in Sources */,
499+
ED5B01471FB357F8005F0C47 /* PreciseDateTests.swift in Sources */,
500+
ED071F551FB333A6003FAB0E /* HardwareGeneralTests.swift in Sources */,
432501
ED7383A31FAB7D5A006259FC /* UserTests.swift in Sources */,
502+
ED071F521FB33399003FAB0E /* HardwareTests.swift in Sources */,
433503
ED73839E1FAB5B09006259FC /* SiteTests.swift in Sources */,
504+
ED071F581FB333AF003FAB0E /* HardwareLocationTests.swift in Sources */,
434505
ED1D93111FA20FB9005589F5 /* BaseObjectTests.swift in Sources */,
435506
ED3597831FAA11B6006E3B66 /* JSONHelper.swift in Sources */,
436507
);
@@ -440,9 +511,15 @@
440511
isa = PBXSourcesBuildPhase;
441512
buildActionMask = 2147483647;
442513
files = (
514+
ED071F5C1FB33D11003FAB0E /* HardwareRemoteManagement.swift in Sources */,
443515
ED6C4AE31FAC61DF007B7026 /* User.swift in Sources */,
444516
ED1D930F1FA20FB6005589F5 /* BaseObject.swift in Sources */,
517+
ED56BB7D1FB1B15700416C1A /* Hardware.swift in Sources */,
445518
ED73839C1FAB5AD9006259FC /* Site.swift in Sources */,
519+
ED56BB801FB1B24B00416C1A /* HardwareLocation.swift in Sources */,
520+
ED071F621FB34222003FAB0E /* PreciseDate.swift in Sources */,
521+
EDCE84B11FC3152E0066AA75 /* HardwarePurchasing.swift in Sources */,
522+
ED071F4F1FB33275003FAB0E /* HardwareGeneral.swift in Sources */,
446523
ED1D930E1FA20FB3005589F5 /* Identifiable.swift in Sources */,
447524
);
448525
runOnlyForDeploymentPostprocessing = 0;
@@ -451,8 +528,13 @@
451528
isa = PBXSourcesBuildPhase;
452529
buildActionMask = 2147483647;
453530
files = (
531+
ED071F5F1FB33DF9003FAB0E /* HardwareRemoteManagementTests.swift in Sources */,
532+
ED5B01481FB357F8005F0C47 /* PreciseDateTests.swift in Sources */,
533+
ED071F561FB333A6003FAB0E /* HardwareGeneralTests.swift in Sources */,
454534
ED7383A41FAB7D5A006259FC /* UserTests.swift in Sources */,
535+
ED071F531FB33399003FAB0E /* HardwareTests.swift in Sources */,
455536
ED73839F1FAB5B09006259FC /* SiteTests.swift in Sources */,
537+
ED071F591FB333AF003FAB0E /* HardwareLocationTests.swift in Sources */,
456538
ED1D93101FA20FB9005589F5 /* BaseObjectTests.swift in Sources */,
457539
ED3597841FAA11B6006E3B66 /* JSONHelper.swift in Sources */,
458540
);

JAMFKit/Sources/Models/BaseObject.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public class BaseObject: Identifiable, CustomStringConvertible {
2424

2525
// MARK: - Initialization
2626

27-
public required init?(json: [String: Any]) {
27+
public required init?(json: [String: Any], node: String = "") {
2828
guard
2929
let identifier = json[BaseObject.IdentifierKey] as? UInt,
3030
let name = json[BaseObject.NameKey] as? String
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
//
2+
// Hardware.swift
3+
// JAMFKit
4+
//
5+
// Created by Damien Rivet on 07.11.17.
6+
// Copyright © 2017 JAMFKit. All rights reserved.
7+
//
8+
9+
public class Hardware: Identifiable {
10+
11+
// MARK: - Constants
12+
13+
static let GeneralKey = "general"
14+
static let LocationKey = "location"
15+
static let PurchasingKey = "purchasing"
16+
17+
// MARK: - Properties
18+
19+
public var general: HardwareGeneral?
20+
public var location: HardwareLocation?
21+
public var purchasing: HardwarePurchasing?
22+
23+
// MARK: - Initialization
24+
25+
public required init?(json: [String : Any], node: String = "") {
26+
self.general = HardwareGeneral(json: json, node: Hardware.GeneralKey)
27+
self.location = HardwareLocation(json: json, node: Hardware.LocationKey)
28+
self.purchasing = HardwarePurchasing(json: json, node: Hardware.PurchasingKey)
29+
}
30+
31+
// MARK: - Functions
32+
33+
func toJSON() -> [String : Any] {
34+
var json = [String: Any]()
35+
36+
if let general = general { json[Hardware.GeneralKey] = general.toJSON() }
37+
if let location = location { json[Hardware.LocationKey] = location.toJSON() }
38+
if let purchasing = purchasing { json[Hardware.PurchasingKey] = purchasing.toJSON() }
39+
40+
return json
41+
}
42+
}

0 commit comments

Comments
 (0)