AzureStorageApiClient 1.2.2

AzureStorageApiClient 1.2.2

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布时间上次发布2015年9月
SPM支持 SPM

xoyip 维护。



 
依赖项
AFNetworking~> 2.5
CryptoSwift~> 0.0
XMLDictionary~> 1.4
Regex~> 0.2
 

  • 作者:
  • xoyip

AzureStorageApiClient

AzureStorageApiClient 是微软 Azure 存储 Swift 的客户端库。该库仅支持 MS Azure 队列存储。

安装

API 列表

以下 API 支持我将继续实现其他 API。

Blob 服务 REST API

  • 列出容器
  • 设置 Blob 服务属性(仅更新 CORS)
  • 获取 Blob 服务属性
  • 预检测 Blob 请求
  • 获取 Blob 服务统计信息
  • 创建容器
  • 获取容器属性
  • 获取容器元数据
  • 设置容器元数据
  • 获取容器 ACL
  • 设置容器 ACL
  • 租用容器
  • 删除容器
  • 列出 Blob
  • 上传 Blob
  • 获取 Blob
  • 获取 Blob 属性
  • 设置 Blob 属性
  • 获取 Blob 元数据
  • 设置 Blob 元数据
  • 删除 Blob
  • 租用 Blob
  • 快照 Blob
  • 复制 Blob
  • 终止复制 Blob
  • 上传块
  • 上传块列表
  • 获取块列表
  • 上传页面
  • 获取页面范围
  • 附加块

队列服务 REST API

  • 设置队列服务属性
  • 获取队列服务属性
  • 列出队列
  • 预检测队列请求
  • 获取队列服务统计信息
  • 创建队列
  • 删除队列
  • 获取队列元数据
  • 设置队列元数据
  • 获取队列 ACL
  • 设置队列 ACL
  • 发送消息
  • 获取消息
  • 查看消息
  • 删除消息
  • 清空消息
  • 更新消息

用法

Blob 服务

import AzureStorageApiClient

class FooBar {
    private let client = AzureBlob.Client(accoutName: "account", useHTTPS: true, hostName: nil)
    func handleResponse<T>(response: Response<T>) {
        switch response {
        case .Success(let wrapper):
            println(wrapper.value)
        case .Failure(let wrapper):
            println(wrapper.value)
        }
    }

    // Lists all of the containers in a storage account.
    func listContainers() {
        let request = AzureBlob.ListContainersRequest()
        blobClient?.call(request, handler: handleResponse)
    }

    // Creates a new container in a storage account.
    func createContainer() {
        let request = AzureBlob.CreateContainerRequest(container: "containername")
        blobClient?.call(request, handler: handleResponse)
    }

    // Deletes the container and any blobs that it contains.
    func deleteContainer() {
        let request = AzureBlob.DeleteContainerRequest(container: "containername")
        blobClient?.call(request, handler: handleResponse)
    }

    // Creates a new blob or replaces an existing blob within a container.
    func putBlob() {
        if let url = NSURL(string: "https://avatars2.githubusercontent.com/u/3599510?v=3&s=10") {
            let data = NSData(contentsOfURL: url)!
            let request = AzureBlob.PutBlobRequest(container: "containername", name: "file.png", data: data, mimetype: "image/png")
            blobClient?.call(request, handler: handleResponse)
        }
    }

    // Reads or downloads a blob from the Blob service, including its user-defined metadata and system properties.
    func getBlob() {
        let request = AzureBlob.GetBlobRequest(container: "containername", name: "file.png", mimetype: "image/png")
        blobClient?.call(request, handler: handleResponse)
    }

    // Returns all system properties and user-defined metadata on the blob.
    func getBlobProperties() {
        let request = AzureBlob.GetBlobPropertiesRequest(container: "containername", name: "file.png")
        blobClient?.call(request, handler: handleResponse)
    }
}

队列服务

import AzureStorageApiClient

class FooBar {
    private let client = AzureQueue.Client(accoutName: "account", accessKey: "key", useHTTPS: true, hostName: nil)

    func handleResponse<T>(response: Response<T>) {
        switch response {
        case .Success(let wrapper):
            println(wrapper.value)
        case .Failure(let wrapper):
            println(wrapper.value)
        }
    }

    // lists all of the queues in a given storage account
    func listQueues() {
        let request = AzureStorage.ListQueuesRequest()
        client?.call(request, handler: handleResponse)
    }

    // creates a queue under the given account
    func createQueue() {
        let request = AzureStorage.CreateQueueRequest(queue: "queuename")
        client?.call(request, handler: handleResponse)
    }

    // permanently deletes the specified queue
    func deleteQueue() {
        let request = AzureStorage.DeleteQueueRequest(queue: "queuename")
        client?.call(request, handler: handleResponse)
    }

    // adds a new message to the back of the message queue
    func putMessage() {
        let request = AzureStorage.PutMessagesRequest(queue: "queuename", message: "a message", messageTTL: 3600, visibilityTimeout: 600)
        client?.call(request, handler: handleResponse)
    }

    // retrieves one or more messages from the front of the queue
    func getMessages() {
        let request = AzureStorage.GetMessagesRequest(queue: "queuename", visibilityTimeout: 600, numberOfMessages: 32)
        client?.call(request, handler: handleResponse)
    }

    // retrieves one or more messages from the front of the queue, but does not alter the visibility of the message
    func peekMessage() {
        let request = AzureStorage.PeekMessagesRequest(queue: "queuename", numberOfMessages: 32)
        client?.call(request, handler: handleResponse)
    }

    // deletes the specified message
    func deleteMessage() {
        let request = AzureStorage.DeleteMessageRequest(queue: "queuename", messageId: "message-id(UUID)", popReceipt: "pop-receipt")
        client?.call(request, handler: handleResponse)
    }

    // deletes all messages from the specified queue
    func clearMessage() {
        let request = AzureStorage.ClearMessagesRequest(queue: "queuename")
        client?.call(request, handler: handleResponse)
    }

    // updates the visibility timeout of a message, the contents of a message
    func updateMessage() {
        let request = AzureStorage.UpdateMessageRequest(queue: "queuename", message: "new message", messageId: "message-id(UUID)", popReceipt: "pop-receipt", visibilityTimeout: 3600)
        client?.call(request, handler: handleResponse)
    }
}

如何运行示例应用

  1. Example/AzureStorageApiClient_Example/Config.sample.swift 复制到 Example/AzureStorageApiClient_Example/Config.swift
  2. 编辑 Example/AzureStorageApiClient_Example/Config.swift 中的变量。 -> Microsoft Azure 门户
  3. 打开 Example/AzureStorageApiClient.xcworkspace 并运行应用。

依赖项

作者

Ohno Hiromasa

许可证

AzureStorageApiClient 以 MIT 许可证提供。有关更多信息,请参阅 LICENSE 文件。