Fire 一个使用 Swift 书写的轻量级 iOS/macOS/watchOS/tvOS 平台 HTTP/HTTPS 网络框架

网友投稿 929 2022-11-05

Fire 一个使用 Swift 书写的轻量级 iOS/macOS/watchOS/tvOS 平台 HTTP/HTTPS 网络框架

Fire 一个使用 Swift 书写的轻量级 iOS/macOS/watchOS/tvOS 平台 HTTP/HTTPS 网络框架

English中文⽇本語

Introduction

What's this?

Fire is a delightful HTTP/HTTPS networking framework for iOS/macOS/watchOS/tvOS platform written in Swift and inspired by Python-Requests: HTTP for Humans.

Fire was written for humans to read, and incidentally, for machines to execute :)

Features

Chainable Request / Response Methods Upload File / Data / MultipartFormData HTTP Basic Authorization TLS Certificate and Public Key Pinning Comprehensive Unit and Integration Test Coverage Synchronously/Asynchronously Request Timeouts Custom Cache Policy form (x-www-form-encoded)/jsON HTTP body

Requirements

iOS 8.0+macOS 10.10+watchOS 2.0+tvOS 9.0+Xcode 8 with Swift 3

Dependency

Jsonify

Installation

CocoaPods

pod 'Fire'

Contribution

You are welcome to fork and submit pull requests.

License

Fire is open-sourced software, licensed under the MIT license.

Usage

To send a request with Fire, you need to do 3 steps.

First, build up a Fire object:

let f = Fire.build(HTTPMethod: .GET, url: "https://yourdomain.com/get?l=zh")

Then, config the Fire object:

f.setParams(["key": "value"])f.setFiles([file])f.setHTTPHeaders(["Accept": "application/json"])f.setBasicAuth("user", password: "pwd!@#")f.setHTTPBody(raw: Data)let certData = NSData(contentsOfFile: NSBundle.mainBundle().pathForResource("FireDemo", ofType: "cer")!)!f.setSSLPinning(localCertData: certData) { print("Warning: Under Man-in-the-middle attack!!")}f.onError({ (resp, error) -> Void in print("Error: Network offline!")})

Finally, fire up:

f.fire { (json, resp) -> Void in print(json["arg"]["key"].stringValue)}// orf.fireForJSON { (json, resp) -> Void in print(json["arg"]["key"].stringValue)}// orf.fireForString { (str, resp) -> Void in print(str)}// orf.fireForData { (data, resp) -> Void in print("Success")}

If you want to cancel it:

// cancel:f.onCancel { print("Canceled")}f.cancel()// or:f.cancel { print("Canceled")}

Use Fire.Dispatch if you want to send requests synchronously:

let f = Fire.build(HTTPMethod: .GET, url: api.stringValue, timeout: timeout, dispatch: .synchronously)

Fire.API:

