Swiftpack.co - hacocms/hacocms-ios-sdk as Swift Package

Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
See all packages published by hacocms.
hacocms/hacocms-ios-sdk 1.0.1
hacoCMSのiOS用 API クライアントライブラリです。
⭐️ 1
🕓 4 weeks ago
iOS
.package(url: "https://github.com/hacocms/hacocms-ios-sdk.git", from: "1.0.1")

hacocms-ios-sdk

hacoCMSのiOS用 API クライアントライブラリです。

  • Platform: iOS 13.0+
  • Minimum Swift Version: 5.x

Step 1. hacoCMSのAPIスキーマ設定

お持ちのhacoCMSアカウントの適当なプロジェクト(無ければ作成してください)に、ブログ記事のAPIを以下の設定で作成してください。APIの作成方法についてはhacoCMSのドキュメントをご確認ください。

  • API名:記事(任意)
  • エンドポイント:entries
  • 説明文:(任意)
  • APIの型:リスト形式
  • APIスキーマ:下記の表と画像を参照
# details フィールド名(任意) フィールド ID
1 テキストフィールド タイトル title
2 テキストフィールド 概要 description
3 リッチテキスト 本文 body

記事APIを作成できたら、適当な記事をいくつか作成してみましょう。コンテンツの作成方法についてはhacoCMSのドキュメントをご確認ください。

Step 2. hacoCMS SDKのインストール

hacoCMS APIをiOSで呼び出すためのSDKであるhacoCMSiOSSDKを以下の3つの方法のいずれかでインストールできます。

CocoaPods

まず、Podfileファイルに下記を追加してください。

pod 'HacoCMSiOSSDK'

次に、Terminal内でpod installを実行してください。

Carthage

Cartfileファイルに下記を追加してください。

github "hacocms/hacocms-ios-sdk"

Swift Package Manager

Package.swiftファイルに下記を追加してください。

import PackageDescription

let package = Package(
    [...]
    dependencies: [
        .package(url: "https://github.com/hacocms/hacocms-ios-sdk.git", from: "1.0.1"),
    ]
)

Minimum Xcode Version: 13.4

Step 3. 使い方

クライアント対象の作成

let client = HacoCmsClient(
    subDomain: SUB_DOMAIN, // Sub domain in project basic settings
    accessToken: ACCESS_TOKEN, // Access-Token for the project
    draftToken: PROJECT_DRAFT_TOKEN, // Optional: Project-Draft-Token for your project
    loggingRequest: true // Optional: Using for log for request
)

APIから返ってきた結果をmapingするために、 CodableからextendsされたObjectを作ります。

class HacoContent: Codable {
    let data: [Entry]
}

class Entry: Codable {
    let id: String
    let title: String
    let description: String
    let body: String
}

APIから返ってきた結果を処理するために、Closures もしくは Combineを通して処理します。

Closuresの使用


// Get Content List
// returnType: Object is extended from Codable
// includingDraft: Retrieve the list of content that include draft articles
client.getListContent(returnType: HacoContent.self, path: "/entries") { result in
    switch result {
    case .success(let response):
        print(response.data)
    case .failure(let error):
        print(error)
    }
}

// Get Single Content
client.getSingleContent(returnType: User.self, path: "/user"){ result in
    switch result {
    case .success(let response):
        print(response)
    case .failure(let error):
        print(error)
    }
}

// Get Detail Content
client.getDetailContent(returnType: Content.self, path: "/posts", contentId: "contentID", draftToken: "draft_token") { result in
    switch result {
    case .success(let response):
        print(response)
    case .failure(let error):
        print(error)
    }
}

Combineの使用


// Get Content List
// returnType: Object is extended from Codable
// includingDraft: Retrieve the list of content that include draft articles
client.getListContent(returnType: HacoContent.self, path: "/entries", query: query, includingDraft: false)
    .convertToResult()
    .sink(receiveValue: { result in
        switch result {
        case .success(let response):
            print(response.data)
        case .failure(let error):
            print(error)
        }
    })
    .store(in: &subscriptions)


// Get Single Content
client.getSingleContent(returnType: User.self, path: "/user")
    .convertToResult()
    .sink(receiveValue: { result in
        switch result {
        case .success(let response):
            print(response)
        case .failure(let error):
            print(error)
        }
    })
    .store(in: &subscriptions)


// Get Detail Content
client.getDetailContent(returnType: Content.self, path: "/posts", contentId: "contentID", draftToken: "draft_token")
    .convertToResult()
    .sink(receiveValue: { result in
        switch result {
        case .success(let response):
            print(response)
        case .failure(let error):
            print(error)
        }
    })
    .store(in: &subscriptions)


Parameters

APIリクエスト時に指定する必要があるパラメータを定義することもできます。

client.getListContent(returnType: ResponseData.self, path: "/posts", query: QueryBuilder(limit: 3, s: "-updatedAt")) { result in
    switch result {
    case .success(let response):
        print(response.data)
    case .failure(let error):
        print(error)
    }
}

hacoCMS APIリファレンス

LICENSE

MIT license

GitHub

link
Stars: 1
Last commit: 3 weeks ago
jonrohan Something's broken? Yell at me @ptrpavlik. Praise and feedback (and money) is also welcome.

Dependencies

Release Notes

1.0.1
4 weeks ago

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics