Skip to content

Latest commit

 

History

History
85 lines (58 loc) · 2.1 KB

README.md

File metadata and controls

85 lines (58 loc) · 2.1 KB

Networking

iOS networking library written in Swift

Setup: How to add a Git repository to your Xcode project

Usage:

Globally, eg, at the top of AppDelegate.swift, do:

let api = API(baseURL: URL(string: "https://api.example.com"), credentials: "MyApp:Secret")

Let's define some local variables:

let email = "[email protected]"
let fields = ["name": "John Appleseed", "email": email]

To make a GET request:

let request = api.request("GET", "/users")

To make a form POST request:

let request = api.request("POST", "/users", fields)

If certain API paths require an access token, set it:

api.accessToken = "fb2e77d.47a0479900504cb3ab4a1f626d174d2d"

To make an authenticated request, which includes your access token in the Authorization request header field:

let request = api.request("GET", "/me", authenticated: true)

To send any of the requests above, use URLSession:

let dataTask = URLSession.shared.dataTask(with: request) { data, response, error in
  // Handle response
}

For help parsing a JSON response and converting an unsuccessful status code into an error, use API:

let dataTask = api.dataTask(with: request) { object, response, error in
  // Handle response
}

To make and send a multipart (file-upload) request:

let jpegData = UIImage(named: "JohnAppleseed.jpg")!.jpegData(compressionQuality: 0.75)
let request = api.request("POST", "/users", fields, jpegData)
let body = request.httpBody!
let dataTask = URLSession.shared.uploadTask(with: request, from: body) { data, response, error in
  // Handle response
}

Use HTTP instead of api for making one-off requests to resources with different base URLs.

See the Acani Chats iPhone Client for example usage.

See Networking.swift for other handy functions not mentioned here.

Released under the Unlicense.