open class func FireAPI1() { Fire.API.baseURL = FireDemo.BASEURL let api = Fire.API(appending: "get.php", HTTPMethod: .GET, successCode: .success) Fire.request(api: api, params: [:], timeout: 0, callback: { (json, resp) in if let status = resp?.statusCode { if status == api.successCode.rawValue { // ... } } }) { (error) in print(error.localizedDescription) }}open class func FireAPI2() { Fire.API.baseURL = FireDemo.BASEURL let api = Fire.API(appending: "get.php", HTTPMethod: .GET, successCode: .success) api.requestJSON(params: ["user": "Elias"], callback: { (json, resp) in if let status = resp?.statusCode { if status == api.successCode.rawValue { // ... } } }) { (error) in print(error.localizedDescription) }}open class func FireAPI3() { Fire.API.baseURL = FireDemo.BASEURL let api = Fire.API(appending: "get.php", HTTPMethod: .GET, headers: ["Content-Type": "text/json"], successCode: .success) api.requestJSON(params: ["userid": "1232"], headers: ["Device": "iOS"], timeout: 60, dispatch: .asynchronously, callback: { (json, resp) in if let status = resp?.statusCode { if status == api.successCode.rawValue { // ... } } }) { (error) in print(error.localizedDescription) }}

中文介绍

这是什么?

Fire 一个使用 Swift 书写的轻量级 iOS/macOS/watchOS/tvOS 平台 HTTP/HTTPS 网络框架,深受 Python-Requests: HTTP for Humans 启发。

Fire 为了更好的可读性而生,碰巧还可以运行 :)

特性

链式调用的请求和响应方法 上传文件和数据 支持 HTTP Basic 认证 支持 SSL Pinning 全面的单元和集成测试覆盖 同步/异步请求 超时 自定义缓存策略 支持 form (x-www-form-encoded)/JSON HTTP 请求体

环境

iOS 8.0+macOS 10.10+watchOS 2.0+tvOS 9.0+Xcode 8 及 Swift 3

依赖

Jsonify

安装

CocoaPods

pod 'Fire'

贡献

欢迎任何人提交代码和问题。

协议

Fire 是一个开源软体,遵循 MIT 协议。

使用

要使用 Fire 发送请求,你只需要三个步骤。

首先,构建一个 Fire 实例:

let f = Fire.build(HTTPMethod: .GET, url: "https://yourdomain.com/get?l=zh")

然后,进行一些配置:

f.setParams(["key": "value"])f.setFiles([file])f.setHTTPHeaders(["Accept": "application/json"])f.setBasicAuth("user", password: "pwd!@#")f.setHTTPBody(raw: Data)let certData = NSData(contentsOfFile: NSBundle.mainBundle().pathForResource("FireDemo", ofType: "cer")!)!f.setSSLPinning(localCertData: certData) { print("Warning: Under Man-in-the-middle attack!!")}f.onError({ (resp, error) -> Void in print("Error: Network offline!")})

最后,发起请求:

f.fire { (json, resp) -> Void in print(json["arg"]["key"].stringValue)}// orf.fireForJSON { (json, resp) -> Void in print(json["arg"]["key"].stringValue)}// orf.fireForString { (str, resp) -> Void in print(str)}// orf.fireForData { (data, resp) -> Void in print("Success")}

如果你需要取消请求:

// cancel:f.onCancel { print("Canceled")}f.cancel()// or:f.cancel { print("Canceled")}

如果你想发送同步请求, 请使用 Fire.Dispatch:

let f = Fire.build(HTTPMethod: .GET, url: api.stringValue, timeout: timeout, dispatch: .synchronously)

Fire.API:

open class func FireAPI1() { Fire.API.baseURL = FireDemo.BASEURL let api = Fire.API(appending: "get.php", HTTPMethod: .GET, successCode: .success) Fire.request(api: api, params: [:], timeout: 0, callback: { (json, resp) in if let status = resp?.statusCode { if status == api.successCode.rawValue { // ... } } }) { (error) in print(error.localizedDescription) }}open class func FireAPI2() { Fire.API.baseURL = FireDemo.BASEURL let api = Fire.API(appending: "get.php", HTTPMethod: .GET, successCode: .success) api.requestJSON(params: ["user": "Elias"], callback: { (json, resp) in if let status = resp?.statusCode { if status == api.successCode.rawValue { // ... } } }) { (error) in print(error.localizedDescription) }}open class func FireAPI3() { Fire.API.baseURL = FireDemo.BASEURL let api = Fire.API(appending: "get.php", HTTPMethod: .GET, headers: ["Content-Type": "text/json"], successCode: .success) api.requestJSON(params: ["userid": "1232"], headers: ["Device": "iOS"], timeout: 60, dispatch: .asynchronously, callback: { (json, resp) in if let status = resp?.statusCode { if status == api.successCode.rawValue { // ... } } }) { (error) in print(error.localizedDescription) }}

⽇本語

Fire とは何か?

Fire とは Swift で作られる iOS/macOS/watchOS/tvOSiプラットホーム HTTP/HTTPS の軽量なデータのインタネットフレームワーク(Internet-Framework)、Python-Requests:HTTP for Humans に深い影響を与えられた。

人を理解やすくなるために、作られました。たまたまにプログラムを実行できる。

フィーチャー(Features)

連鎖されるリクエストとレスポンス のメソッド Upload file/data 可能 HTTP Basic 認証をサポートしている SSL Pinning をサポートしている 全局と局部的なテスト可能 同期通信/非同期通信 タイムアウト URLCachePolicy form (x-www-form-encoded)/JSON HTTP 制式をサポートしている

開発環境/動作環境

iOS 8.0 以上macOS 10.10 以上watchOS 2.0 以上tvOS 9.0 以上Xcode 8 / Swift 3 以上

インストール

CocoaPods

CocoaPods でライブラリをインストールします。

Podfile:

pod 'Fire'

プロジェクトのディレクトリ内で以下を実行 pod install

ライセンス

関連するリポジトリ含め、すべてMITです。詳細は各リポジトリ内のLICENSEをご覧ください。

貢献ガイド、サポート情報、ご留意事項

@渋谷の猫

(※準備中です)

開発/ビルド方法/使用方法

Fire.build

let f = Fire.build(HTTPMethod: .GET, url: "https://yourdomain.com/get?l=zh")

set.../add...

f.setParams(["key": "value"])f.setFiles([file])f.setHTTPHeaders(["Accept": "application/json"])f.setBasicAuth("user", password: "pwd!@#")f.setHTTPBody(raw: Data)let certData = NSData(contentsOfFile: NSBundle.mainBundle().pathForResource("FireDemo", ofType: "cer")!)!f.setSSLPinning(localCertData: certData) { print("Warning: Under Man-in-the-middle attack!!")}f.onError({ (resp, error) -> Void in print("Error: Network offline!")})

fire { (...) in }

f.fire { (json, resp) -> Void in print(json["arg"]["key"].stringValue)}// orf.fireForJSON { (json, resp) -> Void in print(json["arg"]["key"].stringValue)}// orf.fireForString { (str, resp) -> Void in print(str)}// orf.fireForData { (data, resp) -> Void in print("Success")}

// cancel:f.onCancel { print("Canceled")}f.cancel()// or:f.cancel { print("Canceled")}

Fire.Dispatch:

let f = Fire.build(HTTPMethod: .GET, url: api.stringValue, timeout: timeout, dispatch: .synchronously)

Fire.API:

open class func FireAPI1() { Fire.API.baseURL = FireDemo.BASEURL let api = Fire.API(appending: "get.php", HTTPMethod: .GET, successCode: .success) Fire.request(api: api, params: [:], timeout: 0, callback: { (json, resp) in if let status = resp?.statusCode { if status == api.successCode.rawValue { // ... } } }) { (error) in print(error.localizedDescription) }}open class func FireAPI2() { Fire.API.baseURL = FireDemo.BASEURL let api = Fire.API(appending: "get.php", HTTPMethod: .GET, successCode: .success) api.requestJSON(params: ["user": "Elias"], callback: { (json, resp) in if let status = resp?.statusCode { if status == api.successCode.rawValue { // ... } } }) { (error) in print(error.localizedDescription) }}open class func FireAPI3() { Fire.API.baseURL = FireDemo.BASEURL let api = Fire.API(appending: "get.php", HTTPMethod: .GET, headers: ["Content-Type": "text/json"], successCode: .success) api.requestJSON(params: ["userid": "1232"], headers: ["Device": "iOS"], timeout: 60, dispatch: .asynchronously, callback: { (json, resp) in if let status = resp?.statusCode { if status == api.successCode.rawValue { // ... } } }) { (error) in print(error.localizedDescription) }}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Slither 一个Solidity静态分析框架,提供了一个API来轻松操作Solidity代码
下一篇:YUDBModel- 对象序列化、反序列化、一键增删改查插件
相关文章

 发表评论

暂时没有评论,来抢沙发吧~