JamfKit
JamfKit
是一个用于通过任何 Jamf 主机提供的 JSS API 进行通信的 iOS / macOS / tvOS 框架。
摘要
功能
- 包括对大多数 JSS 对象的 JSON 编码/解码支持
- 包括 Objective-C 支持
- 包括 Swift 5+ 支持
- 包括 JSS 端点的 CRUD
URLRequest
的预消费 - 包括类处理或请求生成的演示 playground
安装
Carthage
要将 JamfKit
集成到您的项目中,请在您的 Cartfile
中添加以下行
github "Ethenyl/JamfKit"
然后运行以下命令
$ carthage update
Cocoapods
要将 JamfKit
集成到您的项目中,请在您的 Podfile
中添加以下行
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '10.0'
use_frameworks!
target '<Your Target Name>' do
pod 'JAMFKit'
end
然后运行以下命令
$ pod install
架构
协议
协议 | 描述 |
---|---|
端点 |
表示任何与 JSS 端点匹配的 JSS 对象。 |
可识别 |
表示任何可被识别的 JSS 对象(通过 ID 或名称识别)。 |
可请求 |
表示可以用于向任何 JSS 端点发起请求的对象。 |
子集 |
表示任何包含可以识别它们的通用对象的 JSS 对象。 |
可请求的一致性
符合 可请求
类的类暴露以下元素
- 一个接收 JSON 负载数据并将其返回为实例对象的初始化器
- 一个函数,用于返回表示该对象的实例的 JSON 负载
类
类 | 描述 |
---|---|
BaseObject |
代表大多数 JSS 对象的共同特征,至少包含一个 identifier 和一个 name 属性。 |
Building |
表示一个物理建筑。 |
Computer |
表示由 Jamf 管理的计算机,包含硬件的一般 / 位置 / 购买信息。 |
ComputerCommand |
表示可以在任何由 Jamf 管理的硬件元素上执行的逻辑命令。 |
ComputerConfigurationProfile |
表示可以应用到任何由 Jamf 管理的计算机上的逻辑配置配置文件。 |
ComputerGroup |
代表一组由Jamf管理的计算机,包含分组信息。 |
部门 |
代表一个物理部门。 |
DirectoryBinding |
代表计算机与活动目录用户之间的一种逻辑绑定。 |
MobileDeviceConfigurationProfile |
代表一种逻辑配置配置文件,可以应用于任何由Jamf管理的移动设备。 |
MobileDevice |
代表由Jamf管理的移动设备,包含设备的一般信息。 |
MobileDeviceGroup |
代表一组由Jamf管理的移动设备,包含分组信息。 |
NetbootServer |
代表一个物理网络启动服务器,包含有关服务器及其配置的信息。 |
NetworkSegment |
代表一个物理网络段,包含有关该段及其配置的信息。 |
Package |
代表一种逻辑应用程序包,包含关于应用程序需求和功能的信息。 |
Partition |
代表一个逻辑分区,位于Jamf管理的硬件元素内部。 |
Policy |
代表一种逻辑策略,可以应用于Jamf管理的任何硬件元素。 |
PreciseDate |
代表JSS API中的一个逻辑日期,包含三个属性:日期本身、日期的纪元变体以及日期的UTC版本。 |
Printer |
代表一个物理打印机,包含有关打印机及其配置的信息。 |
Script |
代表可以在Jamf管理的机器上执行的逻辑脚本。 |
Site |
代表一个物理位置(如建筑物、办公室等)。 |
SMTPServer |
代表物理SMTP服务器配置。 |
User |
代表一个Jamf用户,包含联系实际用户和识别分配给他的/她的硬件设备所需的标识属性。 |
使用方法
入门
演练场
要快速了解如何在您的Jamf相关功能中使用JamfKit
,您可以查看工作区中包含的Playgrounds
。
还可以查看单元测试,它们应该覆盖您的大部分需求。
模型
大多数类可以使用最基本的最小值进行初始化,所有属性都可以进行修改。
请求
通过遵循不同的CRUD协议(可创建、可读取、可更新和可删除),上列大部分JSS对象都能够提供各种适合不同需求的URLRequest
。
下面提供了获取URLRequest
的基本函数
函数 | 类型 | HTTP方法 | 示例 | 输出 |
---|---|---|---|---|
createRequest() |
实例 |
POST |
building.createRequest() |
http://jss.host/jss/objects/1 |
readAllRequest() |
静态 |
GET |
Building.readAllRequest() |
http://jamf.com/jss/objects |
readRequest(identifier:) |
静态 |
GET |
Building.readRequest(identifier: "12345") |
http://jamf.com/jss/objects/1 |
readRequest() |
实例 |
GET |
building.readRequest() |
http://jamf.com/jss/objects/1 |
updateRequest() |
实例 |
PUT |
building.updateRequest() |
http://jamf.com/jss/objects/1 |
deleteRequest(identifier:) |
静态 |
DELETE |
Building.deleteRequest(identifier: "12345") |
http://jamf.com/jss/objects/1 |
deleteRequest() |
实例 |
DELETE |
building.deleteRequest() |
http://jamf.com/jss/objects/1 |
某些对象可能会提供那些请求的不同版本,如MobileDevice
,具有readRequestWithName()
或deleteRequestWithSerialNumber()
(具有static
和instance
两种版本)。
参与贡献
所以,你想帮助改善JamfKit
?那太好了!任何有用的贡献都是欢迎的!
查看CONTRIBUTING获取有关如何为JamfKit
做出贡献的更多详情。
行为准则
对JamfKit
的任何贡献(问题、拉取请求、评论等)都非常欢迎。
但在进行任何贡献之前,请确保您遵守CODE_OF_CONDUCT。
否则,您的贡献有很大可能会被删除/阻止/隐藏。
常见问题问答
目前没有。
致谢
JamfKit
由 Ethenyl 拥有和维护。
您可以通过向存储库贡献来加入该列表。
许可
JamfKit
在 MIT 许可下发布。有关更多详情,请参阅 LICENSE。