RicohAPIMStorage 2.1.2

RicohAPIMStorage 2.1.2

测试已测试
语言语言 SwiftSwift
许可协议 MIT
发布上次发布2017年6月
SwiftSwift 版本2.3
SPM支持 SPM

ricohapi 维护。



  • Ricoh 公司,有限公司

Ricoh Media Storage for Swift

此开源库允许您将 Ricoh 媒体存储集成到您的 Swift 应用程序中。

了解更多信息请访问 http://docs.ricohapi.com/

要求

  • Swift 2.2+
  • Xcode 7.3.1+

您还需要

  • Ricoh API 客户端凭证(client_id & client_secret)
  • Ricoh ID(user_id & password)

如果您没有,请从 THETA 开发者网站 注册您自己和您的客户端。

依赖项

安装

本节向您展示了两种不同方法在您的应用程序中安装 Ricoh Media Storage for Swift。
查看 Media Storage 示例 以测试 Ricoh Media Storage for Swift 的示例。

手动

  • 运行以下命令以克隆 Ricoh Media Storage for Swift:
$ git clone --recursive https://github.com/ricohapi/media-storage-swift.git
  • 打开新的 media-storage-swift 目录,并将 RicohAPIMStorage.xcodeproj 拖到项目的项目导航器中。

    它应该出现在您应用程序蓝色项目图标下。它是否位于所有其他 Xcode 组上方或下方并不重要。

  • 在 Xcode 的方案菜单中选择 RicohAPIAuth 方案并运行。

  • 选择您自己的应用程序方案并运行以加载 RicohAPIMStorage 模块。

  • 安装完成!查看 示例流程 以获取编码示例。

示例流程

// Import
import RicohAPIAuth
import RicohAPIMStorage

// Set your Ricoh API Client Credentials
var authClient = AuthClient(
    clientId: "<your_client_id>",
    clientSecret: "<your_client_secret>"
)

@IBAction func uploadButtonTapped(sender: AnyObject) {
    // Set your resource owner credentials (Ricoh ID)
    authClient.setResourceOwnerCreds(
        userId: "<your_user_id>",
        userPass: "<your_password>"
    )

    // Initialize a MediaStorage object with the AuthClient object
    let mstorage = MediaStorage(authClient: authClient)

    // Connect to the server
    mstorage.connect(){result, error in

        //Prepare an NSData object in your way
        let mediaUrl = NSBundle.mainBundle().URLForResource("<your_media_name>", withExtension: "jpg")
        let mediaData = NSData(contentsOfURL: mediaUrl!)!

        // Upload
        mstorage.upload(data: mediaData){result, error in
            if !error.isEmpty() {
                print("status code: \(error.statusCode)")
                print("error message: \(error.message)")
            } else {
                print("media id : \(result.id)")
                print("media contentType : \(result.contentType)")
                print("media bytes : \(result.bytes)")
                print("created at : \(result.createdAt)")
            }
        }
    }
}

SDK API 示例

AuthClient

var authClient = AuthClient(
    clientId: "<your_client_id>",
    clientSecret: "<your_client_secret>"
)
authClient.setResourceOwnerCreds(
    userId: "<your_user_id>",
    userPass: "<your_password>"
)

构造函数

var mstorage = MediaStorage(authClient: authClient)

连接到服务器

mstorage.connect(){result, error in
    if error.isEmpty() {
        var accessToken: String = result.accessToken
        // do something
    }
}

上传

let data: NSData = ...
mstorage.upload(data: data){result, error in
    if error.isEmpty() {
        var id: String = result.id
        var contentType: String = result.contentType
        var bytes: Int = result.bytes
        var createdAt: String = result.createdAt
        // do something
    }
}

下载

mstorage.download(mediaId: "<media_id>"){result, error in
    if error.isEmpty() {
        var data: NSData = result.data
        // do something
    }
}

显示媒体ID列表

  • 无选项

如果您在第1个参数上没有任何设置或传递一个空的字典对象,您将获得一个默认列表。

mstorage.list(){result, error in
    if error.isEmpty() {
        var mediaList: Array = result.mediaList
        for media in mediaList {
            var id: String = media.id
        }
        var pagingNext: String? = result.paging.next
        var pagingPrevious: String? = result.paging.previous
        // do something
    }
}
  • 选项使用

您还可以使用如下所示的字典对象列出选项。可用的选项有limitafterbefore

mstorage.list(["limit": 25, "after": "<media_id>"]){result, error in
    // do something
}
  • 搜索

您可以将另一个含filter键的字典对象添加到列表选项中,以通过用户元数据进行搜索。

mstorage.list(["limit": 25, "after": "<media_id>",
    "filter": ["meta.user.<key1>": "<value1>", "meta.user.<key2>": "<value2>"]]){result, error in
    // do something
}

删除媒体

mstorage.delete(mediaId: "<media_id>"){error in
    if error.isEmpty() {
        // do something
    }
}

获取媒体信息

mstorage.info(mediaId: "<media_id>"){result, error in
    if error.isEmpty() {
        var id: String = result.id
        var contentType: String = result.contentType
        var bytes: Int = result.bytes
        var createdAt: String = result.createdAt
        // do something
    }
}

附加媒体元数据

您可以将您的原始元数据定义为'用户元数据'。对于相同的键,现有元数据值将被覆盖。一次可以附加多达10个用户元数据到媒体数据。

mstorage.addMeta(mediaId: "<media_id>", userMeta: ["user.<key1>": "<value1>", "user.<key2>": "<value2>"]){error in
    if error.isEmpty() {
        // do something
    }
}

获取媒体元数据

  • 全部
mstorage.meta(mediaId: "<media_id>"){result, error in
    if error.isEmpty() {
        var exif: [String: String] = result.exif
        var gpano: [String: String] = result.gpano
        var userMeta: [String: String] = result.userMeta
        // do something
    }
}
  • Exif
mstorage.meta(mediaId: "<media_id>", fieldName: "exif"){result, error in
    if error.isEmpty() {
        var exif: [String: String] = result
        // do something
    }
}
  • Google Photo Sphere XMP
mstorage.meta(mediaId: "<media_id>", fieldName: "gpano"){result, error in
    if error.isEmpty() {
        var gpano: [String: String] = result
        // do something
    }
}
  • 用户元数据(全部)
mstorage.meta(mediaId: "<media_id>", fieldName: "user"){result, error in
    if error.isEmpty() {
        var userMeta: [String: String] = result
        // do something
    }
}
  • 用户元数据(带键)
mstorage.meta(mediaId: "<media_id>", fieldName: "user.<key>"){result, error in
    if error.isEmpty() {
        var value: String = result["<key>"]!
        // do something
    }
}

删除媒体元数据

  • 用户元数据(全部)
mstorage.removeMeta(mediaId: "<media_id>", fieldName: "user"){error in
    if error.isEmpty() {
        // do something
    }
}
  • 用户元数据(带键)
mstorage.removeMeta(mediaId: "<media_id>", fieldName: "user.<key>"){error in
    if error.isEmpty() {
        // do something
    }
}

参考