Skip to content

acani/Networking

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

46 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

A simple iOS networking library written in Swift

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages