SwiftyPSCore

MIT

SwiftyPSCore 是一个纯 Swift 编写的 PowerSchool API 客户端。其目标是通过处理身份验证和解码,简化与 PowerSchool 学生信息系统 API 的通信过程,使您能够专注于使用数据,而不是检索数据。

SwiftyPSCore 未经 PowerSchool 以任何方式认可、赞助或关联。 Swift 和 Swift 标志是 Apple Inc. 的商标。


目录


安装

在使用您应用程序中的 SwiftyPSCore 之前,您首先需要为您的 PowerSchool 服务器创建并安装一个 Plugin XML 文件。有关创建插件文件的信息可以在 PowerSchool 开发者支持 站点上找到。我们创建了一个示例插件 (PSDataAccessPlugin),您可以直接使用或根据需要进行修改。安装插件后,您将获得一个客户端 ID 和客户端密钥,用于与 PowerSchool 服务器进行身份验证。

Swift Package Manager

要在 Swift Package Manager 包中包含 SwiftyPSCore,请将其添加到您的 Package.swift 文件中定义的 dependencies 属性中。例如

dependencies: [
  .package(url: "https://github.com/dougonecent/SwiftyPSCore.git", from: "1.0.0-beta6")
]

用法

设置您的基本 URL、客户端 ID 和客户端密钥的环境变量。然后,在您的代码中,获取环境变量并实例化一个客户端

if let baseURL = ProcessInfo.processInfo.environment["BASE_URL"],
    let clientID = ProcessInfo.processInfo.environment["CLIENT_ID"],
    let clientSecret = ProcessInfo.processInfo.environment["CLIENT_SECRET"] {
        let client = SwiftyPSCore(baseURL, clientID: clientID, clientSecret: clientSecret)
}

现在您可以使用您的客户端来检索许多不同的资源。以下是一些示例:

学校中的课程数量

if let sections = try await client.sectionsForSchool(schoolID) {
    // sections: [Section]
} else {
    // no sections found
}

学区中的所有学生

if let students = try await client.studentsInDistrict() {
    // students: [Student]
} else {
    // no students found
}

PowerQueries

PowerQueries 是一项允许创建自定义 API 端点的功能。 SwiftyPSCore 仅包含核心端点和 PowerSchool 直接提供的 PowerQueries。 要将其他核心 PowerQueries 添加到 SwiftyPSCore,您需要使用正确的 <access-request> 元素修改插件文件 (PSDataAccessPlugin)。

如果您有兴趣创建自己的自定义 PowerQueries,请参阅我们的配套包 SwiftyPSCustomQueries 和相应的插件 SwiftyPSCustomQueriesPlugin。

使用 PowerQuery 端点的工作方式与任何其他端点一样

课程的注册情况

if let enrollments = try await client.enrollmentsForSections([testSection.sectionDCID]) {
    // enrollments: [StudentItem]
} else {
    // error: Error
}

贡献

如果您有希望添加到 SwiftyPSCore 的功能或想法,请创建一个 issue,尽可能详细地解释您的想法。

如果您遇到错误,请创建一个 issue,尽可能详细地解释该错误。

PowerSchool API 提供了对大量信息的访问权限,但不幸的是,我们没有时间研究和实现每个端点。 我们已尽力使您可以尽可能轻松地扩展库并贡献您的更改。 添加新端点的基本步骤是

  1. Fork 此存储库并将其克隆到您的开发机器。
  2. 根据 PowerSchool API 期望的 JSON 响应创建一个新模型。 您可以在 PowerSchool 开发者支持 站点上找到此信息。
  3. 将一个测试添加到 ModelTests.swift 文件,其中包含 JSON 响应的示例,以确保模型已正确解码。
  4. 将一个新函数添加到 SwiftyPSCoreEndpoints.swift 文件,用于您的端点。 您可以简单地复制一个已存在的函数,然后更改 path 和模型类型以匹配预期的响应。

请随时打开一个 pull request,其中包含您创建的任何其他端点。 我们希望尽可能多地涵盖端点。

我们努力保持代码尽可能简洁,并遵循标准的 Swift 编码约定,主要是 Swift API 设计指南raywenderlich.com Swift 风格指南。 请在提交 pull request 之前,通过 SwiftLint 运行任何代码更改。

端点测试

我们提供了针对沙箱 PowerSchool 服务器测试端点所需的文件,但您需要在您这边进行一些设置。

  1. 复制文件 testing_parameters.sample.json 并将其命名为 testing_parameters.json。 这是一个 JSON 文件,用于保存您将要测试的值,并在运行 EndpointTests 文件时进行解码。
  2. testing_parameters.json 文件添加到您的 Xcode 项目,包括在 SwiftyPSCoreTests 目标中。
  3. 修改 TestingParameters.swift 模型,以包含您想在测试中使用的任何其他参数。
  4. 将任何新的测试函数添加到 EndpointTests.swift 文件。

许可证

SwiftyPSCore 在 MIT 许可证下发布。 有关更多信息,请参见 LICENSE