A simplification wrapper for Swift Foundation's URLSession
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Externals
NaiveHTTP.xcodeproj
NaiveHTTP
NaiveHTTPTests
s
.gitignore
.gitmodules
LICENSE
README.md

README.md

NaiveHTTP

Work-in-progress at a focused NSURLSession simplification wrapper that is also my learning exercise for Protocol-Oriented Programming.

Installation

This is a framework, so you can either build it as such or include it as a submodule/subproject and link it to your binary in Build Phases.

Don't forget to git submodule update --init to download other dependencies.

Usage

import NaiveHTTP

let sessionConfig = NSURLSessionConfiguration.ephemeralSessionConfiguration()
let naive = NaiveHTTP(configuration: sessionConfig)

let query = ["key1":"value1", "key2":"value2"]
let customHeaders = ["X-Some-Header" : "Feh"]

naive.GET(
    "http://example.org/thing", 
    params: query,
    headers: customHeaders) { (data, response, error) -> Void in
        // Do stuff with the callback values
    }

Convenience functions, like jsonGET let you work with "pure JSON" endpoints.

Protocols

This project is taking on some shape with respect to use of Protocols, which has been helping with testing against fake network responses.

Tests

The main suite runs against http://httpbin.org but is configurable to run against your own local instance of it. Check the NAIVEHTTP_EXTERNAL_TEST_SERVER environment variable under the Test section in the NaiveHTTP scheme and set it to the appropriate value.

If you want to run your own local httpbin you can use Python and PIP:

pip install httpbin
python -m httpbin.core

You can read more info about running a local httpbin at https://github.com/Runscope/httpbin