master a2c4f5f645de cached
31 files
127.7 KB
35.5k tokens
1 symbols
1 requests
Download .txt
Repository: rhodgkins/SwiftHTTPStatusCodes
Branch: master
Commit: a2c4f5f645de
Files: 31
Total size: 127.7 KB

Directory structure:
gitextract_wa78b5hf/

├── .gitignore
├── .travis.yml
├── HTTPStatusCodes.podspec
├── LICENSE
├── Package.swift
├── README.md
├── Sources/
│   ├── HTTPStatusCodes+Extensions.swift
│   └── HTTPStatusCodes.swift
└── Tests/
    ├── .gitignore
    ├── Cartfile
    ├── Generator.playground/
    │   ├── Contents.swift
    │   ├── Sources/
    │   │   ├── Case.swift
    │   │   └── StaticTexts.swift
    │   └── contents.xcplayground
    ├── HTTPStatusCodes/
    │   ├── Deprecated.h
    │   ├── Deprecated.m
    │   ├── HTTPStatusCodes.h
    │   └── SupportingFiles/
    │       ├── Info-OSX.plist
    │       ├── Info-iOS.plist
    │       ├── Info-tvOS.plist
    │       └── Info-watchOS.plist
    ├── HTTPStatusCodes.xcconfig
    ├── HTTPStatusCodes.xcodeproj/
    │   ├── project.pbxproj
    │   ├── project.xcworkspace/
    │   │   ├── contents.xcworkspacedata
    │   │   └── xcshareddata/
    │   │       └── IDEWorkspaceChecks.plist
    │   └── xcshareddata/
    │       └── xcschemes/
    │           └── HTTPStatusCodes.xcscheme
    └── HTTPStatusCodesTests/
        ├── HTTPStatusCodesTests.swift
        ├── Info.plist
        ├── ObjectiveCRegressionTests.m
        ├── ObjectiveCTests.m
        └── RegressionTests.swift

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitignore
================================================
# Xcode
#
build/
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
*.xccheckout
*.moved-aside
DerivedData
*.hmap
*.ipa
*.xcuserstate

## Playgrounds
timeline.xctimeline
playground.xcworkspace

# Swift Package Manager
#
# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies.
# Packages/
.build/



================================================
FILE: .travis.yml
================================================
language: objective-c
osx_image: xcode10.2
script:
    - xcodebuild -project Tests/HTTPStatusCodes.xcodeproj -scheme HTTPStatusCodes clean build test
    - xcodebuild -project Tests/HTTPStatusCodes.xcodeproj -scheme HTTPStatusCodes -destination "platform=iOS Simulator,name=iPhone X" clean build test
    - xcodebuild -project Tests/HTTPStatusCodes.xcodeproj -scheme HTTPStatusCodes -destination "platform=tvOS Simulator,name=Apple TV 4K" clean build test


================================================
FILE: HTTPStatusCodes.podspec
================================================
Pod::Spec.new do |s|
  s.name = 'HTTPStatusCodes'
  s.version = '3.3.2'
  s.license = 'MIT'
  s.summary = 'Swift enum wrapper for easier handling of HTTP status codes'
  s.homepage = 'https://github.com/rhodgkins/SwiftHTTPStatusCodes'
  s.social_media_url = 'http://twitter.com/rhodgkins'
  s.authors = 'Rich Hodgkins'
  s.source = { :git => 'https://github.com/rhodgkins/SwiftHTTPStatusCodes.git', :tag => s.version }
  
  s.swift_versions = ['4.0', '4.2', '5.0']
  
  s.ios.deployment_target = '8.0'
  s.osx.deployment_target = '10.9'
  s.watchos.deployment_target = '2.0'
  s.tvos.deployment_target = '9.0'

  s.frameworks = 'Foundation'
  s.source_files = 'Sources/*'

  s.requires_arc = true
end


================================================
FILE: LICENSE
================================================
The MIT License (MIT)

Copyright (c) 2017 Rich Hodgkins

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.



================================================
FILE: Package.swift
================================================
// swift-tools-version:4.0
//
//  Created by Richard Hodgkins on 07/06/2016.
//  Copyright (c) 2016 Richard Hodgkins. All rights reserved.
//

import PackageDescription

let package = Package(
    name: "HTTPStatusCodes",
    products: [
        .library(name: "HTTPStatusCodes", targets: ["HTTPStatusCodes"])
    ],
    targets: [
        .target(
            name: "HTTPStatusCodes",
            path: "Sources"
        ),
        .testTarget(
            name: "HTTPStatusCodesTests",
            dependencies: ["HTTPStatusCodes"],
            path: "Tests/HTTPStatusCodesTests",
            sources: [
                "HTTPStatusCodesTests.swift",
                "RegressionTests.swift"
            ]
        )
    ]
)


================================================
FILE: README.md
================================================
# SwiftHTTPStatusCodes
[![Build Status](https://travis-ci.org/rhodgkins/SwiftHTTPStatusCodes.svg?branch=master)](https://travis-ci.org/rhodgkins/SwiftHTTPStatusCodes)
[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage)
[![Pod Version](http://img.shields.io/cocoapods/v/HTTPStatusCodes.svg)](http://cocoadocs.org/docsets/HTTPStatusCodes/)
[![Pod Platform](http://img.shields.io/cocoapods/p/HTTPStatusCodes.svg)](http://cocoadocs.org/docsets/HTTPStatusCodes/)
[![Pod License](http://img.shields.io/cocoapods/l/HTTPStatusCodes.svg)](http://opensource.org/licenses/MIT)

Swift enum wrapper for easier handling of HTTP status codes. 

The purpose of this library is to improve to clarify of code and remove the need for checking of status codes as numbers (`==200`), or as a range of values (`== 2xx`) - instead replacing it with descriptive enums.

All the [RF2616](http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml) standard status codes are supported with a few added ones from the [Wikipedia page](http://en.wikipedia.org/wiki/List_of_HTTP_status_codes).

As of version 3.0.0 of this framework, the list of status codes are directly generated from a [online IANA CSV](http://www.iana.org/assignments/http-status-codes/http-status-codes-1.csv). The [HTML page](http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml) has a last updated field, and this is also mirrored in the header comments to identify which version this framework is currently using.<br/>
If this library is out of date compared to this page please open an issue and I will update the list.

## Usage

### Swift versions support

* Swift 5.1 - use version 3.3.2
* Swift 5 - use version 3.3.1
* Swift 4 - use version 3.3.0
* Swift 3 - use version 3.1
* Older versions - use version 3.0

### Swift Package Manager

Add this package to the dependencies in your `Package.swift` file:

```swift
.package(url: "https://github.com/rhodgkins/SwiftHTTPStatusCodes.git", .upToNextMajor(from: "3.0.0"))
```

### Carthage

`Cartfile`:
```ogdl
github "rhodgkins/SwiftHTTPStatusCodes" ~> 3.3
```
Source code:
```swift
import HTTPStatusCodes
```

### CocoaPods
`Podfile`:
```ruby
pod 'HTTPStatusCodes', '~> 3.3.0'
```
Source code:

```swift
import HTTPStatusCodes
```

### Manually
Or drop in the Swift files inside the [`Sources folder`](https://github.com/rhodgkins/SwiftHTTPStatusCodes/tree/master/Sources) into your project.

## Helper methods

There are `Bool` properties on the enum for checking if a status code is of a certain category:
```swift
isInformational
isSuccess
isRedirection
isClientError
isServerError
```

There is also an extension on `HTTPURLResponse` to obtain a status code enum directly and to `init` with one:
```swift
var statusCodeValue: HTTPStatusCode?
init?(url: URL, statusCode: HTTPStatusCode, httpVersion: String?, headerFields: [String : String]?)
```


================================================
FILE: Sources/HTTPStatusCodes+Extensions.swift
================================================
//
//  HTTPStatusCodes+Extensions.swift
//  HTTPStatusCodes
//
//  Created by Richard Hodgkins on 07/06/2016.
//  Copyright © 2016 Rich H. All rights reserved.
//

import Foundation

public extension HTTPStatusCode {
    /// Informational - Request received, continuing process.
    var isInformational: Bool {
        return isIn(range: 100...199)
    }
    /// Success - The action was successfully received, understood, and accepted.
    var isSuccess: Bool {
        return isIn(range: 200...299)
    }
    /// Redirection - Further action must be taken in order to complete the request.
    var isRedirection: Bool {
        return isIn(range: 300...399)
    }
    /// Client Error - The request contains bad syntax or cannot be fulfilled.
    var isClientError: Bool {
        return isIn(range: 400...499)
    }
    /// Server Error - The server failed to fulfill an apparently valid request.
    var isServerError: Bool {
        return isIn(range: 500...599)
    }
    
    /// - returns: `true` if the status code is in the provided range, false otherwise.
    private func isIn(range: ClosedRange<HTTPStatusCode.RawValue>) -> Bool {
        return range.contains(rawValue)
    }
}

public extension HTTPStatusCode {
    /// - returns: a localized string suitable for displaying to users that describes the specified status code.
    var localizedReasonPhrase: String {
        return HTTPURLResponse.localizedString(forStatusCode: rawValue)
    }
}

// MARK: - Printing

extension HTTPStatusCode: CustomDebugStringConvertible, CustomStringConvertible {
    public var description: String {
        return "\(rawValue) - \(localizedReasonPhrase)"
    }
    public var debugDescription: String {
        return "HTTPStatusCode:\(description)"
    }
}

// MARK: - HTTP URL Response

public extension HTTPStatusCode {
    
    /// Obtains a possible status code from an optional HTTP URL response.
    init?(HTTPResponse: HTTPURLResponse?) {
        guard let statusCodeValue = HTTPResponse?.statusCode else {
            return nil
        }
        self.init(statusCodeValue)
    }

    /// This is declared as it's not automatically picked up by the complier for the above init
    private init?(_ rawValue: Int) {
        guard let value = HTTPStatusCode(rawValue: rawValue) else {
            return nil
        }
        self = value
    }
}

public extension HTTPURLResponse {
    
    /**
     * Marked internal to expose (as `statusCodeValue`) for Objective-C interoperability only.
     *
     * - returns: the receiver’s HTTP status code.
     */
    @objc(statusCodeValue) var statusCodeEnum: HTTPStatusCode {
        return HTTPStatusCode(HTTPResponse: self)!
    }
    
    /// - returns: the receiver’s HTTP status code.
    var statusCodeValue: HTTPStatusCode? {
        return HTTPStatusCode(HTTPResponse: self)
    }
    
    /**
     * Initializer for NSHTTPURLResponse objects.
     *
     * - parameter url: the URL from which the response was generated.
     * - parameter statusCode: an HTTP status code.
     * - parameter HTTPVersion: the version of the HTTP response as represented by the server.  This is typically represented as "HTTP/1.1".
     * - parameter headerFields: a dictionary representing the header keys and values of the server response.
     *
     * - returns: the instance of the object, or `nil` if an error occurred during initialization.
     */
    @available(iOS, introduced: 7.0)
    @objc(initWithURL:statusCodeValue:HTTPVersion:headerFields:)
    convenience init?(url: URL, statusCode: HTTPStatusCode, httpVersion: String?, headerFields: [String : String]?) {
        self.init(url: url, statusCode: statusCode.rawValue, httpVersion: httpVersion, headerFields: headerFields)
    }
}

// MARK: - Deprecated cases

public extension HTTPStatusCode {
    
    /// - deprecated: Renamed to `payloadTooLarge`
    @available(*, deprecated, renamed: "payloadTooLarge")
    static let requestEntityTooLarge = payloadTooLarge
    
    /// - deprecated: Renamed to `uriTooLong`
    @available(*, deprecated, renamed: "uriTooLong")
    static let requestURITooLong = uriTooLong
    
    /// - deprecated: Renamed to `rangeNotSatisfiable`
    @available(*, deprecated, renamed: "rangeNotSatisfiable")
    static let requestedRangeNotSatisfiable = rangeNotSatisfiable
    
    /// - deprecated: Renamed to `iisLoginTimeout`
    @available(*, deprecated, renamed: "iisLoginTimeout")
    static let loginTimeout = iisLoginTimeout
    
    /// - deprecated: Renamed to `iisRetryWith`
    @available(*, deprecated, renamed: "iisRetryWith")
    static let retryWith = iisRetryWith
    
    /// - deprecated: Renamed to `nginxNoResponse`
    @available(*, deprecated, renamed: "nginxNoResponse")
    static let noResponse = nginxNoResponse
    
    /// - deprecated: Renamed to `nginxSSLCertificateError`
    @available(*, deprecated, renamed: "nginxSSLCertificateError")
    static let certError = nginxSSLCertificateError
    
    /// - deprecated: Renamed to `nginxSSLCertificateRequired`
    @available(*, deprecated, renamed: "nginxSSLCertificateRequired")
    static let noCert = nginxSSLCertificateRequired
    
    /// - deprecated: Renamed to `nginxHTTPToHTTPS`
    @available(*, deprecated, renamed: "nginxHTTPToHTTPS")
    static let httpToHTTPS = nginxHTTPToHTTPS
    
    /// - deprecated: Renamed to `nginxClientClosedRequest`
    @available(*, deprecated, renamed: "nginxClientClosedRequest")
    static let clientClosedRequest = nginxClientClosedRequest
    
    /// - deprecated: Renamed to `networkConnectTimeoutError`
    @available(*, deprecated, renamed: "networkConnectTimeoutError")
    static let networkTimeoutError = networkConnectTimeoutError
    
    /// Returned by version 1 of the Twitter Search and Trends API when the client is being rate limited; versions 1.1 and later use the 429 Too Many Requests (`tooManyRequests`) response code instead.
    ///
    /// - seealso: [Twitter Error Codes & Responses](https://dev.twitter.com/docs/error-codes-responses)
    @available(*, deprecated, renamed: "tooManyRequests")
    static let twitterEnhanceYourCalm = tooManyRequests
}

public extension HTTPURLResponse {
    
    /// - deprecated: Renamed to `init(url:statusCode:httpVersion:headerFields)` to correct Swift 3 naming convention.
    @available(*, deprecated, renamed: "init(url:statusCode:httpVersion:headerFields:)", message: "Renamed to correct Swift 3 naming convention")
    @nonobjc
    convenience init?(url: URL, statusCode: HTTPStatusCode, HTTPVersion: String?, headerFields: [String : String]?) {
        self.init(url: url, statusCode: statusCode, httpVersion: HTTPVersion, headerFields: headerFields)
    }
}

// MARK: - Remove cases

/// Declared here for a cleaner API with no `!` types.
private let __Unavailable: HTTPStatusCode! = nil

public extension HTTPStatusCode {
    
    /// Checkpoint: 103
    ///
    /// Used in the resumable requests proposal to resume aborted PUT or POST requests.
    ///
    /// - seealso: [Original proposal](https://web.archive.org/web/20151013212135/http://code.google.com/p/gears/wiki/ResumableHttpRequestsProposal)
    @available(*, unavailable, renamed: "earlyHints", message: "Replaced by RFC standard code with different meaning")
    static let checkpoint = __Unavailable
    
    /// Switch Proxy: 306
    ///
    /// No longer used. Originally meant "Subsequent requests should use the specified proxy."
    ///
    /// - seealso: [Original draft](https://tools.ietf.org/html/draft-cohen-http-305-306-responses-00)
    @available(*, unavailable, message: "No longer used")
    static let switchProxy = __Unavailable
    
    /// Authentication Timeout: 419
    ///
    /// Removed from Wikipedia page.
    @available(*, unavailable, message: "No longer available")
    static let authenticationTimeout = __Unavailable
    
    /// Method Failure: 419
    ///
    /// A deprecated response used by the Spring Framework when a method has failed.
    ///
    /// - seealso: [Spring Framework: HttpStatus enum documentation - `METHOD_FAILURE`](https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/http/HttpStatus.html#METHOD_FAILURE)
    @available(*, unavailable, message: "Deprecated")
    static let springFrameworkMethodFailure = __Unavailable
    
    /// Request Header Too Large: 494
    ///
    /// Removed and replaced with `RequestHeaderFieldsTooLarge` - 431
    @available(*, unavailable, renamed: "requestHeaderFieldsTooLarge", message: "Changed to a 431 status code")
    static let requestHeaderTooLarge = __Unavailable
}


================================================
FILE: Sources/HTTPStatusCodes.swift
================================================
//
// HTTPStatusCodes.swift
//
// Generated by Richard Hodgkins on 21/02/2019.
// Copyright (c) 2019 Richard Hodgkins. All rights reserved.
//

import Foundation

/// HTTP status codes as per the [IANA HTTP status code registry](http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml).
///
/// Last updated: Fri, 21 Sep 2018 16:10:10 GMT
///
/// - seealso: [Wikipedia page - List of HTTP status codes](http://en.wikipedia.org/wiki/List_of_HTTP_status_codes)
/// - seealso: [HTTP protocol standard - Status Code Definitions](https://tools.ietf.org/html/rfc2616#section-10)
@objc public enum HTTPStatusCode: Int {
    
    /// Continue: 100
    ///
    /// - seealso: [RFC7231, Section 6.2.1](http://www.iana.org/go/rfc7231#section-6.2.1)
    case `continue` = 100
    
    /// Switching Protocols: 101
    ///
    /// - seealso: [RFC7231, Section 6.2.2](http://www.iana.org/go/rfc7231#section-6.2.2)
    case switchingProtocols = 101
    
    /// Processing: 102
    ///
    /// - seealso: [RFC2518](http://www.iana.org/go/rfc2518)
    case processing = 102
    
    /// Early Hints: 103
    ///
    /// - seealso: [RFC8297](http://www.iana.org/go/rfc8297)
    case earlyHints = 103
    
    /// OK: 200
    ///
    /// - seealso: [RFC7231, Section 6.3.1](http://www.iana.org/go/rfc7231#section-6.3.1)
    @objc(HTTPStatusCodeOK)
    case ok = 200
    
    /// Created: 201
    ///
    /// - seealso: [RFC7231, Section 6.3.2](http://www.iana.org/go/rfc7231#section-6.3.2)
    case created = 201
    
    /// Accepted: 202
    ///
    /// - seealso: [RFC7231, Section 6.3.3](http://www.iana.org/go/rfc7231#section-6.3.3)
    case accepted = 202
    
    /// Non-Authoritative Information: 203
    ///
    /// - seealso: [RFC7231, Section 6.3.4](http://www.iana.org/go/rfc7231#section-6.3.4)
    case nonAuthoritativeInformation = 203
    
    /// No Content: 204
    ///
    /// - seealso: [RFC7231, Section 6.3.5](http://www.iana.org/go/rfc7231#section-6.3.5)
    case noContent = 204
    
    /// Reset Content: 205
    ///
    /// - seealso: [RFC7231, Section 6.3.6](http://www.iana.org/go/rfc7231#section-6.3.6)
    case resetContent = 205
    
    /// Partial Content: 206
    ///
    /// - seealso: [RFC7233, Section 4.1](http://www.iana.org/go/rfc7233#section-4.1)
    case partialContent = 206
    
    /// Multi-Status: 207
    ///
    /// - seealso: [RFC4918](http://www.iana.org/go/rfc4918)
    case multiStatus = 207
    
    /// Already Reported: 208
    ///
    /// - seealso: [RFC5842](http://www.iana.org/go/rfc5842)
    case alreadyReported = 208
    
    /// IM Used: 226
    ///
    /// - seealso: [RFC3229](http://www.iana.org/go/rfc3229)
    @objc(HTTPStatusCodeIMUsed)
    case imUsed = 226
    
    /// Multiple Choices: 300
    ///
    /// - seealso: [RFC7231, Section 6.4.1](http://www.iana.org/go/rfc7231#section-6.4.1)
    case multipleChoices = 300
    
    /// Moved Permanently: 301
    ///
    /// - seealso: [RFC7231, Section 6.4.2](http://www.iana.org/go/rfc7231#section-6.4.2)
    case movedPermanently = 301
    
    /// Found: 302
    ///
    /// - seealso: [RFC7231, Section 6.4.3](http://www.iana.org/go/rfc7231#section-6.4.3)
    case found = 302
    
    /// See Other: 303
    ///
    /// - seealso: [RFC7231, Section 6.4.4](http://www.iana.org/go/rfc7231#section-6.4.4)
    case seeOther = 303
    
    /// Not Modified: 304
    ///
    /// - seealso: [RFC7232, Section 4.1](http://www.iana.org/go/rfc7232#section-4.1)
    case notModified = 304
    
    /// Use Proxy: 305
    ///
    /// - seealso: [RFC7231, Section 6.4.5](http://www.iana.org/go/rfc7231#section-6.4.5)
    case useProxy = 305
    
    /// Temporary Redirect: 307
    ///
    /// - seealso: [RFC7231, Section 6.4.7](http://www.iana.org/go/rfc7231#section-6.4.7)
    case temporaryRedirect = 307
    
    /// Permanent Redirect: 308
    ///
    /// - seealso: [RFC7538](http://www.iana.org/go/rfc7538)
    case permanentRedirect = 308
    
    /// Bad Request: 400
    ///
    /// - seealso: [RFC7231, Section 6.5.1](http://www.iana.org/go/rfc7231#section-6.5.1)
    case badRequest = 400
    
    /// Unauthorized: 401
    ///
    /// - seealso: [RFC7235, Section 3.1](http://www.iana.org/go/rfc7235#section-3.1)
    case unauthorized = 401
    
    /// Payment Required: 402
    ///
    /// - seealso: [RFC7231, Section 6.5.2](http://www.iana.org/go/rfc7231#section-6.5.2)
    case paymentRequired = 402
    
    /// Forbidden: 403
    ///
    /// - seealso: [RFC7231, Section 6.5.3](http://www.iana.org/go/rfc7231#section-6.5.3)
    case forbidden = 403
    
    /// Not Found: 404
    ///
    /// - seealso: [RFC7231, Section 6.5.4](http://www.iana.org/go/rfc7231#section-6.5.4)
    case notFound = 404
    
    /// Method Not Allowed: 405
    ///
    /// - seealso: [RFC7231, Section 6.5.5](http://www.iana.org/go/rfc7231#section-6.5.5)
    case methodNotAllowed = 405
    
    /// Not Acceptable: 406
    ///
    /// - seealso: [RFC7231, Section 6.5.6](http://www.iana.org/go/rfc7231#section-6.5.6)
    case notAcceptable = 406
    
    /// Proxy Authentication Required: 407
    ///
    /// - seealso: [RFC7235, Section 3.2](http://www.iana.org/go/rfc7235#section-3.2)
    case proxyAuthenticationRequired = 407
    
    /// Request Timeout: 408
    ///
    /// - seealso: [RFC7231, Section 6.5.7](http://www.iana.org/go/rfc7231#section-6.5.7)
    case requestTimeout = 408
    
    /// Conflict: 409
    ///
    /// - seealso: [RFC7231, Section 6.5.8](http://www.iana.org/go/rfc7231#section-6.5.8)
    case conflict = 409
    
    /// Gone: 410
    ///
    /// - seealso: [RFC7231, Section 6.5.9](http://www.iana.org/go/rfc7231#section-6.5.9)
    case gone = 410
    
    /// Length Required: 411
    ///
    /// - seealso: [RFC7231, Section 6.5.10](http://www.iana.org/go/rfc7231#section-6.5.10)
    case lengthRequired = 411
    
    /// Precondition Failed: 412
    ///
    /// - seealso: [RFC7232, Section 4.2](http://www.iana.org/go/rfc7232#section-4.2)
    /// - seealso: [RFC8144, Section 3.2](http://www.iana.org/go/rfc8144#section-3.2)
    case preconditionFailed = 412
    
    /// Payload Too Large: 413
    ///
    /// - seealso: [RFC7231, Section 6.5.11](http://www.iana.org/go/rfc7231#section-6.5.11)
    case payloadTooLarge = 413
    
    /// URI Too Long: 414
    ///
    /// - seealso: [RFC7231, Section 6.5.12](http://www.iana.org/go/rfc7231#section-6.5.12)
    @objc(HTTPStatusCodeURITooLong)
    case uriTooLong = 414
    
    /// Unsupported Media Type: 415
    ///
    /// - seealso: [RFC7231, Section 6.5.13](http://www.iana.org/go/rfc7231#section-6.5.13)
    /// - seealso: [RFC7694, Section 3](http://www.iana.org/go/rfc7694#section-3)
    case unsupportedMediaType = 415
    
    /// Range Not Satisfiable: 416
    ///
    /// - seealso: [RFC7233, Section 4.4](http://www.iana.org/go/rfc7233#section-4.4)
    case rangeNotSatisfiable = 416
    
    /// Expectation Failed: 417
    ///
    /// - seealso: [RFC7231, Section 6.5.14](http://www.iana.org/go/rfc7231#section-6.5.14)
    case expectationFailed = 417
    
    /// I'm A Teapot: 418
    ///
    /// Returned by tea pots requested to brew coffee
    ///
    /// - seealso: [RFC 2324](http://www.iana.org/go/rfc2324)
    case imATeapot = 418
    
    /// Misdirected Request: 421
    ///
    /// - seealso: [RFC7540, Section 9.1.2](http://www.iana.org/go/rfc7540#section-9.1.2)
    case misdirectedRequest = 421
    
    /// Unprocessable Entity: 422
    ///
    /// - seealso: [RFC4918](http://www.iana.org/go/rfc4918)
    case unprocessableEntity = 422
    
    /// Locked: 423
    ///
    /// - seealso: [RFC4918](http://www.iana.org/go/rfc4918)
    case locked = 423
    
    /// Failed Dependency: 424
    ///
    /// - seealso: [RFC4918](http://www.iana.org/go/rfc4918)
    case failedDependency = 424
    
    /// Too Early: 425
    ///
    /// - seealso: [RFC8470](http://www.iana.org/go/rfc8470)
    case tooEarly = 425
    
    /// Upgrade Required: 426
    ///
    /// - seealso: [RFC7231, Section 6.5.15](http://www.iana.org/go/rfc7231#section-6.5.15)
    case upgradeRequired = 426
    
    /// Precondition Required: 428
    ///
    /// - seealso: [RFC6585](http://www.iana.org/go/rfc6585)
    case preconditionRequired = 428
    
    /// Too Many Requests: 429
    ///
    /// - seealso: [RFC6585](http://www.iana.org/go/rfc6585)
    case tooManyRequests = 429
    
    /// Request Header Fields Too Large: 431
    ///
    /// - seealso: [RFC6585](http://www.iana.org/go/rfc6585)
    case requestHeaderFieldsTooLarge = 431
    
    /// IIS Login Timeout: 440
    ///
    /// The client's session has expired and must log in again.
    ///
    /// **Category**: Internet Information Services
    ///
    /// - seealso: [Error message when you try to log on to Exchange 2007 by using Outlook Web Access: "440 Login Timeout"](http://support.microsoft.com/kb/941201/en-us)
    @objc(HTTPStatusCodeIISLoginTimeout)
    case iisLoginTimeout = 440
    
    /// nginx No Response: 444
    ///
    /// Used to indicate that the server has returned no information to the client and closed the connection.
    ///
    /// **Category**: nginx
    case nginxNoResponse = 444
    
    /// IIS Retry With: 449
    ///
    /// The server cannot honour the request because the user has not provided the required information.
    ///
    /// **Category**: Internet Information Services
    ///
    /// - seealso: [2.2.6 449 Retry With Status Code](https://msdn.microsoft.com/en-us/library/dd891478.aspx)
    @objc(HTTPStatusCodeIISRetryWith)
    case iisRetryWith = 449
    
    /// Blocked by Windows Parental Controls: 450
    ///
    /// A Microsoft extension. This error is given when Windows Parental Controls are turned on and are blocking access to the given webpage.
    case blockedByWindowsParentalControls = 450
    
    /// Unavailable For Legal Reasons: 451
    ///
    /// - seealso: [RFC7725](http://www.iana.org/go/rfc7725)
    case unavailableForLegalReasons = 451
    
    /// nginx SSL Certificate Error: 495
    ///
    /// An expansion of the 400 Bad Request response code, used when the client has provided an invalid client certificate.
    ///
    /// **Category**: nginx
    case nginxSSLCertificateError = 495
    
    /// nginx SSL Certificate Required: 496
    ///
    /// An expansion of the 400 Bad Request response code, used when a client certificate is required but not provided.
    ///
    /// **Category**: nginx
    case nginxSSLCertificateRequired = 496
    
    /// nginx HTTP To HTTPS: 497
    ///
    /// An expansion of the 400 Bad Request response code, used when the client has made a HTTP request to a port listening for HTTPS requests.
    ///
    /// **Category**: nginx
    case nginxHTTPToHTTPS = 497
    
    /// Token Expired: 498
    ///
    /// Returned by [ArcGIS for Server](https://en.wikipedia.org/wiki/ArcGIS_Server). A code of 498 indicates an expired or otherwise invalid token.
    ///
    /// - seealso: [Using token-based authentication](http://help.arcgis.com/en/arcgisserver/10.0/apis/soap/index.htm#Using_token_authentication.htm)
    case tokenExpired = 498
    
    /// nginx Client Closed Request: 499
    ///
    /// Used when the client has closed the request before the server could send a response.
    ///
    /// **Category**: nginx
    case nginxClientClosedRequest = 499
    
    /// Internal Server Error: 500
    ///
    /// - seealso: [RFC7231, Section 6.6.1](http://www.iana.org/go/rfc7231#section-6.6.1)
    case internalServerError = 500
    
    /// Not Implemented: 501
    ///
    /// - seealso: [RFC7231, Section 6.6.2](http://www.iana.org/go/rfc7231#section-6.6.2)
    case notImplemented = 501
    
    /// Bad Gateway: 502
    ///
    /// - seealso: [RFC7231, Section 6.6.3](http://www.iana.org/go/rfc7231#section-6.6.3)
    case badGateway = 502
    
    /// Service Unavailable: 503
    ///
    /// - seealso: [RFC7231, Section 6.6.4](http://www.iana.org/go/rfc7231#section-6.6.4)
    case serviceUnavailable = 503
    
    /// Gateway Timeout: 504
    ///
    /// - seealso: [RFC7231, Section 6.6.5](http://www.iana.org/go/rfc7231#section-6.6.5)
    case gatewayTimeout = 504
    
    /// HTTP Version Not Supported: 505
    ///
    /// - seealso: [RFC7231, Section 6.6.6](http://www.iana.org/go/rfc7231#section-6.6.6)
    @objc(HTTPStatusCodeHTTPVersionNotSupported)
    case httpVersionNotSupported = 505
    
    /// Variant Also Negotiates: 506
    ///
    /// - seealso: [RFC2295](http://www.iana.org/go/rfc2295)
    case variantAlsoNegotiates = 506
    
    /// Insufficient Storage: 507
    ///
    /// - seealso: [RFC4918](http://www.iana.org/go/rfc4918)
    case insufficientStorage = 507
    
    /// Loop Detected: 508
    ///
    /// - seealso: [RFC5842](http://www.iana.org/go/rfc5842)
    case loopDetected = 508
    
    /// Bandwidth Limit Exceeded: 509
    /// 
    /// The server has exceeded the bandwidth specified by the server administrator; this is often used by shared hosting providers to limit the bandwidth of customers.
    /// 
    /// - seealso: <https://documentation.cpanel.net/display/CKB/HTTP+Error+Codes+and+Quick+Fixes#HTTPErrorCodesandQuickFixes-509BandwidthLimitExceeded>
    case bandwidthLimitExceeded = 509
    
    /// Not Extended: 510
    /// 
    /// - seealso: [RFC2774](http://www.iana.org/go/rfc2774)
    case notExtended = 510
    
    /// Network Authentication Required: 511
    /// 
    /// - seealso: [RFC6585](http://www.iana.org/go/rfc6585)
    case networkAuthenticationRequired = 511
    
    /// Site is frozen: 530
    /// 
    /// Used by the [Pantheon](https://en.wikipedia.org/wiki/Pantheon_(software)) web platform to indicate a site that has been frozen due to inactivity.
    case siteIsFrozen = 530
    
    /// Network Connect Timeout Error: 599
    /// 
    /// This status code is not specified in any RFCs, but is used by some HTTP proxies to signal a network connect timeout behind the proxy to a client in front of the proxy.
    case networkConnectTimeoutError = 599
}



================================================
FILE: Tests/.gitignore
================================================
Carthage
Cartfile.resolved


================================================
FILE: Tests/Cartfile
================================================
github "rhodgkins/SwiftHTTPStatusCodes" "master"



================================================
FILE: Tests/Generator.playground/Contents.swift
================================================
import Foundation
import XCPlayground

func createEnumCaseFromLine(line: String) -> Case? {
    
    func createCommentsFromReference(reference: String?) -> [String]? {
        
        func createRFCSeeAlso(link: String) -> String? {
            let values = link.components(separatedBy: ", ")
            guard let spec = values.first else {
                return nil
            }
            let components = NSURLComponents(string: spec.lowercased())!
            if values.count == 2 {
                components.fragment = values[1].lowercased().replacingOccurrences(of: " ", with: "-")
            }
            let url = components.url(relativeTo: URL(string: "http://www.iana.org/go/"))!
            return createSeeAlso(text: link, link: url.absoluteString)
        }
        
        guard let reference = reference else {
            return nil
        }
        
        let refsRegex = try! NSRegularExpression(pattern: "\\[([^\\]]+)\\]")
        
        return refsRegex.matches(in: reference, range: reference.nsRange).compactMap { result in
            guard result.numberOfRanges == 2, let link = reference[result.range(at: 1)] else {
                return nil
            }
            return createRFCSeeAlso(link: link)
        }
    }
    
    let linesRegex = try! NSRegularExpression(pattern: "^([^,]*),([^,]*),\"?([^\"$]*)\"?")
    guard let match = linesRegex.firstMatch(in: line, range: line.nsRange), match.numberOfRanges == 4 else {
        return nil
    }
    
    let ref = line[match.range(at: 3)]
    
    guard let codeString = line[match.range(at: 1)], let code = Int(codeString, radix: 10) else {
        return nil
    }
    guard let info = line[match.range(at: 2)], info.lowercased() != "unassigned" else {
        return nil
    }
    
    return Case(code: code, name: info, comments: createCommentsFromReference(reference: ref) ?? [])
}

func fetchCSV() -> (lastUpdated: String, cases: Set<Case>)? {
    
    let semaphore = DispatchSemaphore(value: 0)
    var result: (String, Set<Case>)?
    
    let task = URLSession.shared.dataTask(with: URL(string: "http://www.iana.org/assignments/http-status-codes/http-status-codes-1.csv")!) { data, response, error in
        defer { semaphore.signal() }

        if let error = error {
            print("Error fetching CSV: \(error)")
            return
        }
        let response = response as! HTTPURLResponse
        guard let lastUpdated = response.allHeaderFields["Last-Modified"] as! String? else {
            print("No Last-Modified header value")
            return
        }
        guard let d = data, let string = String(data: d, encoding: .utf8) else {
            print("Unable to decode data: \(String(describing: data))")
            return
        }
        
        var cases = Set<Case>()
        string.enumerateLines{ line, _ in
            if let c = createEnumCaseFromLine(line: line) {
                cases.insert(c)
            }
        }
        result = (lastUpdated, cases)
    }
    task.resume()
    if semaphore.wait(timeout: DispatchTime.now() + .seconds(10)) != .success {
        task.cancel()
        print("Timeout waiting for task to complete")
    }
    return result
}

let CodeBlacklist = [
    306 // Declared as (Unused) in CSV
]

if let (lastUpdated, allCases) = fetchCSV() {
    var cases = allCases.filter { !CodeBlacklist.contains($0.code) }
    cases.formUnion(ExtraCases)
    print(FileHeader)
    print()
    print(Imports)
    print()
    print(createEnumHeaderComment(lastUpdated: lastUpdated))
    print(EnumDeclarationStart)
    print()
    print(cases.sorted().map(String.init(describing:)).joined(separator: "\n\n"))
    print(EnumDeclarationEnd)
    print()
}


================================================
FILE: Tests/Generator.playground/Sources/Case.swift
================================================
public struct Case {
    public let code: Int
    let name: String
    let comments: [String]
    let caseName: String
    let objCCaseName: String?
    
    init(code: Int, name: String, comments: String...) {
        self.init(code: code, name: name, comments: comments)
    }
    
    public init(code: Int, name: String, comments: [String]) {
        self.code = code
        self.name = name
        self.comments = ["\(name): \(code)", ""] + comments
        // Remove all non code print characters, interpret '-' as a space
        let identifiers = (SpecialCaseNameLookup[code] ?? name).replacingOccurrences(of: "\\-", with: " ", options: [.caseInsensitive, .regularExpression]).replacingOccurrences(of: "[^a-z0-9 ]", with: "", options: [.caseInsensitive, .regularExpression]).components(separatedBy: " ")
        
        // Must always have at least 1 value for the identifiers
        let prefix = identifiers.first!
        // Match Swift 3.0 enum case naming convention
        let swiftCaseNamePrefix = prefix.lowercased()
        let swiftCaseNameSuffix = (identifiers.count > 1 ? identifiers.suffix(from: 1).map { $0.uppercasedFirstCharacter() } : []).joined(separator: "")
        
        let swiftCaseName = swiftCaseNamePrefix + swiftCaseNameSuffix
        // Keep acronyms if its the first identifier
        objCCaseName = prefix.uppercased() == prefix ? (prefix + swiftCaseNameSuffix) : nil
        
        // Escape special case names
        caseName = UnsafeCaseNames.contains(swiftCaseName) ? "`\(swiftCaseName)`" : swiftCaseName
    }
}

extension Case: Hashable, Comparable, CustomStringConvertible {
    public var hashValue: Int { return code.hashValue }
    
    public var description: String {
        var lines = [makeLinesIntoDocComment(lines: comments, prefix: "\t")]
        if let objCCaseName = objCCaseName {
            lines.append("\t@objc(\(EnumName)\(objCCaseName))")
        }
        lines.append("\tcase \(caseName) = \(code)")
        return text(lines)
    }
    
    public static func ==(lhs: Case, rhs: Case) -> Bool { return lhs.code == rhs.code }
    public static func <(lhs: Case, rhs: Case) -> Bool { return lhs.code < rhs.code }
}

private extension String {
    
    func lowercasedFirstCharacter() -> String {
        let firstCharacter = String(self[startIndex])
        let rest = self[index(after: startIndex)...]
        return firstCharacter.lowercased() + rest
    }
    
    func uppercasedFirstCharacter() -> String {
        let firstCharacter = String(self[startIndex])
        let rest = self[index(after: startIndex)...]
        return firstCharacter.uppercased() + rest
    }
}

import Foundation.NSRange

public extension String {
    
    var nsRange: NSRange {
        return NSRange(startIndex..<endIndex, in: self)
    }
    
    subscript(range: NSRange) -> String? {
        guard let r = Range(range, in: self) else {
            return nil
        }
        return String(self[r])
    }
}

/// List of Swift keywords
private let UnsafeCaseNames = Set(arrayLiteral:
    "continue",
    "break",
    "fallthrough­",
    "return",
    "guard",
    "if",
    "else",
    "switch",
    "default",
    "for",
    "while",
    "repeat",
    "do",
    "try",
    "catch",
    "throw",
    "defer",
    "func",
    "throws",
    "rethrows",
    "struct",
    "class",
    "extension",
    "enum",
    "protocol",
    "typealias­",
    "associatedtype­",
    "public",
    "internal",
    "private",
    "final",
    "open",
    "var",
    "let",
    "case",
    "indirect",
    "self",
    "static",
    "as",
    "is",
    "weak",
    "unowned",
    "in",
    "where",
    "get",
    "set",
    "willSet",
    "didSet",
    "init",
    "deinit",
    "subscript­",
    "operator",
    "postfix",
    "prefix",
    "infix",
    "convenience­",
    "dynamic­",
    "­infix­",
    "lazy­",
    "mutating­",
    "nonmutating­",
    "optional­",
    "override­",
    "required"
)


================================================
FILE: Tests/Generator.playground/Sources/StaticTexts.swift
================================================
import Foundation

func text(_ lines: [String]) -> String {
    return lines.joined(separator: "\n")
}

func text(_ lines: String...) -> String {
    return text(lines)
}

func makeLinesIntoDocComment(lines: [String], prefix: String = "") -> String {
    return text(lines.map { "\(prefix)/// \($0)" })
}

func makeLinesIntoDocComment(prefix: String = "", lines: String...) -> String {
    return makeLinesIntoDocComment(lines: lines, prefix: prefix)
}

private func makeLinesIntoComment(lines: String...) -> String {
    return text(lines.map { "// \($0)" })
}

func createLink(text: String? = nil, link: String) -> String {
    guard let text = text else {
        return "<\(link)>"
    }
    return "[\(text)](\(link))"
}

public func createSeeAlso(text: String? = nil, link: String) -> String {
    return "- seealso: \(createLink(text: text, link: link))"
}

private let Date: String = {
    let formatter = DateFormatter()
    formatter.dateFormat = "dd/MM/yyyy"
    return formatter.string(from: Foundation.Date())
}()
private let Year: String = {
    let formatter = DateFormatter()
    formatter.dateFormat = "yyyy"
    return formatter.string(from: Foundation.Date())
}()

let EnumName = "HTTPStatusCode"

public let FileHeader = makeLinesIntoComment(lines:
    "",
    "HTTPStatusCodes.swift",
    "",
    "Generated by Richard Hodgkins on \(Date).",
    "Copyright (c) \(Year) Richard Hodgkins. All rights reserved.",
    ""
)

public let Imports = text(
    "import Foundation"
)

public func createEnumHeaderComment(lastUpdated: String) -> String {
    return makeLinesIntoDocComment(lines:
        "HTTP status codes as per the \(createLink(text: "IANA HTTP status code registry", link: "http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml")).",
        "",
        "Last updated: \(lastUpdated)",
        "",
        "- seealso: \(createLink(text: "Wikipedia page - List of HTTP status codes", link: "http://en.wikipedia.org/wiki/List_of_HTTP_status_codes"))",
        "- seealso: \(createLink(text: "HTTP protocol standard - Status Code Definitions", link: "https://tools.ietf.org/html/rfc2616#section-10"))"
    )
}

public let EnumDeclarationStart = "@objc public enum \(EnumName): Int {"

public let EnumDeclarationEnd = "}"

/// Allows conversions of special cases defined in the RFC spec.
let SpecialCaseNameLookup: [Int: String] = [
    :
]

public let ExtraCases = [
    
    // MARK: RFC
    
    Case(code: 418,
         name: "I'm A Teapot",
     comments:
        "Returned by tea pots requested to brew coffee",
        "",
        createSeeAlso(text: "RFC 2324", link: "http://www.iana.org/go/rfc2324")
    ),
    
    // MARK: ISS
    
    Case(code: 440,
         name: "IIS Login Timeout",
     comments:
        "The client's session has expired and must log in again.",
        "",
        "**Category**: Internet Information Services",
        "",
        createSeeAlso(text: "Error message when you try to log on to Exchange 2007 by using Outlook Web Access: \"440 Login Timeout\"", link: "http://support.microsoft.com/kb/941201/en-us")
    ),
    Case(code: 449,
        name: "IIS Retry With",
        comments:
        "The server cannot honour the request because the user has not provided the required information.",
        "",
        "**Category**: Internet Information Services",
        "",
        createSeeAlso(text: "2.2.6 449 Retry With Status Code", link: "https://msdn.microsoft.com/en-us/library/dd891478.aspx")
    ),
    
    // MARK: ngnix
    
    Case(code: 444,
         name: "nginx No Response",
     comments:
        "Used to indicate that the server has returned no information to the client and closed the connection.",
        "",
        "**Category**: nginx"
    ),
    Case(code: 495,
         name: "nginx SSL Certificate Error",
     comments:
        "An expansion of the 400 Bad Request response code, used when the client has provided an invalid client certificate.",
        "",
        "**Category**: nginx"
    ),
    Case(code: 496,
         name: "nginx SSL Certificate Required",
     comments:
        "An expansion of the 400 Bad Request response code, used when a client certificate is required but not provided.",
        "",
        "**Category**: nginx"
    ),
    Case(code: 497,
         name: "nginx HTTP To HTTPS",
     comments:
        "An expansion of the 400 Bad Request response code, used when the client has made a HTTP request to a port listening for HTTPS requests.",
        "",
        "**Category**: nginx"
    ),
    Case(code: 499,
         name: "nginx Client Closed Request",
     comments:
        "Used when the client has closed the request before the server could send a response.",
        "",
        "**Category**: nginx"
    ),
    
    // MARK: Other
    
    Case(code: 450,
         name: "Blocked by Windows Parental Controls",
     comments:
        "A Microsoft extension. This error is given when Windows Parental Controls are turned on and are blocking access to the given webpage."
    ),
    Case(code: 498,
         name: "Token Expired",
     comments:
        "Returned by \(createLink(text: "ArcGIS for Server", link: "https://en.wikipedia.org/wiki/ArcGIS_Server")). A code of 498 indicates an expired or otherwise invalid token.",
        "",
        createSeeAlso(text: "Using token-based authentication", link: "http://help.arcgis.com/en/arcgisserver/10.0/apis/soap/index.htm#Using_token_authentication.htm")
    ),
    Case(code: 530,
         name: "Site is frozen",
     comments:
        "Used by the \(createLink(text: "Pantheon", link: "https://en.wikipedia.org/wiki/Pantheon_(software)")) web platform to indicate a site that has been frozen due to inactivity."
    ),
    Case(code: 509,
         name: "Bandwidth Limit Exceeded",
     comments:
        "The server has exceeded the bandwidth specified by the server administrator; this is often used by shared hosting providers to limit the bandwidth of customers.",
        "",
        createSeeAlso(link: "https://documentation.cpanel.net/display/CKB/HTTP+Error+Codes+and+Quick+Fixes#HTTPErrorCodesandQuickFixes-509BandwidthLimitExceeded")
    ),
    Case(code: 599,
         name: "Network Connect Timeout Error",
     comments: "This status code is not specified in any RFCs, but is used by some HTTP proxies to signal a network connect timeout behind the proxy to a client in front of the proxy."
    )
]


================================================
FILE: Tests/Generator.playground/contents.xcplayground
================================================
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<playground version='5.0' target-platform='osx' executeOnSourceChanges='false' last-migration='0800'>
    <timeline fileName='timeline.xctimeline'/>
</playground>

================================================
FILE: Tests/HTTPStatusCodes/Deprecated.h
================================================
//
//  Deprecated.h
//  HTTPStatusCodes
//
//  Created by Richard Hodgkins on 08/06/2016.
//  Copyright © 2016 Rich H. All rights reserved.
//

@import Foundation;

/// Used to clean up API, should not be used externally.
typedef const NSInteger __HTTPStatusCode NS_SWIFT_UNAVAILABLE("");

// MARK: - Deprecated

/// - deprecated: Renamed to `HTTPStatusCodePayloadTooLarge`
FOUNDATION_EXTERN __HTTPStatusCode HTTPStatusCodeRequestEntityTooLarge NS_SWIFT_UNAVAILABLE("Use HTTPStatusCode.requestEntityTooLarge instead") DEPRECATED_MSG_ATTRIBUTE("Renamed to HTTPStatusCodePayloadTooLarge");

/// - deprecated: Renamed to `HTTPStatusCodeURITooLong`
FOUNDATION_EXTERN __HTTPStatusCode HTTPStatusCodeRequestURITooLong NS_SWIFT_UNAVAILABLE("Use HTTPStatusCode.requestURITooLong instead") DEPRECATED_MSG_ATTRIBUTE("Renamed to HTTPStatusCodeURITooLong");

/// - deprecated: Renamed to `HTTPStatusCodeRangeNotSatisfiable`
FOUNDATION_EXTERN __HTTPStatusCode HTTPStatusCodeRequestedRangeNotSatisfiable NS_SWIFT_UNAVAILABLE("Use HTTPStatusCode.requestedRangeNotSatisfiable instead") DEPRECATED_MSG_ATTRIBUTE("Renamed to HTTPStatusCodeRangeNotSatisfiable");

/// - deprecated: Renamed to `HTTPStatusCodeIISLoginTimeout`
FOUNDATION_EXTERN __HTTPStatusCode HTTPStatusCodeLoginTimeout NS_SWIFT_UNAVAILABLE("Use HTTPStatusCode.loginTimeout instead") DEPRECATED_MSG_ATTRIBUTE("Renamed to HTTPStatusCodeIISLoginTimeout");

/// - deprecated: Renamed to `HTTPStatusCodeIISRetryWith`
FOUNDATION_EXTERN __HTTPStatusCode HTTPStatusCodeRetryWith NS_SWIFT_UNAVAILABLE("Use HTTPStatusCode.retryWith instead") DEPRECATED_MSG_ATTRIBUTE("Renamed to HTTPStatusCodeIISRetryWith");

/// - deprecated: Renamed to `HTTPStatusCodeNginxNoResponse`
FOUNDATION_EXTERN __HTTPStatusCode HTTPStatusCodeNoResponse NS_SWIFT_UNAVAILABLE("Use HTTPStatusCode.noResponse instead") DEPRECATED_MSG_ATTRIBUTE("Renamed to HTTPStatusCodeNginxNoResponse");

/// - deprecated: Renamed to `HTTPStatusCodeNginxSSLCertificateError`
FOUNDATION_EXTERN __HTTPStatusCode HTTPStatusCodeCertError NS_SWIFT_UNAVAILABLE("Use HTTPStatusCode.certError instead") DEPRECATED_MSG_ATTRIBUTE("Renamed to HTTPStatusCodeNginxSSLCertificateError");

/// - deprecated: Renamed to `HTTPStatusCodeNginxSSLCertificateRequired`
FOUNDATION_EXTERN __HTTPStatusCode HTTPStatusCodeNoCert NS_SWIFT_UNAVAILABLE("Use HTTPStatusCode.noCert instead") DEPRECATED_MSG_ATTRIBUTE("Renamed to HTTPStatusCodeNginxSSLCertificateRequired");

/// - deprecated: Renamed to `HTTPStatusCodeNginxHTTPToHTTPS`
FOUNDATION_EXTERN __HTTPStatusCode HTTPStatusCodeHTTPToHTTPS NS_SWIFT_UNAVAILABLE("Use HTTPStatusCode.hTTPToHTTPS instead") DEPRECATED_MSG_ATTRIBUTE("Renamed to HTTPStatusCodeNginxHTTPToHTTPS");

/// - deprecated: Renamed to `HTTPStatusCodeNginxClientClosedRequest`
FOUNDATION_EXTERN __HTTPStatusCode HTTPStatusCodeClientClosedRequest NS_SWIFT_UNAVAILABLE("Use HTTPStatusCode.clientClosedRequest instead") DEPRECATED_MSG_ATTRIBUTE("Renamed to HTTPStatusCodeNginxClientClosedRequest");

/// - deprecated: Renamed to `HTTPStatusCodeNetworkConnectTimeoutError`
FOUNDATION_EXTERN __HTTPStatusCode HTTPStatusCodeNetworkTimeoutError NS_SWIFT_UNAVAILABLE("Use HTTPStatusCode.networkTimeoutError instead") DEPRECATED_MSG_ATTRIBUTE("Renamed to HTTPStatusCodeNetworkConnectTimeoutError");;

/// Returned by version 1 of the Twitter Search and Trends API when the client is being rate limited; versions 1.1 and later use the 429 Too Many Requests response code instead.
///
/// - seealso: [Twitter Error Codes & Responses](https://dev.twitter.com/docs/error-codes-responses)
FOUNDATION_EXTERN __HTTPStatusCode HTTPStatusCodeTwitterEnhanceYourCalm NS_SWIFT_UNAVAILABLE("Use HTTPStatusCode.TwitterEnhanceYourCalm instead") DEPRECATED_MSG_ATTRIBUTE("Renamed to HTTPStatusCodeTooManyRequests");


// MARK: - Removed

/// Checkpoint: 103
///
/// Used in the resumable requests proposal to resume aborted PUT or POST requests.
///
/// Removed and replaced with `EarlyHints` which has a different meaning.
///
/// - seealso: [Original proposal](https://web.archive.org/web/20151013212135/http://code.google.com/p/gears/wiki/ResumableHttpRequestsProposal)
FOUNDATION_EXTERN __HTTPStatusCode HTTPStatusCodeCheckpoint NS_UNAVAILABLE;

/// Switch Proxy: 306
///
/// No longer used. Originally meant "Subsequent requests should use the specified proxy."
///
/// - seealso: [Original draft](https://tools.ietf.org/html/draft-cohen-http-305-306-responses-00)
FOUNDATION_EXTERN __HTTPStatusCode HTTPStatusCodeSwitchProxy NS_UNAVAILABLE;

/// Authentication Timeout: 419
///
/// Removed from Wikipedia page.
FOUNDATION_EXTERN __HTTPStatusCode HTTPStatusCodeAuthenticationTimeout NS_UNAVAILABLE;

/// Method Failure: 419
///
/// A deprecated response used by the Spring Framework when a method has failed.
///
/// - seealso: [Spring Framework: HttpStatus enum documentation - `METHOD_FAILURE`](https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/http/HttpStatus.html#METHOD_FAILURE)
FOUNDATION_EXTERN __HTTPStatusCode HTTPStatusCodeSpringFrameworkMethodFailure NS_UNAVAILABLE;

/// Request Header Too Large: 494
///
/// Removed and replaced with `RequestHeaderFieldsTooLarge` - 431
FOUNDATION_EXTERN __HTTPStatusCode HTTPStatusCodeRequestHeaderTooLarge NS_UNAVAILABLE;


================================================
FILE: Tests/HTTPStatusCodes/Deprecated.m
================================================
//
//  Deprecated.c
//  HTTPStatusCodes
//
//  Created by Richard Hodgkins on 08/06/2016.
//  Copyright © 2016 Rich H. All rights reserved.
//

#import "Deprecated.h"

#import <HTTPStatusCodes/HTTPStatusCodes-Swift.h>

// MARK: - Deprecated

__HTTPStatusCode HTTPStatusCodeRequestEntityTooLarge = HTTPStatusCodePayloadTooLarge;
__HTTPStatusCode HTTPStatusCodeRequestURITooLong = HTTPStatusCodeURITooLong;
__HTTPStatusCode HTTPStatusCodeRequestedRangeNotSatisfiable = HTTPStatusCodeRangeNotSatisfiable;
__HTTPStatusCode HTTPStatusCodeLoginTimeout = HTTPStatusCodeIISLoginTimeout;
__HTTPStatusCode HTTPStatusCodeRetryWith = HTTPStatusCodeIISRetryWith;
__HTTPStatusCode HTTPStatusCodeNoResponse = HTTPStatusCodeNginxNoResponse;
__HTTPStatusCode HTTPStatusCodeCertError = HTTPStatusCodeNginxSSLCertificateError;
__HTTPStatusCode HTTPStatusCodeNoCert = HTTPStatusCodeNginxSSLCertificateRequired;
__HTTPStatusCode HTTPStatusCodeHTTPToHTTPS = HTTPStatusCodeNginxHTTPToHTTPS;
__HTTPStatusCode HTTPStatusCodeClientClosedRequest = HTTPStatusCodeNginxClientClosedRequest;
__HTTPStatusCode HTTPStatusCodeNetworkTimeoutError = HTTPStatusCodeNetworkConnectTimeoutError;
__HTTPStatusCode HTTPStatusCodeTwitterEnhanceYourCalm = HTTPStatusCodeTooManyRequests;

// MARK: - Removed

__HTTPStatusCode HTTPStatusCodeCheckpoint = 103;
__HTTPStatusCode HTTPStatusCodeSwitchProxy = 306;
__HTTPStatusCode HTTPStatusCodeAuthenticationTimeout = 419;
__HTTPStatusCode HTTPStatusCodeSpringFrameworkMethodFailure = 419;
__HTTPStatusCode HTTPStatusCodeRequestHeaderTooLarge = 494;


================================================
FILE: Tests/HTTPStatusCodes/HTTPStatusCodes.h
================================================
//
//  HTTPStatusCodes.h
//  HTTPStatusCodes
//
//  Created by Richard Hodgkins on 22/02/2015.
//  Copyright (c) 2015 Rich H. All rights reserved.
//

@import Foundation;

//! Project version number for HTTPStatusCodes.
FOUNDATION_EXPORT double HTTPStatusCodesVersionNumber;

//! Project version string for HTTPStatusCodes.
FOUNDATION_EXPORT const unsigned char HTTPStatusCodesVersionString[];

#import <HTTPStatusCodes/Deprecated.h>


================================================
FILE: Tests/HTTPStatusCodes/SupportingFiles/Info-OSX.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>CFBundleDevelopmentRegion</key>
	<string>en</string>
	<key>CFBundleExecutable</key>
	<string>$(EXECUTABLE_NAME)</string>
	<key>CFBundleIdentifier</key>
	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
	<key>CFBundleInfoDictionaryVersion</key>
	<string>6.0</string>
	<key>CFBundleName</key>
	<string>$(PRODUCT_NAME)</string>
	<key>CFBundlePackageType</key>
	<string>FMWK</string>
	<key>CFBundleShortVersionString</key>
	<string>$(HSC_VERSION)</string>
	<key>CFBundleSignature</key>
	<string>????</string>
	<key>CFBundleVersion</key>
	<string>$(CURRENT_PROJECT_VERSION)</string>
	<key>NSHumanReadableCopyright</key>
	<string>Copyright © 2015 Rich H. All rights reserved.</string>
	<key>NSPrincipalClass</key>
	<string></string>
</dict>
</plist>


================================================
FILE: Tests/HTTPStatusCodes/SupportingFiles/Info-iOS.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>CFBundleDevelopmentRegion</key>
	<string>en</string>
	<key>CFBundleExecutable</key>
	<string>$(EXECUTABLE_NAME)</string>
	<key>CFBundleIdentifier</key>
	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
	<key>CFBundleInfoDictionaryVersion</key>
	<string>6.0</string>
	<key>CFBundleName</key>
	<string>$(PRODUCT_NAME)</string>
	<key>CFBundlePackageType</key>
	<string>FMWK</string>
	<key>CFBundleShortVersionString</key>
	<string>$(HSC_VERSION)</string>
	<key>CFBundleSignature</key>
	<string>????</string>
	<key>CFBundleVersion</key>
	<string>$(CURRENT_PROJECT_VERSION)</string>
	<key>NSPrincipalClass</key>
	<string></string>
</dict>
</plist>


================================================
FILE: Tests/HTTPStatusCodes/SupportingFiles/Info-tvOS.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>CFBundleDevelopmentRegion</key>
	<string>en</string>
	<key>CFBundleExecutable</key>
	<string>$(EXECUTABLE_NAME)</string>
	<key>CFBundleIdentifier</key>
	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
	<key>CFBundleInfoDictionaryVersion</key>
	<string>6.0</string>
	<key>CFBundleName</key>
	<string>$(PRODUCT_NAME)</string>
	<key>CFBundlePackageType</key>
	<string>FMWK</string>
	<key>CFBundleShortVersionString</key>
	<string>$(HSC_VERSION)</string>
	<key>CFBundleSignature</key>
	<string>????</string>
	<key>CFBundleVersion</key>
	<string>$(CURRENT_PROJECT_VERSION)</string>
	<key>NSPrincipalClass</key>
	<string></string>
</dict>
</plist>


================================================
FILE: Tests/HTTPStatusCodes/SupportingFiles/Info-watchOS.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>CFBundleDevelopmentRegion</key>
	<string>en</string>
	<key>CFBundleExecutable</key>
	<string>$(EXECUTABLE_NAME)</string>
	<key>CFBundleIdentifier</key>
	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
	<key>CFBundleInfoDictionaryVersion</key>
	<string>6.0</string>
	<key>CFBundleName</key>
	<string>$(PRODUCT_NAME)</string>
	<key>CFBundlePackageType</key>
	<string>FMWK</string>
	<key>CFBundleShortVersionString</key>
	<string>$(HSC_VERSION)</string>
	<key>CFBundleSignature</key>
	<string>????</string>
	<key>CFBundleVersion</key>
	<string>$(CURRENT_PROJECT_VERSION)</string>
	<key>NSPrincipalClass</key>
	<string></string>
</dict>
</plist>


================================================
FILE: Tests/HTTPStatusCodes.xcconfig
================================================
//
//  HTTPStatusCodes.xcconfig
//  HTTPStatusCodes
//
//  Created by Richard Hodgkins on 14/09/2015.
//  Copyright © 2015 Rich H. All rights reserved.
//

// Custom

PRODUCT_NAME                            = HTTPStatusCodes
PRODUCT_BUNDLE_IDENTIFIER               = uk.co.rhodgkins.swift.$(PRODUCT_NAME:rfc1034identifier)
HSC_VERSION                             = 3.3.2

// Universal Framework
APPLICATION_EXTENSION_API_ONLY          = YES
COMBINE_HIDPI_IMAGES                    = YES

SUPPORTED_PLATFORMS                     = macosx iphoneos iphonesimulator appletvos appletvsimulator watchos watchsimulator

VALID_ARCHS[sdk=iphone*]                = arm64 armv7 armv7s
VALID_ARCHS[sdk=appletv*]               = arm64
VALID_ARCHS[sdk=macosx*]                = i386 x86_64
VALID_ARCHS[sdk=watch*]                 = armv7k

SWIFT_VERSION = 5.0

LD_RUNPATH_SEARCH_PATHS[sdk=iphone*]    = $(inherited) @executable_path/Frameworks @loader_path/Frameworks
LD_RUNPATH_SEARCH_PATHS[sdk=appletv*]   = $(inherited) @executable_path/Frameworks @loader_path/Frameworks
LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]    = $(inherited) @executable_path/../Frameworks @loader_path/Frameworks
LD_RUNPATH_SEARCH_PATHS[sdk=watch*]     = $(inherited) @executable_path/Frameworks

INFOPLIST_FILE[sdk=iphone*]             = $(PROJECT_NAME)/SupportingFiles/Info-iOS.plist
INFOPLIST_FILE[sdk=appletv*]            = $(PROJECT_NAME)/SupportingFiles/Info-tvOS.plist
INFOPLIST_FILE[sdk=macosx*]             = $(PROJECT_NAME)/SupportingFiles/Info-OSX.plist
INFOPLIST_FILE[sdk=watch*]              = $(PROJECT_NAME)/SupportingFiles/Info-watchOS.plist

// Platform-specific

// iOS
CODE_SIGN_IDENTITY[sdk=iphoneos*]       = iPhone Developer
IPHONEOS_DEPLOYMENT_TARGET[sdk=iphone*] = 8.0
TARGETED_DEVICE_FAMILY[sdk=iphone*]     = 1,2

// tvOS
CODE_SIGN_IDENTITY[sdk=appletvos*]      = iPhone Developer
TVOS_DEPLOYMENT_TARGET[sdk=appletv*]    = 9.0
TARGETED_DEVICE_FAMILY[sdk=appletv*]    = 3

// OS X
MACOSX_DEPLOYMENT_TARGET[sdk=macosx*]   = 10.10
FRAMEWORK_VERSION[sdk=macosx*]          = A

// WatchOS
CODE_SIGN_IDENTITY[sdk=watchos*]        = iPhone Developer
WATCHOS_DEPLOYMENT_TARGET[sdk=watch*]   = 2.0


================================================
FILE: Tests/HTTPStatusCodes.xcodeproj/project.pbxproj
================================================
// !$*UTF8*$!
{
	archiveVersion = 1;
	classes = {
	};
	objectVersion = 48;
	objects = {

/* Begin PBXBuildFile section */
		440D14181A99DD1D00EEB60B /* HTTPStatusCodes.h in Headers */ = {isa = PBXBuildFile; fileRef = 440D14171A99DD1D00EEB60B /* HTTPStatusCodes.h */; settings = {ATTRIBUTES = (Public, ); }; };
		440D141E1A99DD1D00EEB60B /* HTTPStatusCodes.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 440D14121A99DD1D00EEB60B /* HTTPStatusCodes.framework */; };
		440D14251A99DD1D00EEB60B /* HTTPStatusCodesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 440D14241A99DD1D00EEB60B /* HTTPStatusCodesTests.swift */; };
		4410E6E11D0740DA00AC18E6 /* HTTPStatusCodes+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4410E6E01D0740DA00AC18E6 /* HTTPStatusCodes+Extensions.swift */; };
		442266871D076CA10083A675 /* RegressionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 442266861D076CA10083A675 /* RegressionTests.swift */; };
		4423AB191DAEAF5700C36EA3 /* ObjectiveCRegressionTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 4423AB181DAEAF5700C36EA3 /* ObjectiveCRegressionTests.m */; };
		442DC0301DAEC41600420E08 /* ObjectiveCTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 442DC02F1DAEC41600420E08 /* ObjectiveCTests.m */; };
		444320471D08CA1D00A6CA18 /* Deprecated.h in Headers */ = {isa = PBXBuildFile; fileRef = 444320461D08C9AC00A6CA18 /* Deprecated.h */; settings = {ATTRIBUTES = (Public, ); }; };
		444320491D08CAED00A6CA18 /* Deprecated.m in Sources */ = {isa = PBXBuildFile; fileRef = 444320481D08CAED00A6CA18 /* Deprecated.m */; };
		44D94E4D1D07387400DC7B50 /* HTTPStatusCodes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44D94E4C1D07387400DC7B50 /* HTTPStatusCodes.swift */; };
/* End PBXBuildFile section */

/* Begin PBXContainerItemProxy section */
		440D141F1A99DD1D00EEB60B /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 440D14091A99DD1D00EEB60B /* Project object */;
			proxyType = 1;
			remoteGlobalIDString = 440D14111A99DD1D00EEB60B;
			remoteInfo = HTTPStatusCodes;
		};
/* End PBXContainerItemProxy section */

/* Begin PBXFileReference section */
		440D14121A99DD1D00EEB60B /* HTTPStatusCodes.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = HTTPStatusCodes.framework; sourceTree = BUILT_PRODUCTS_DIR; };
		440D14171A99DD1D00EEB60B /* HTTPStatusCodes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HTTPStatusCodes.h; sourceTree = "<group>"; };
		440D141D1A99DD1D00EEB60B /* HTTPStatusCodesTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = HTTPStatusCodesTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
		440D14231A99DD1D00EEB60B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
		440D14241A99DD1D00EEB60B /* HTTPStatusCodesTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HTTPStatusCodesTests.swift; sourceTree = "<group>"; };
		440D14331A99DDC900EEB60B /* HTTPStatusCodes.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; name = HTTPStatusCodes.podspec; path = ../HTTPStatusCodes.podspec; sourceTree = "<group>"; };
		440D14341A99DDC900EEB60B /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; name = LICENSE; path = ../LICENSE; sourceTree = "<group>"; };
		440D14351A99DDC900EEB60B /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = "<group>"; };
		440D14361A99E01500EEB60B /* .travis.yml */ = {isa = PBXFileReference; lastKnownFileType = text; name = .travis.yml; path = ../.travis.yml; sourceTree = "<group>"; };
		4410E6E01D0740DA00AC18E6 /* HTTPStatusCodes+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "HTTPStatusCodes+Extensions.swift"; sourceTree = "<group>"; };
		4410E6E21D074E7500AC18E6 /* Generator.playground */ = {isa = PBXFileReference; lastKnownFileType = file.playground; path = Generator.playground; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };
		442266861D076CA10083A675 /* RegressionTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RegressionTests.swift; sourceTree = "<group>"; };
		4423AB181DAEAF5700C36EA3 /* ObjectiveCRegressionTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ObjectiveCRegressionTests.m; sourceTree = "<group>"; };
		442DC02F1DAEC41600420E08 /* ObjectiveCTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ObjectiveCTests.m; sourceTree = "<group>"; };
		444320461D08C9AC00A6CA18 /* Deprecated.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Deprecated.h; sourceTree = "<group>"; };
		444320481D08CAED00A6CA18 /* Deprecated.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Deprecated.m; sourceTree = "<group>"; };
		446C8CDC1BA73F0B00FFB0E3 /* HTTPStatusCodes.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = HTTPStatusCodes.xcconfig; sourceTree = "<group>"; };
		449852021B5A39140081F132 /* Info-iOS.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Info-iOS.plist"; sourceTree = "<group>"; };
		449852031B5A39140081F132 /* Info-OSX.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Info-OSX.plist"; sourceTree = "<group>"; };
		449852041B5A39140081F132 /* Info-watchOS.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Info-watchOS.plist"; sourceTree = "<group>"; };
		44D94E4C1D07387400DC7B50 /* HTTPStatusCodes.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HTTPStatusCodes.swift; sourceTree = "<group>"; };
		44D94E4E1D0738D600DC7B50 /* Package.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = Package.swift; path = ../Package.swift; sourceTree = "<group>"; };
		44F92B2E1C7E3C7C00A0AD0A /* Info-tvOS.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Info-tvOS.plist"; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
		440D140E1A99DD1D00EEB60B /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		440D141A1A99DD1D00EEB60B /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
				440D141E1A99DD1D00EEB60B /* HTTPStatusCodes.framework in Frameworks */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXFrameworksBuildPhase section */

/* Begin PBXGroup section */
		440D14081A99DD1D00EEB60B = {
			isa = PBXGroup;
			children = (
				440D14351A99DDC900EEB60B /* README.md */,
				440D14331A99DDC900EEB60B /* HTTPStatusCodes.podspec */,
				440D14361A99E01500EEB60B /* .travis.yml */,
				440D14341A99DDC900EEB60B /* LICENSE */,
				446C8CDC1BA73F0B00FFB0E3 /* HTTPStatusCodes.xcconfig */,
				44D94E4E1D0738D600DC7B50 /* Package.swift */,
				4410E6E21D074E7500AC18E6 /* Generator.playground */,
				440D14141A99DD1D00EEB60B /* HTTPStatusCodes */,
				440D14211A99DD1D00EEB60B /* HTTPStatusCodesTests */,
				440D14131A99DD1D00EEB60B /* Products */,
			);
			sourceTree = "<group>";
		};
		440D14131A99DD1D00EEB60B /* Products */ = {
			isa = PBXGroup;
			children = (
				440D14121A99DD1D00EEB60B /* HTTPStatusCodes.framework */,
				440D141D1A99DD1D00EEB60B /* HTTPStatusCodesTests.xctest */,
			);
			name = Products;
			sourceTree = "<group>";
		};
		440D14141A99DD1D00EEB60B /* HTTPStatusCodes */ = {
			isa = PBXGroup;
			children = (
				440D14171A99DD1D00EEB60B /* HTTPStatusCodes.h */,
				444320461D08C9AC00A6CA18 /* Deprecated.h */,
				444320481D08CAED00A6CA18 /* Deprecated.m */,
				44D94E4B1D07387400DC7B50 /* Sources */,
				449852011B5A39140081F132 /* SupportingFiles */,
			);
			path = HTTPStatusCodes;
			sourceTree = "<group>";
		};
		440D14211A99DD1D00EEB60B /* HTTPStatusCodesTests */ = {
			isa = PBXGroup;
			children = (
				440D14231A99DD1D00EEB60B /* Info.plist */,
				440D14241A99DD1D00EEB60B /* HTTPStatusCodesTests.swift */,
				442DC02F1DAEC41600420E08 /* ObjectiveCTests.m */,
				442266861D076CA10083A675 /* RegressionTests.swift */,
				4423AB181DAEAF5700C36EA3 /* ObjectiveCRegressionTests.m */,
			);
			path = HTTPStatusCodesTests;
			sourceTree = "<group>";
		};
		449852011B5A39140081F132 /* SupportingFiles */ = {
			isa = PBXGroup;
			children = (
				449852021B5A39140081F132 /* Info-iOS.plist */,
				44F92B2E1C7E3C7C00A0AD0A /* Info-tvOS.plist */,
				449852031B5A39140081F132 /* Info-OSX.plist */,
				449852041B5A39140081F132 /* Info-watchOS.plist */,
			);
			path = SupportingFiles;
			sourceTree = "<group>";
		};
		44D94E4B1D07387400DC7B50 /* Sources */ = {
			isa = PBXGroup;
			children = (
				44D94E4C1D07387400DC7B50 /* HTTPStatusCodes.swift */,
				4410E6E01D0740DA00AC18E6 /* HTTPStatusCodes+Extensions.swift */,
			);
			name = Sources;
			path = ../../Sources;
			sourceTree = "<group>";
		};
/* End PBXGroup section */

/* Begin PBXHeadersBuildPhase section */
		440D140F1A99DD1D00EEB60B /* Headers */ = {
			isa = PBXHeadersBuildPhase;
			buildActionMask = 2147483647;
			files = (
				440D14181A99DD1D00EEB60B /* HTTPStatusCodes.h in Headers */,
				444320471D08CA1D00A6CA18 /* Deprecated.h in Headers */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXHeadersBuildPhase section */

/* Begin PBXNativeTarget section */
		440D14111A99DD1D00EEB60B /* HTTPStatusCodes */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = 440D14281A99DD1D00EEB60B /* Build configuration list for PBXNativeTarget "HTTPStatusCodes" */;
			buildPhases = (
				440D140D1A99DD1D00EEB60B /* Sources */,
				440D140E1A99DD1D00EEB60B /* Frameworks */,
				440D140F1A99DD1D00EEB60B /* Headers */,
				440D14101A99DD1D00EEB60B /* Resources */,
			);
			buildRules = (
			);
			dependencies = (
			);
			name = HTTPStatusCodes;
			productName = HTTPStatusCodes;
			productReference = 440D14121A99DD1D00EEB60B /* HTTPStatusCodes.framework */;
			productType = "com.apple.product-type.framework";
		};
		440D141C1A99DD1D00EEB60B /* HTTPStatusCodesTests */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = 440D142B1A99DD1D00EEB60B /* Build configuration list for PBXNativeTarget "HTTPStatusCodesTests" */;
			buildPhases = (
				440D14191A99DD1D00EEB60B /* Sources */,
				440D141A1A99DD1D00EEB60B /* Frameworks */,
				440D141B1A99DD1D00EEB60B /* Resources */,
			);
			buildRules = (
			);
			dependencies = (
				440D14201A99DD1D00EEB60B /* PBXTargetDependency */,
			);
			name = HTTPStatusCodesTests;
			productName = HTTPStatusCodesTests;
			productReference = 440D141D1A99DD1D00EEB60B /* HTTPStatusCodesTests.xctest */;
			productType = "com.apple.product-type.bundle.unit-test";
		};
/* End PBXNativeTarget section */

/* Begin PBXProject section */
		440D14091A99DD1D00EEB60B /* Project object */ = {
			isa = PBXProject;
			attributes = {
				LastSwiftMigration = 0700;
				LastSwiftUpdateCheck = 0730;
				LastUpgradeCheck = 1020;
				ORGANIZATIONNAME = "Rich H";
				TargetAttributes = {
					440D14111A99DD1D00EEB60B = {
						CreatedOnToolsVersion = 6.3;
						LastSwiftMigration = 1020;
					};
					440D141C1A99DD1D00EEB60B = {
						CreatedOnToolsVersion = 6.3;
						LastSwiftMigration = 1020;
					};
				};
			};
			buildConfigurationList = 440D140C1A99DD1D00EEB60B /* Build configuration list for PBXProject "HTTPStatusCodes" */;
			compatibilityVersion = "Xcode 8.0";
			developmentRegion = English;
			hasScannedForEncodings = 0;
			knownRegions = (
				English,
				en,
			);
			mainGroup = 440D14081A99DD1D00EEB60B;
			productRefGroup = 440D14131A99DD1D00EEB60B /* Products */;
			projectDirPath = "";
			projectRoot = "";
			targets = (
				440D14111A99DD1D00EEB60B /* HTTPStatusCodes */,
				440D141C1A99DD1D00EEB60B /* HTTPStatusCodesTests */,
			);
		};
/* End PBXProject section */

/* Begin PBXResourcesBuildPhase section */
		440D14101A99DD1D00EEB60B /* Resources */ = {
			isa = PBXResourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		440D141B1A99DD1D00EEB60B /* Resources */ = {
			isa = PBXResourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXResourcesBuildPhase section */

/* Begin PBXSourcesBuildPhase section */
		440D140D1A99DD1D00EEB60B /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				4410E6E11D0740DA00AC18E6 /* HTTPStatusCodes+Extensions.swift in Sources */,
				44D94E4D1D07387400DC7B50 /* HTTPStatusCodes.swift in Sources */,
				444320491D08CAED00A6CA18 /* Deprecated.m in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		440D14191A99DD1D00EEB60B /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				440D14251A99DD1D00EEB60B /* HTTPStatusCodesTests.swift in Sources */,
				442DC0301DAEC41600420E08 /* ObjectiveCTests.m in Sources */,
				442266871D076CA10083A675 /* RegressionTests.swift in Sources */,
				4423AB191DAEAF5700C36EA3 /* ObjectiveCRegressionTests.m in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXSourcesBuildPhase section */

/* Begin PBXTargetDependency section */
		440D14201A99DD1D00EEB60B /* PBXTargetDependency */ = {
			isa = PBXTargetDependency;
			target = 440D14111A99DD1D00EEB60B /* HTTPStatusCodes */;
			targetProxy = 440D141F1A99DD1D00EEB60B /* PBXContainerItemProxy */;
		};
/* End PBXTargetDependency section */

/* Begin XCBuildConfiguration section */
		440D14261A99DD1D00EEB60B /* Debug */ = {
			isa = XCBuildConfiguration;
			baseConfigurationReference = 446C8CDC1BA73F0B00FFB0E3 /* HTTPStatusCodes.xcconfig */;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
				CLANG_CXX_LIBRARY = "libc++";
				CLANG_ENABLE_MODULES = YES;
				CLANG_ENABLE_OBJC_ARC = YES;
				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_COMMA = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
				CLANG_WARN_EMPTY_BODY = YES;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INFINITE_RECURSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
				CLANG_WARN_STRICT_PROTOTYPES = YES;
				CLANG_WARN_SUSPICIOUS_MOVE = YES;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
				COPY_PHASE_STRIP = NO;
				CURRENT_PROJECT_VERSION = 1;
				DEBUG_INFORMATION_FORMAT = dwarf;
				ENABLE_STRICT_OBJC_MSGSEND = YES;
				ENABLE_TESTABILITY = YES;
				GCC_C_LANGUAGE_STANDARD = gnu99;
				GCC_DYNAMIC_NO_PIC = NO;
				GCC_NO_COMMON_BLOCKS = YES;
				GCC_OPTIMIZATION_LEVEL = 0;
				GCC_PREPROCESSOR_DEFINITIONS = (
					"DEBUG=1",
					"$(inherited)",
				);
				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
				GCC_WARN_UNDECLARED_SELECTOR = YES;
				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
				GCC_WARN_UNUSED_FUNCTION = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				MTL_ENABLE_DEBUG_INFO = YES;
				ONLY_ACTIVE_ARCH = YES;
				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
				VERSIONING_SYSTEM = "apple-generic";
				VERSION_INFO_PREFIX = "";
			};
			name = Debug;
		};
		440D14271A99DD1D00EEB60B /* Release */ = {
			isa = XCBuildConfiguration;
			baseConfigurationReference = 446C8CDC1BA73F0B00FFB0E3 /* HTTPStatusCodes.xcconfig */;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
				CLANG_CXX_LIBRARY = "libc++";
				CLANG_ENABLE_MODULES = YES;
				CLANG_ENABLE_OBJC_ARC = YES;
				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_COMMA = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
				CLANG_WARN_EMPTY_BODY = YES;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INFINITE_RECURSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
				CLANG_WARN_STRICT_PROTOTYPES = YES;
				CLANG_WARN_SUSPICIOUS_MOVE = YES;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
				COPY_PHASE_STRIP = NO;
				CURRENT_PROJECT_VERSION = 1;
				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
				ENABLE_NS_ASSERTIONS = NO;
				ENABLE_STRICT_OBJC_MSGSEND = YES;
				GCC_C_LANGUAGE_STANDARD = gnu99;
				GCC_NO_COMMON_BLOCKS = YES;
				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
				GCC_WARN_UNDECLARED_SELECTOR = YES;
				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
				GCC_WARN_UNUSED_FUNCTION = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				MTL_ENABLE_DEBUG_INFO = NO;
				SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
				VALIDATE_PRODUCT = YES;
				VERSIONING_SYSTEM = "apple-generic";
				VERSION_INFO_PREFIX = "";
			};
			name = Release;
		};
		440D14291A99DD1D00EEB60B /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				COMBINE_HIDPI_IMAGES = YES;
				DEFINES_MODULE = YES;
				DYLIB_COMPATIBILITY_VERSION = 1;
				DYLIB_CURRENT_VERSION = 1;
				DYLIB_INSTALL_NAME_BASE = "@rpath";
				INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
				SKIP_INSTALL = YES;
				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
			};
			name = Debug;
		};
		440D142A1A99DD1D00EEB60B /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				CLANG_ENABLE_CODE_COVERAGE = NO;
				COMBINE_HIDPI_IMAGES = YES;
				DEFINES_MODULE = YES;
				DYLIB_COMPATIBILITY_VERSION = 1;
				DYLIB_CURRENT_VERSION = 1;
				DYLIB_INSTALL_NAME_BASE = "@rpath";
				INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
				SKIP_INSTALL = YES;
			};
			name = Release;
		};
		440D142C1A99DD1D00EEB60B /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				APPLICATION_EXTENSION_API_ONLY = NO;
				CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;
				INFOPLIST_FILE = "$(PRODUCT_NAME)/Info.plist";
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
				"LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
				"LD_RUNPATH_SEARCH_PATHS[sdk=watch*]" = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
				OTHER_SWIFT_FLAGS = "-DDEBUG";
				PRODUCT_NAME = HTTPStatusCodesTests;
				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
			};
			name = Debug;
		};
		440D142D1A99DD1D00EEB60B /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				APPLICATION_EXTENSION_API_ONLY = NO;
				CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;
				INFOPLIST_FILE = "$(PRODUCT_NAME)/Info.plist";
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
				"LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
				"LD_RUNPATH_SEARCH_PATHS[sdk=watch*]" = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
				PRODUCT_NAME = HTTPStatusCodesTests;
			};
			name = Release;
		};
/* End XCBuildConfiguration section */

/* Begin XCConfigurationList section */
		440D140C1A99DD1D00EEB60B /* Build configuration list for PBXProject "HTTPStatusCodes" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				440D14261A99DD1D00EEB60B /* Debug */,
				440D14271A99DD1D00EEB60B /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		440D14281A99DD1D00EEB60B /* Build configuration list for PBXNativeTarget "HTTPStatusCodes" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				440D14291A99DD1D00EEB60B /* Debug */,
				440D142A1A99DD1D00EEB60B /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		440D142B1A99DD1D00EEB60B /* Build configuration list for PBXNativeTarget "HTTPStatusCodesTests" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				440D142C1A99DD1D00EEB60B /* Debug */,
				440D142D1A99DD1D00EEB60B /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
/* End XCConfigurationList section */
	};
	rootObject = 440D14091A99DD1D00EEB60B /* Project object */;
}


================================================
FILE: Tests/HTTPStatusCodes.xcodeproj/project.xcworkspace/contents.xcworkspacedata
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
   version = "1.0">
   <FileRef
      location = "self:HTTPStatusCodes.xcodeproj">
   </FileRef>
</Workspace>


================================================
FILE: Tests/HTTPStatusCodes.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>IDEDidComputeMac32BitWarning</key>
	<true/>
</dict>
</plist>


================================================
FILE: Tests/HTTPStatusCodes.xcodeproj/xcshareddata/xcschemes/HTTPStatusCodes.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
   LastUpgradeVersion = "1020"
   version = "1.3">
   <BuildAction
      parallelizeBuildables = "YES"
      buildImplicitDependencies = "YES">
      <BuildActionEntries>
         <BuildActionEntry
            buildForTesting = "YES"
            buildForRunning = "YES"
            buildForProfiling = "NO"
            buildForArchiving = "YES"
            buildForAnalyzing = "YES">
            <BuildableReference
               BuildableIdentifier = "primary"
               BlueprintIdentifier = "440D14111A99DD1D00EEB60B"
               BuildableName = "HTTPStatusCodes.framework"
               BlueprintName = "HTTPStatusCodes"
               ReferencedContainer = "container:HTTPStatusCodes.xcodeproj">
            </BuildableReference>
         </BuildActionEntry>
         <BuildActionEntry
            buildForTesting = "YES"
            buildForRunning = "NO"
            buildForProfiling = "NO"
            buildForArchiving = "NO"
            buildForAnalyzing = "NO">
            <BuildableReference
               BuildableIdentifier = "primary"
               BlueprintIdentifier = "440D141C1A99DD1D00EEB60B"
               BuildableName = "HTTPStatusCodesTests.xctest"
               BlueprintName = "HTTPStatusCodesTests"
               ReferencedContainer = "container:HTTPStatusCodes.xcodeproj">
            </BuildableReference>
         </BuildActionEntry>
      </BuildActionEntries>
   </BuildAction>
   <TestAction
      buildConfiguration = "Debug"
      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
      codeCoverageEnabled = "YES"
      shouldUseLaunchSchemeArgsEnv = "YES">
      <Testables>
         <TestableReference
            skipped = "NO">
            <BuildableReference
               BuildableIdentifier = "primary"
               BlueprintIdentifier = "440D141C1A99DD1D00EEB60B"
               BuildableName = "HTTPStatusCodesTests.xctest"
               BlueprintName = "HTTPStatusCodesTests"
               ReferencedContainer = "container:HTTPStatusCodes.xcodeproj">
            </BuildableReference>
         </TestableReference>
      </Testables>
      <MacroExpansion>
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "440D14111A99DD1D00EEB60B"
            BuildableName = "HTTPStatusCodes.framework"
            BlueprintName = "HTTPStatusCodes"
            ReferencedContainer = "container:HTTPStatusCodes.xcodeproj">
         </BuildableReference>
      </MacroExpansion>
      <AdditionalOptions>
      </AdditionalOptions>
   </TestAction>
   <LaunchAction
      buildConfiguration = "Debug"
      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
      launchStyle = "0"
      useCustomWorkingDirectory = "NO"
      ignoresPersistentStateOnLaunch = "NO"
      debugDocumentVersioning = "YES"
      debugServiceExtension = "internal"
      allowLocationSimulation = "YES">
      <MacroExpansion>
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "440D14111A99DD1D00EEB60B"
            BuildableName = "HTTPStatusCodes.framework"
            BlueprintName = "HTTPStatusCodes"
            ReferencedContainer = "container:HTTPStatusCodes.xcodeproj">
         </BuildableReference>
      </MacroExpansion>
      <AdditionalOptions>
      </AdditionalOptions>
   </LaunchAction>
   <ProfileAction
      buildConfiguration = "Release"
      shouldUseLaunchSchemeArgsEnv = "YES"
      savedToolIdentifier = ""
      useCustomWorkingDirectory = "NO"
      debugDocumentVersioning = "YES">
   </ProfileAction>
   <AnalyzeAction
      buildConfiguration = "Debug">
   </AnalyzeAction>
   <ArchiveAction
      buildConfiguration = "Release"
      revealArchiveInOrganizer = "YES">
   </ArchiveAction>
</Scheme>


================================================
FILE: Tests/HTTPStatusCodesTests/HTTPStatusCodesTests.swift
================================================
//
//  HTTPStatusCodesTests.swift
//  HTTPStatusCodesTests
//
//  Created by Richard Hodgkins on 22/02/2015.
//  Copyright (c) 2015 Rich H. All rights reserved.
//

import Foundation

#if os(watchOS)
// No testing supported
@testable import HTTPStatusCodes
#else

import XCTest

#if DEBUG
@testable import HTTPStatusCodes
#else
import HTTPStatusCodes
#endif

private func responseUsingInt(_ statusCode: Int) -> HTTPURLResponse {
    return HTTPURLResponse(url: URL(string: "http://www.google.com")!, statusCode: statusCode, httpVersion: nil, headerFields: nil)!
}
private func responseUsingRawValue(_ statusCode: HTTPStatusCode) -> HTTPURLResponse {
    return HTTPURLResponse(url: URL(string: "http://www.google.com")!, statusCode: statusCode.rawValue, httpVersion: nil, headerFields: nil)!
}
private func responseUsingEnum(_ statusCode: HTTPStatusCode) -> HTTPURLResponse {
    return HTTPURLResponse(url: URL(string: "http://www.google.com")!, statusCode: statusCode, httpVersion: nil, headerFields: nil)!
}

final class HTTPStatusCodesTests: XCTestCase {
    
    func testNSHTTPURLResponseInitUsingInt() {
        XCTAssertEqual(responseUsingRawValue(.continue).statusCode, 100, "Incorrect status code")
        XCTAssertEqual(responseUsingRawValue(.ok).statusCode, 200, "Incorrect status code")
        XCTAssertEqual(responseUsingRawValue(.multipleChoices).statusCode, 300, "Incorrect status code")
        XCTAssertEqual(responseUsingRawValue(.badRequest).statusCode, 400, "Incorrect status code")
        XCTAssertEqual(responseUsingRawValue(.internalServerError).statusCode, 500, "Incorrect status code")
    }
    
    func testNSHTTPURLResponseInitUsingEnum() {
        XCTAssertEqual(responseUsingEnum(.continue).statusCode, 100, "Incorrect status code")
        XCTAssertEqual(responseUsingEnum(.ok).statusCode, 200, "Incorrect status code")
        XCTAssertEqual(responseUsingEnum(.multipleChoices).statusCode, 300, "Incorrect status code")
        XCTAssertEqual(responseUsingEnum(.badRequest).statusCode, 400, "Incorrect status code")
        XCTAssertEqual(responseUsingEnum(.internalServerError).statusCode, 500, "Incorrect status code")
    }
    
    func testComputedStatusCodeValueProperty() {
        XCTAssertEqual(responseUsingInt(100).statusCodeValue!, HTTPStatusCode.continue, "Incorrect status code")
        XCTAssertEqual(responseUsingInt(200).statusCodeValue!, HTTPStatusCode.ok, "Incorrect status code")
        XCTAssertEqual(responseUsingInt(300).statusCodeValue!, HTTPStatusCode.multipleChoices, "Incorrect status code")
        XCTAssertEqual(responseUsingInt(400).statusCodeValue!, HTTPStatusCode.badRequest, "Incorrect status code")
        XCTAssertEqual(responseUsingInt(500).statusCodeValue!, HTTPStatusCode.internalServerError, "Incorrect status code")
    }
    
#if DEBUG
    func testComputedStatusCodeEnumProperty() {
        XCTAssertEqual(responseUsingInt(100).statusCodeEnum, HTTPStatusCode.continue, "Incorrect status code")
        XCTAssertEqual(responseUsingInt(200).statusCodeEnum, HTTPStatusCode.ok, "Incorrect status code")
        XCTAssertEqual(responseUsingInt(300).statusCodeEnum, HTTPStatusCode.multipleChoices, "Incorrect status code")
        XCTAssertEqual(responseUsingInt(400).statusCodeEnum, HTTPStatusCode.badRequest, "Incorrect status code")
        XCTAssertEqual(responseUsingInt(500).statusCodeEnum, HTTPStatusCode.internalServerError, "Incorrect status code")
    }
#endif

    func testHTTPStatusCodeInit() {
        XCTAssertEqual(HTTPStatusCode(HTTPResponse: responseUsingInt(100))!, HTTPStatusCode.continue, "Incorrect status code")
        XCTAssertEqual(HTTPStatusCode(HTTPResponse: responseUsingInt(200))!, HTTPStatusCode.ok, "Incorrect status code")
        XCTAssertEqual(HTTPStatusCode(HTTPResponse: responseUsingInt(300))!, HTTPStatusCode.multipleChoices, "Incorrect status code")
        XCTAssertEqual(HTTPStatusCode(HTTPResponse: responseUsingInt(400))!, HTTPStatusCode.badRequest, "Incorrect status code")
        XCTAssertEqual(HTTPStatusCode(HTTPResponse: responseUsingInt(500))!, HTTPStatusCode.internalServerError, "Incorrect status code")
    }
    
    func testValidBooleanRangeChecks() {
        for i in 100...199 {
            if let statusCode = HTTPStatusCode(rawValue: i) {
                XCTAssertTrue(statusCode.isInformational, "Should be informational status code")
            }
        }
        for i in 200...299 {
            if let statusCode = HTTPStatusCode(rawValue: i) {
                XCTAssertTrue(statusCode.isSuccess, "Should be success status code")
            }
        }
        for i in 300...399 {
            if let statusCode = HTTPStatusCode(rawValue: i) {
                XCTAssertTrue(statusCode.isRedirection, "Should be redirection status code")
            }
        }
        for i in 400...499 {
            if let statusCode = HTTPStatusCode(rawValue: i) {
                XCTAssertTrue(statusCode.isClientError, "Should be client error status code")
            }
        }
        for i in 500...599 {
            if let statusCode = HTTPStatusCode(rawValue: i) {
                XCTAssertTrue(statusCode.isServerError, "Should be server error status code")
            }
        }
    }
    
    func testInvalidBooleanRangeChecks() {
        
        /// 0...1000 - `ignoredRange`
        func range(ignoringRange ignoredRange: ClosedRange<Int>) -> [Int] {
            return (0...1000).filter { !ignoredRange.contains($0) }
        }
        
        for i in range(ignoringRange: 100...199) {
            if let statusCode = HTTPStatusCode(rawValue: i) {
                XCTAssertFalse(statusCode.isInformational, "Should be not informational status code")
            }
        }
        for i in range(ignoringRange: 200...299) {
            if let statusCode = HTTPStatusCode(rawValue: i) {
                XCTAssertFalse(statusCode.isSuccess, "Should be not success status code")
            }
        }
        for i in range(ignoringRange: 300...399) {
            if let statusCode = HTTPStatusCode(rawValue: i) {
                XCTAssertFalse(statusCode.isRedirection, "Should be not redirection status code")
            }
        }
        for i in range(ignoringRange: 400...499) {
            if let statusCode = HTTPStatusCode(rawValue: i) {
                XCTAssertFalse(statusCode.isClientError, "Should be not client error status code")
            }
        }
        for i in range(ignoringRange: 500...599) {
            if let statusCode = HTTPStatusCode(rawValue: i) {
                XCTAssertFalse(statusCode.isServerError, "Should be not server error status code")
            }
        }
    }
    
    func testReasonPhrase() {
        XCTAssertEqual(HTTPStatusCode.continue.localizedReasonPhrase, HTTPURLResponse.localizedString(forStatusCode: HTTPStatusCode.continue.rawValue))
        
        XCTAssertEqual(HTTPStatusCode.ok.localizedReasonPhrase, HTTPURLResponse.localizedString(forStatusCode: HTTPStatusCode.ok.rawValue))
        
        XCTAssertEqual(HTTPStatusCode.multipleChoices.localizedReasonPhrase, HTTPURLResponse.localizedString(forStatusCode: HTTPStatusCode.multipleChoices.rawValue))
        
        XCTAssertEqual(HTTPStatusCode.badRequest.localizedReasonPhrase, HTTPURLResponse.localizedString(forStatusCode: HTTPStatusCode.badRequest.rawValue))
        
        XCTAssertEqual(HTTPStatusCode.internalServerError.localizedReasonPhrase, HTTPURLResponse.localizedString(forStatusCode: HTTPStatusCode.internalServerError.rawValue))
    }
    
    func testDescription() {
        XCTAssertEqual(String(describing: HTTPStatusCode.continue), "\(HTTPStatusCode.continue.rawValue) - \(HTTPStatusCode.continue.localizedReasonPhrase)")
        
        XCTAssertEqual(String(describing: HTTPStatusCode.ok), "\(HTTPStatusCode.ok.rawValue) - \(HTTPStatusCode.ok.localizedReasonPhrase)")
        
        XCTAssertEqual(String(describing: HTTPStatusCode.multipleChoices), "\(HTTPStatusCode.multipleChoices.rawValue) - \(HTTPStatusCode.multipleChoices.localizedReasonPhrase)")
        
        XCTAssertEqual(String(describing: HTTPStatusCode.badRequest), "\(HTTPStatusCode.badRequest.rawValue) - \(HTTPStatusCode.badRequest.localizedReasonPhrase)")
        
        XCTAssertEqual(String(describing: HTTPStatusCode.internalServerError), "\(HTTPStatusCode.internalServerError.rawValue) - \(HTTPStatusCode.internalServerError.localizedReasonPhrase)")
    }
    
    func testDebugDescription() {
        XCTAssertEqual(String(reflecting: HTTPStatusCode.continue), "HTTPStatusCode:\(HTTPStatusCode.continue.rawValue) - \(HTTPStatusCode.continue.localizedReasonPhrase)")
        
        XCTAssertEqual(String(reflecting: HTTPStatusCode.ok), "HTTPStatusCode:\(HTTPStatusCode.ok.rawValue) - \(HTTPStatusCode.ok.localizedReasonPhrase)")
        
        XCTAssertEqual(String(reflecting: HTTPStatusCode.multipleChoices), "HTTPStatusCode:\(HTTPStatusCode.multipleChoices.rawValue) - \(HTTPStatusCode.multipleChoices.localizedReasonPhrase)")
        
        XCTAssertEqual(String(reflecting: HTTPStatusCode.badRequest), "HTTPStatusCode:\(HTTPStatusCode.badRequest.rawValue) - \(HTTPStatusCode.badRequest.localizedReasonPhrase)")
        
        XCTAssertEqual(String(reflecting: HTTPStatusCode.internalServerError), "HTTPStatusCode:\(HTTPStatusCode.internalServerError.rawValue) - \(HTTPStatusCode.internalServerError.localizedReasonPhrase)")
    }
    
    func testBadStatusCodes() {
        XCTAssertTrue(HTTPStatusCode(rawValue: 1000) == nil)
        XCTAssertTrue(HTTPStatusCode(HTTPResponse: nil) == nil)
        XCTAssertTrue(HTTPStatusCode(HTTPResponse: responseUsingInt(1000)) == nil)
    }
}

#endif


================================================
FILE: Tests/HTTPStatusCodesTests/Info.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>CFBundleDevelopmentRegion</key>
	<string>en</string>
	<key>CFBundleExecutable</key>
	<string>$(EXECUTABLE_NAME)</string>
	<key>CFBundleIdentifier</key>
	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
	<key>CFBundleInfoDictionaryVersion</key>
	<string>6.0</string>
	<key>CFBundleName</key>
	<string>$(PRODUCT_NAME)</string>
	<key>CFBundlePackageType</key>
	<string>BNDL</string>
	<key>CFBundleShortVersionString</key>
	<string>$(HSC_VERSION)</string>
	<key>CFBundleSignature</key>
	<string>????</string>
	<key>CFBundleVersion</key>
	<string>1</string>
</dict>
</plist>


================================================
FILE: Tests/HTTPStatusCodesTests/ObjectiveCRegressionTests.m
================================================
//
//  ObjectiveCRegressionTests.m
//  ObjectiveCTests
//
//  Created by Richard Hodgkins on 09/06/2016.
//  Copyright © 2016 Rich H. All rights reserved.
//

@import Foundation;

#if TARGET_OS_WATCH
// No testing supported
#else

@import XCTest;
@import HTTPStatusCodes;

#import <HTTPStatusCodes/HTTPStatusCodes-Swift.h>

@interface ObjectiveCRegressionTests : XCTestCase

@end

// Create with copy and paste of the enum and use:
//    FIND: \s*\n?(?:\s*///\s*.+\n)+\s*case (.+) = ([0-9]+)
// REPLACE: XCTAssertEqual(HTTPStatusCode\1, \2);\n
@implementation ObjectiveCRegressionTests

-(void)testVersion2_0
{
    XCTAssertEqual(HTTPStatusCodeContinue, 100);
    XCTAssertEqual(HTTPStatusCodeSwitchingProtocols, 101);
    XCTAssertEqual(HTTPStatusCodeProcessing, 102);
    XCTAssertEqual(HTTPStatusCodeOK, 200);
    XCTAssertEqual(HTTPStatusCodeCreated, 201);
    XCTAssertEqual(HTTPStatusCodeAccepted, 202);
    XCTAssertEqual(HTTPStatusCodeNonAuthoritativeInformation, 203);
    XCTAssertEqual(HTTPStatusCodeNoContent, 204);
    XCTAssertEqual(HTTPStatusCodeResetContent, 205);
    XCTAssertEqual(HTTPStatusCodePartialContent, 206);
    XCTAssertEqual(HTTPStatusCodeMultiStatus, 207);
    XCTAssertEqual(HTTPStatusCodeAlreadyReported, 208);
    XCTAssertEqual(HTTPStatusCodeIMUsed, 226);
    XCTAssertEqual(HTTPStatusCodeMultipleChoices, 300);
    XCTAssertEqual(HTTPStatusCodeMovedPermanently, 301);
    XCTAssertEqual(HTTPStatusCodeFound, 302);
    XCTAssertEqual(HTTPStatusCodeSeeOther, 303);
    XCTAssertEqual(HTTPStatusCodeNotModified, 304);
    XCTAssertEqual(HTTPStatusCodeUseProxy, 305);
    XCTAssertEqual(HTTPStatusCodeTemporaryRedirect, 307);
    XCTAssertEqual(HTTPStatusCodePermanentRedirect, 308);
    XCTAssertEqual(HTTPStatusCodeBadRequest, 400);
    XCTAssertEqual(HTTPStatusCodeUnauthorized, 401);
    XCTAssertEqual(HTTPStatusCodePaymentRequired, 402);
    XCTAssertEqual(HTTPStatusCodeForbidden, 403);
    XCTAssertEqual(HTTPStatusCodeNotFound, 404);
    XCTAssertEqual(HTTPStatusCodeMethodNotAllowed, 405);
    XCTAssertEqual(HTTPStatusCodeNotAcceptable, 406);
    XCTAssertEqual(HTTPStatusCodeProxyAuthenticationRequired, 407);
    XCTAssertEqual(HTTPStatusCodeRequestTimeout, 408);
    XCTAssertEqual(HTTPStatusCodeConflict, 409);
    XCTAssertEqual(HTTPStatusCodeGone, 410);
    XCTAssertEqual(HTTPStatusCodeLengthRequired, 411);
    XCTAssertEqual(HTTPStatusCodePreconditionFailed, 412);
    XCTAssertEqual(HTTPStatusCodeRequestEntityTooLarge, 413);
    XCTAssertEqual(HTTPStatusCodeRequestURITooLong, 414);
    XCTAssertEqual(HTTPStatusCodeUnsupportedMediaType, 415);
    XCTAssertEqual(HTTPStatusCodeRequestedRangeNotSatisfiable, 416);
    XCTAssertEqual(HTTPStatusCodeExpectationFailed, 417);
    XCTAssertEqual(HTTPStatusCodeImATeapot, 418);
//    XCTAssertEqual(HTTPStatusCodeAuthenticationTimeout, 419);
    XCTAssertEqual(HTTPStatusCodeUnprocessableEntity, 422);
    XCTAssertEqual(HTTPStatusCodeLocked, 423);
    XCTAssertEqual(HTTPStatusCodeFailedDependency, 424);
    XCTAssertEqual(HTTPStatusCodeUpgradeRequired, 426);
    XCTAssertEqual(HTTPStatusCodePreconditionRequired, 428);
    XCTAssertEqual(HTTPStatusCodeTooManyRequests, 429);
    XCTAssertEqual(HTTPStatusCodeRequestHeaderFieldsTooLarge, 431);
    XCTAssertEqual(HTTPStatusCodeLoginTimeout, 440);
    XCTAssertEqual(HTTPStatusCodeNoResponse, 444);
    XCTAssertEqual(HTTPStatusCodeRetryWith, 449);
    XCTAssertEqual(HTTPStatusCodeUnavailableForLegalReasons, 451);
//    XCTAssertEqual(HTTPStatusCodeRequestHeaderTooLarge, 494);
    XCTAssertEqual(HTTPStatusCodeCertError, 495);
    XCTAssertEqual(HTTPStatusCodeNoCert, 496);
    XCTAssertEqual(HTTPStatusCodeHTTPToHTTPS, 497);
    XCTAssertEqual(HTTPStatusCodeTokenExpired, 498);
    XCTAssertEqual(HTTPStatusCodeClientClosedRequest, 499);
    XCTAssertEqual(HTTPStatusCodeInternalServerError, 500);
    XCTAssertEqual(HTTPStatusCodeNotImplemented, 501);
    XCTAssertEqual(HTTPStatusCodeBadGateway, 502);
    XCTAssertEqual(HTTPStatusCodeServiceUnavailable, 503);
    XCTAssertEqual(HTTPStatusCodeGatewayTimeout, 504);
    XCTAssertEqual(HTTPStatusCodeHTTPVersionNotSupported, 505);
    XCTAssertEqual(HTTPStatusCodeVariantAlsoNegotiates, 506);
    XCTAssertEqual(HTTPStatusCodeInsufficientStorage, 507);
    XCTAssertEqual(HTTPStatusCodeLoopDetected, 508);
    XCTAssertEqual(HTTPStatusCodeBandwidthLimitExceeded, 509);
    XCTAssertEqual(HTTPStatusCodeNotExtended, 510);
    XCTAssertEqual(HTTPStatusCodeNetworkAuthenticationRequired, 511);
}

-(void)testVersion3_0
{
    XCTAssertEqual(HTTPStatusCodeContinue, 100);
    XCTAssertEqual(HTTPStatusCodeSwitchingProtocols, 101);
    XCTAssertEqual(HTTPStatusCodeProcessing, 102);
//    XCTAssertEqual(HTTPStatusCodeCheckpoint, 103);
    XCTAssertEqual(HTTPStatusCodeOK, 200);
    XCTAssertEqual(HTTPStatusCodeCreated, 201);
    XCTAssertEqual(HTTPStatusCodeAccepted, 202);
    XCTAssertEqual(HTTPStatusCodeNonAuthoritativeInformation, 203);
    XCTAssertEqual(HTTPStatusCodeNoContent, 204);
    XCTAssertEqual(HTTPStatusCodeResetContent, 205);
    XCTAssertEqual(HTTPStatusCodePartialContent, 206);
    XCTAssertEqual(HTTPStatusCodeMultiStatus, 207);
    XCTAssertEqual(HTTPStatusCodeAlreadyReported, 208);
    XCTAssertEqual(HTTPStatusCodeIMUsed, 226);
    XCTAssertEqual(HTTPStatusCodeMultipleChoices, 300);
    XCTAssertEqual(HTTPStatusCodeMovedPermanently, 301);
    XCTAssertEqual(HTTPStatusCodeFound, 302);
    XCTAssertEqual(HTTPStatusCodeSeeOther, 303);
    XCTAssertEqual(HTTPStatusCodeNotModified, 304);
    XCTAssertEqual(HTTPStatusCodeUseProxy, 305);
    XCTAssertEqual(HTTPStatusCodeTemporaryRedirect, 307);
    XCTAssertEqual(HTTPStatusCodePermanentRedirect, 308);
    XCTAssertEqual(HTTPStatusCodeBadRequest, 400);
    XCTAssertEqual(HTTPStatusCodeUnauthorized, 401);
    XCTAssertEqual(HTTPStatusCodePaymentRequired, 402);
    XCTAssertEqual(HTTPStatusCodeForbidden, 403);
    XCTAssertEqual(HTTPStatusCodeNotFound, 404);
    XCTAssertEqual(HTTPStatusCodeMethodNotAllowed, 405);
    XCTAssertEqual(HTTPStatusCodeNotAcceptable, 406);
    XCTAssertEqual(HTTPStatusCodeProxyAuthenticationRequired, 407);
    XCTAssertEqual(HTTPStatusCodeRequestTimeout, 408);
    XCTAssertEqual(HTTPStatusCodeConflict, 409);
    XCTAssertEqual(HTTPStatusCodeGone, 410);
    XCTAssertEqual(HTTPStatusCodeLengthRequired, 411);
    XCTAssertEqual(HTTPStatusCodePreconditionFailed, 412);
    XCTAssertEqual(HTTPStatusCodePayloadTooLarge, 413);
    XCTAssertEqual(HTTPStatusCodeURITooLong, 414);
    XCTAssertEqual(HTTPStatusCodeUnsupportedMediaType, 415);
    XCTAssertEqual(HTTPStatusCodeRangeNotSatisfiable, 416);
    XCTAssertEqual(HTTPStatusCodeExpectationFailed, 417);
    XCTAssertEqual(HTTPStatusCodeImATeapot, 418);
    XCTAssertEqual(HTTPStatusCodeMisdirectedRequest, 421);
    XCTAssertEqual(HTTPStatusCodeUnprocessableEntity, 422);
    XCTAssertEqual(HTTPStatusCodeLocked, 423);
    XCTAssertEqual(HTTPStatusCodeFailedDependency, 424);
    XCTAssertEqual(HTTPStatusCodeUpgradeRequired, 426);
    XCTAssertEqual(HTTPStatusCodePreconditionRequired, 428);
    XCTAssertEqual(HTTPStatusCodeTooManyRequests, 429);
    XCTAssertEqual(HTTPStatusCodeRequestHeaderFieldsTooLarge, 431);
    XCTAssertEqual(HTTPStatusCodeIISLoginTimeout, 440);
    XCTAssertEqual(HTTPStatusCodeNginxNoResponse, 444);
    XCTAssertEqual(HTTPStatusCodeIISRetryWith, 449);
    XCTAssertEqual(HTTPStatusCodeBlockedByWindowsParentalControls, 450);
    XCTAssertEqual(HTTPStatusCodeUnavailableForLegalReasons, 451);
    XCTAssertEqual(HTTPStatusCodeNginxSSLCertificateError, 495);
    XCTAssertEqual(HTTPStatusCodeNginxSSLCertificateRequired, 496);
    XCTAssertEqual(HTTPStatusCodeNginxHTTPToHTTPS, 497);
    XCTAssertEqual(HTTPStatusCodeTokenExpired, 498);
    XCTAssertEqual(HTTPStatusCodeNginxClientClosedRequest, 499);
    XCTAssertEqual(HTTPStatusCodeInternalServerError, 500);
    XCTAssertEqual(HTTPStatusCodeNotImplemented, 501);
    XCTAssertEqual(HTTPStatusCodeBadGateway, 502);
    XCTAssertEqual(HTTPStatusCodeServiceUnavailable, 503);
    XCTAssertEqual(HTTPStatusCodeGatewayTimeout, 504);
    XCTAssertEqual(HTTPStatusCodeHTTPVersionNotSupported, 505);
    XCTAssertEqual(HTTPStatusCodeVariantAlsoNegotiates, 506);
    XCTAssertEqual(HTTPStatusCodeInsufficientStorage, 507);
    XCTAssertEqual(HTTPStatusCodeLoopDetected, 508);
    XCTAssertEqual(HTTPStatusCodeBandwidthLimitExceeded, 509);
    XCTAssertEqual(HTTPStatusCodeNotExtended, 510);
    XCTAssertEqual(HTTPStatusCodeNetworkAuthenticationRequired, 511);
    XCTAssertEqual(HTTPStatusCodeSiteIsFrozen, 530);
    XCTAssertEqual(HTTPStatusCodeNetworkConnectTimeoutError, 599);
    XCTAssertEqual(HTTPStatusCodeNetworkTimeoutError, 599);
}

-(void)testVersion3_2
{
    XCTAssertEqual(HTTPStatusCodeContinue, 100);
    XCTAssertEqual(HTTPStatusCodeSwitchingProtocols, 101);
    XCTAssertEqual(HTTPStatusCodeProcessing, 102);
    XCTAssertEqual(HTTPStatusCodeEarlyHints, 103);
    XCTAssertEqual(HTTPStatusCodeOK, 200);
    XCTAssertEqual(HTTPStatusCodeCreated, 201);
    XCTAssertEqual(HTTPStatusCodeAccepted, 202);
    XCTAssertEqual(HTTPStatusCodeNonAuthoritativeInformation, 203);
    XCTAssertEqual(HTTPStatusCodeNoContent, 204);
    XCTAssertEqual(HTTPStatusCodeResetContent, 205);
    XCTAssertEqual(HTTPStatusCodePartialContent, 206);
    XCTAssertEqual(HTTPStatusCodeMultiStatus, 207);
    XCTAssertEqual(HTTPStatusCodeAlreadyReported, 208);
    XCTAssertEqual(HTTPStatusCodeIMUsed, 226);
    XCTAssertEqual(HTTPStatusCodeMultipleChoices, 300);
    XCTAssertEqual(HTTPStatusCodeMovedPermanently, 301);
    XCTAssertEqual(HTTPStatusCodeFound, 302);
    XCTAssertEqual(HTTPStatusCodeSeeOther, 303);
    XCTAssertEqual(HTTPStatusCodeNotModified, 304);
    XCTAssertEqual(HTTPStatusCodeUseProxy, 305);
    XCTAssertEqual(HTTPStatusCodeTemporaryRedirect, 307);
    XCTAssertEqual(HTTPStatusCodePermanentRedirect, 308);
    XCTAssertEqual(HTTPStatusCodeBadRequest, 400);
    XCTAssertEqual(HTTPStatusCodeUnauthorized, 401);
    XCTAssertEqual(HTTPStatusCodePaymentRequired, 402);
    XCTAssertEqual(HTTPStatusCodeForbidden, 403);
    XCTAssertEqual(HTTPStatusCodeNotFound, 404);
    XCTAssertEqual(HTTPStatusCodeMethodNotAllowed, 405);
    XCTAssertEqual(HTTPStatusCodeNotAcceptable, 406);
    XCTAssertEqual(HTTPStatusCodeProxyAuthenticationRequired, 407);
    XCTAssertEqual(HTTPStatusCodeRequestTimeout, 408);
    XCTAssertEqual(HTTPStatusCodeConflict, 409);
    XCTAssertEqual(HTTPStatusCodeGone, 410);
    XCTAssertEqual(HTTPStatusCodeLengthRequired, 411);
    XCTAssertEqual(HTTPStatusCodePreconditionFailed, 412);
    XCTAssertEqual(HTTPStatusCodePayloadTooLarge, 413);
    XCTAssertEqual(HTTPStatusCodeURITooLong, 414);
    XCTAssertEqual(HTTPStatusCodeUnsupportedMediaType, 415);
    XCTAssertEqual(HTTPStatusCodeRangeNotSatisfiable, 416);
    XCTAssertEqual(HTTPStatusCodeExpectationFailed, 417);
    XCTAssertEqual(HTTPStatusCodeImATeapot, 418);
    XCTAssertEqual(HTTPStatusCodeMisdirectedRequest, 421);
    XCTAssertEqual(HTTPStatusCodeUnprocessableEntity, 422);
    XCTAssertEqual(HTTPStatusCodeLocked, 423);
    XCTAssertEqual(HTTPStatusCodeFailedDependency, 424);
    XCTAssertEqual(HTTPStatusCodeUpgradeRequired, 426);
    XCTAssertEqual(HTTPStatusCodePreconditionRequired, 428);
    XCTAssertEqual(HTTPStatusCodeTooManyRequests, 429);
    XCTAssertEqual(HTTPStatusCodeRequestHeaderFieldsTooLarge, 431);
    XCTAssertEqual(HTTPStatusCodeIISLoginTimeout, 440);
    XCTAssertEqual(HTTPStatusCodeNginxNoResponse, 444);
    XCTAssertEqual(HTTPStatusCodeIISRetryWith, 449);
    XCTAssertEqual(HTTPStatusCodeBlockedByWindowsParentalControls, 450);
    XCTAssertEqual(HTTPStatusCodeUnavailableForLegalReasons, 451);
    XCTAssertEqual(HTTPStatusCodeNginxSSLCertificateError, 495);
    XCTAssertEqual(HTTPStatusCodeNginxSSLCertificateRequired, 496);
    XCTAssertEqual(HTTPStatusCodeNginxHTTPToHTTPS, 497);
    XCTAssertEqual(HTTPStatusCodeTokenExpired, 498);
    XCTAssertEqual(HTTPStatusCodeNginxClientClosedRequest, 499);
    XCTAssertEqual(HTTPStatusCodeInternalServerError, 500);
    XCTAssertEqual(HTTPStatusCodeNotImplemented, 501);
    XCTAssertEqual(HTTPStatusCodeBadGateway, 502);
    XCTAssertEqual(HTTPStatusCodeServiceUnavailable, 503);
    XCTAssertEqual(HTTPStatusCodeGatewayTimeout, 504);
    XCTAssertEqual(HTTPStatusCodeHTTPVersionNotSupported, 505);
    XCTAssertEqual(HTTPStatusCodeVariantAlsoNegotiates, 506);
    XCTAssertEqual(HTTPStatusCodeInsufficientStorage, 507);
    XCTAssertEqual(HTTPStatusCodeLoopDetected, 508);
    XCTAssertEqual(HTTPStatusCodeBandwidthLimitExceeded, 509);
    XCTAssertEqual(HTTPStatusCodeNotExtended, 510);
    XCTAssertEqual(HTTPStatusCodeNetworkAuthenticationRequired, 511);
    XCTAssertEqual(HTTPStatusCodeSiteIsFrozen, 530);
    XCTAssertEqual(HTTPStatusCodeNetworkConnectTimeoutError, 599);
}

-(void)testVersion3_3
{
    XCTAssertEqual(HTTPStatusCodeContinue, 100);
    XCTAssertEqual(HTTPStatusCodeSwitchingProtocols, 101);
    XCTAssertEqual(HTTPStatusCodeProcessing, 102);
    XCTAssertEqual(HTTPStatusCodeEarlyHints, 103);
    XCTAssertEqual(HTTPStatusCodeOK, 200);
    XCTAssertEqual(HTTPStatusCodeCreated, 201);
    XCTAssertEqual(HTTPStatusCodeAccepted, 202);
    XCTAssertEqual(HTTPStatusCodeNonAuthoritativeInformation, 203);
    XCTAssertEqual(HTTPStatusCodeNoContent, 204);
    XCTAssertEqual(HTTPStatusCodeResetContent, 205);
    XCTAssertEqual(HTTPStatusCodePartialContent, 206);
    XCTAssertEqual(HTTPStatusCodeMultiStatus, 207);
    XCTAssertEqual(HTTPStatusCodeAlreadyReported, 208);
    XCTAssertEqual(HTTPStatusCodeIMUsed, 226);
    XCTAssertEqual(HTTPStatusCodeMultipleChoices, 300);
    XCTAssertEqual(HTTPStatusCodeMovedPermanently, 301);
    XCTAssertEqual(HTTPStatusCodeFound, 302);
    XCTAssertEqual(HTTPStatusCodeSeeOther, 303);
    XCTAssertEqual(HTTPStatusCodeNotModified, 304);
    XCTAssertEqual(HTTPStatusCodeUseProxy, 305);
    XCTAssertEqual(HTTPStatusCodeTemporaryRedirect, 307);
    XCTAssertEqual(HTTPStatusCodePermanentRedirect, 308);
    XCTAssertEqual(HTTPStatusCodeBadRequest, 400);
    XCTAssertEqual(HTTPStatusCodeUnauthorized, 401);
    XCTAssertEqual(HTTPStatusCodePaymentRequired, 402);
    XCTAssertEqual(HTTPStatusCodeForbidden, 403);
    XCTAssertEqual(HTTPStatusCodeNotFound, 404);
    XCTAssertEqual(HTTPStatusCodeMethodNotAllowed, 405);
    XCTAssertEqual(HTTPStatusCodeNotAcceptable, 406);
    XCTAssertEqual(HTTPStatusCodeProxyAuthenticationRequired, 407);
    XCTAssertEqual(HTTPStatusCodeRequestTimeout, 408);
    XCTAssertEqual(HTTPStatusCodeConflict, 409);
    XCTAssertEqual(HTTPStatusCodeGone, 410);
    XCTAssertEqual(HTTPStatusCodeLengthRequired, 411);
    XCTAssertEqual(HTTPStatusCodePreconditionFailed, 412);
    XCTAssertEqual(HTTPStatusCodePayloadTooLarge, 413);
    XCTAssertEqual(HTTPStatusCodeURITooLong, 414);
    XCTAssertEqual(HTTPStatusCodeUnsupportedMediaType, 415);
    XCTAssertEqual(HTTPStatusCodeRangeNotSatisfiable, 416);
    XCTAssertEqual(HTTPStatusCodeExpectationFailed, 417);
    XCTAssertEqual(HTTPStatusCodeImATeapot, 418);
    XCTAssertEqual(HTTPStatusCodeMisdirectedRequest, 421);
    XCTAssertEqual(HTTPStatusCodeUnprocessableEntity, 422);
    XCTAssertEqual(HTTPStatusCodeLocked, 423);
    XCTAssertEqual(HTTPStatusCodeFailedDependency, 424);
    XCTAssertEqual(HTTPStatusCodeTooEarly, 425);
    XCTAssertEqual(HTTPStatusCodeUpgradeRequired, 426);
    XCTAssertEqual(HTTPStatusCodePreconditionRequired, 428);
    XCTAssertEqual(HTTPStatusCodeTooManyRequests, 429);
    XCTAssertEqual(HTTPStatusCodeRequestHeaderFieldsTooLarge, 431);
    XCTAssertEqual(HTTPStatusCodeIISLoginTimeout, 440);
    XCTAssertEqual(HTTPStatusCodeNginxNoResponse, 444);
    XCTAssertEqual(HTTPStatusCodeIISRetryWith, 449);
    XCTAssertEqual(HTTPStatusCodeBlockedByWindowsParentalControls, 450);
    XCTAssertEqual(HTTPStatusCodeUnavailableForLegalReasons, 451);
    XCTAssertEqual(HTTPStatusCodeNginxSSLCertificateError, 495);
    XCTAssertEqual(HTTPStatusCodeNginxSSLCertificateRequired, 496);
    XCTAssertEqual(HTTPStatusCodeNginxHTTPToHTTPS, 497);
    XCTAssertEqual(HTTPStatusCodeTokenExpired, 498);
    XCTAssertEqual(HTTPStatusCodeNginxClientClosedRequest, 499);
    XCTAssertEqual(HTTPStatusCodeInternalServerError, 500);
    XCTAssertEqual(HTTPStatusCodeNotImplemented, 501);
    XCTAssertEqual(HTTPStatusCodeBadGateway, 502);
    XCTAssertEqual(HTTPStatusCodeServiceUnavailable, 503);
    XCTAssertEqual(HTTPStatusCodeGatewayTimeout, 504);
    XCTAssertEqual(HTTPStatusCodeHTTPVersionNotSupported, 505);
    XCTAssertEqual(HTTPStatusCodeVariantAlsoNegotiates, 506);
    XCTAssertEqual(HTTPStatusCodeInsufficientStorage, 507);
    XCTAssertEqual(HTTPStatusCodeLoopDetected, 508);
    XCTAssertEqual(HTTPStatusCodeBandwidthLimitExceeded, 509);
    XCTAssertEqual(HTTPStatusCodeNotExtended, 510);
    XCTAssertEqual(HTTPStatusCodeNetworkAuthenticationRequired, 511);
    XCTAssertEqual(HTTPStatusCodeSiteIsFrozen, 530);
    XCTAssertEqual(HTTPStatusCodeNetworkConnectTimeoutError, 599);
}

@end
#endif


================================================
FILE: Tests/HTTPStatusCodesTests/ObjectiveCTests.m
================================================
//
//  ObjectiveCTests.m
//  HTTPStatusCodes
//
//  Created by Richard Hodgkins on 12/10/2016.
//  Copyright © 2016 Rich H. All rights reserved.
//

@import Foundation;

#if TARGET_OS_WATCH
// No testing supported
#else

@import XCTest;
@import HTTPStatusCodes;

#import <HTTPStatusCodes/HTTPStatusCodes-Swift.h>

static NSHTTPURLResponse *_Nullable response(HTTPStatusCode statusCode) {
    return [[NSHTTPURLResponse alloc] initWithURL:[NSURL URLWithString:@"http://www.google.com"] statusCodeValue:statusCode HTTPVersion:nil headerFields:nil];
}

@interface ObjectiveCTests : XCTestCase

@end

@implementation ObjectiveCTests

-(void)testComputedStatusCodeValueProperty
{
    XCTAssertEqual(response(HTTPStatusCodeContinue).statusCodeValue, HTTPStatusCodeContinue, @"Incorrect status code");
    XCTAssertEqual(response(HTTPStatusCodeOK).statusCodeValue, HTTPStatusCodeOK, @"Incorrect status code");
    XCTAssertEqual(response(HTTPStatusCodeMultipleChoices).statusCodeValue, HTTPStatusCodeMultipleChoices, @"Incorrect status code");
    XCTAssertEqual(response(HTTPStatusCodeBadRequest).statusCodeValue, HTTPStatusCodeBadRequest, @"Incorrect status code");
    XCTAssertEqual(response(HTTPStatusCodeInternalServerError).statusCodeValue, HTTPStatusCodeInternalServerError, @"Incorrect status code");
}

-(void)testNSHTTPURLResponseInit
{
    XCTAssertEqual([[NSHTTPURLResponse alloc] initWithURL:[NSURL URLWithString:@"http://www.google.com"] statusCodeValue:HTTPStatusCodeOK HTTPVersion:nil headerFields:nil].statusCode, 200);
    XCTAssertEqual([[NSHTTPURLResponse alloc] initWithURL:[NSURL URLWithString:@"http://www.google.com"] statusCodeValue:HTTPStatusCodeOK HTTPVersion:nil headerFields:nil].statusCode, HTTPStatusCodeOK);
    XCTAssertEqual([[NSHTTPURLResponse alloc] initWithURL:[NSURL URLWithString:@"http://www.google.com"] statusCodeValue:HTTPStatusCodeOK HTTPVersion:nil headerFields:nil].statusCodeValue, HTTPStatusCodeOK);
}

@end
#endif


================================================
FILE: Tests/HTTPStatusCodesTests/RegressionTests.swift
================================================
//
//  RegressionTests.swift
//  HTTPStatusCodes
//
//  Created by Richard Hodgkins on 07/06/2016.
//  Copyright © 2016 Rich H. All rights reserved.
//

import Foundation

#if os(watchOS)
// No testing supported
@testable import HTTPStatusCodes
#else
    
import XCTest
    
#if DEBUG
@testable import HTTPStatusCodes
#else
import HTTPStatusCodes
#endif

extension HTTPStatusCode: ExpressibleByIntegerLiteral {
    public init(integerLiteral value: Int) {
        guard let _ = HTTPStatusCode(rawValue: value) else {
            fatalError("Invalid status code: \(value)")
        }
        self.init(rawValue: value)!
    }
}
    
// Create with copy and paste of the enum and use:
//    FIND: \s*\n?(?:\s*///\s*.+\n)+\s*case (.+) = ([0-9]+)
// REPLACE: XCTAssertEqual(HTTPStatusCode.\1, \2)\n
final class RegressionTests: XCTestCase {

    func testVersion2_0() {
        XCTAssertEqual(HTTPStatusCode.continue, 100)
        XCTAssertEqual(HTTPStatusCode.switchingProtocols, 101)
        XCTAssertEqual(HTTPStatusCode.processing, 102)
        XCTAssertEqual(HTTPStatusCode.ok, 200)
        XCTAssertEqual(HTTPStatusCode.created, 201)
        XCTAssertEqual(HTTPStatusCode.accepted, 202)
        XCTAssertEqual(HTTPStatusCode.nonAuthoritativeInformation, 203)
        XCTAssertEqual(HTTPStatusCode.noContent, 204)
        XCTAssertEqual(HTTPStatusCode.resetContent, 205)
        XCTAssertEqual(HTTPStatusCode.partialContent, 206)
        XCTAssertEqual(HTTPStatusCode.multiStatus, 207)
        XCTAssertEqual(HTTPStatusCode.alreadyReported, 208)
        XCTAssertEqual(HTTPStatusCode.imUsed, 226)
        XCTAssertEqual(HTTPStatusCode.multipleChoices, 300)
        XCTAssertEqual(HTTPStatusCode.movedPermanently, 301)
        XCTAssertEqual(HTTPStatusCode.found, 302)
        XCTAssertEqual(HTTPStatusCode.seeOther, 303)
        XCTAssertEqual(HTTPStatusCode.notModified, 304)
        XCTAssertEqual(HTTPStatusCode.useProxy, 305)
        XCTAssertEqual(HTTPStatusCode.temporaryRedirect, 307)
        XCTAssertEqual(HTTPStatusCode.permanentRedirect, 308)
        XCTAssertEqual(HTTPStatusCode.badRequest, 400)
        XCTAssertEqual(HTTPStatusCode.unauthorized, 401)
        XCTAssertEqual(HTTPStatusCode.paymentRequired, 402)
        XCTAssertEqual(HTTPStatusCode.forbidden, 403)
        XCTAssertEqual(HTTPStatusCode.notFound, 404)
        XCTAssertEqual(HTTPStatusCode.methodNotAllowed, 405)
        XCTAssertEqual(HTTPStatusCode.notAcceptable, 406)
        XCTAssertEqual(HTTPStatusCode.proxyAuthenticationRequired, 407)
        XCTAssertEqual(HTTPStatusCode.requestTimeout, 408)
        XCTAssertEqual(HTTPStatusCode.conflict, 409)
        XCTAssertEqual(HTTPStatusCode.gone, 410)
        XCTAssertEqual(HTTPStatusCode.lengthRequired, 411)
        XCTAssertEqual(HTTPStatusCode.preconditionFailed, 412)
        XCTAssertEqual(HTTPStatusCode.requestEntityTooLarge, 413)
        XCTAssertEqual(HTTPStatusCode.requestURITooLong, 414)
        XCTAssertEqual(HTTPStatusCode.unsupportedMediaType, 415)
        XCTAssertEqual(HTTPStatusCode.requestedRangeNotSatisfiable, 416)
        XCTAssertEqual(HTTPStatusCode.expectationFailed, 417)
        XCTAssertEqual(HTTPStatusCode.imATeapot, 418)
//        XCTAssertEqual(HTTPStatusCode.authenticationTimeout, 419)
        XCTAssertEqual(HTTPStatusCode.unprocessableEntity, 422)
        XCTAssertEqual(HTTPStatusCode.locked, 423)
        XCTAssertEqual(HTTPStatusCode.failedDependency, 424)
        XCTAssertEqual(HTTPStatusCode.upgradeRequired, 426)
        XCTAssertEqual(HTTPStatusCode.preconditionRequired, 428)
        XCTAssertEqual(HTTPStatusCode.tooManyRequests, 429)
        XCTAssertEqual(HTTPStatusCode.requestHeaderFieldsTooLarge, 431)
        XCTAssertEqual(HTTPStatusCode.loginTimeout, 440)
        XCTAssertEqual(HTTPStatusCode.noResponse, 444)
        XCTAssertEqual(HTTPStatusCode.retryWith, 449)
        XCTAssertEqual(HTTPStatusCode.unavailableForLegalReasons, 451)
//        XCTAssertEqual(HTTPStatusCode.requestHeaderTooLarge, 494)
        XCTAssertEqual(HTTPStatusCode.certError, 495)
        XCTAssertEqual(HTTPStatusCode.noCert, 496)
        XCTAssertEqual(HTTPStatusCode.httpToHTTPS, 497)
        XCTAssertEqual(HTTPStatusCode.tokenExpired, 498)
        XCTAssertEqual(HTTPStatusCode.clientClosedRequest, 499)
        XCTAssertEqual(HTTPStatusCode.internalServerError, 500)
        XCTAssertEqual(HTTPStatusCode.notImplemented, 501)
        XCTAssertEqual(HTTPStatusCode.badGateway, 502)
        XCTAssertEqual(HTTPStatusCode.serviceUnavailable, 503)
        XCTAssertEqual(HTTPStatusCode.gatewayTimeout, 504)
        XCTAssertEqual(HTTPStatusCode.httpVersionNotSupported, 505)
        XCTAssertEqual(HTTPStatusCode.variantAlsoNegotiates, 506)
        XCTAssertEqual(HTTPStatusCode.insufficientStorage, 507)
        XCTAssertEqual(HTTPStatusCode.loopDetected, 508)
        XCTAssertEqual(HTTPStatusCode.bandwidthLimitExceeded, 509)
        XCTAssertEqual(HTTPStatusCode.notExtended, 510)
        XCTAssertEqual(HTTPStatusCode.networkAuthenticationRequired, 511)
        
        XCTAssertEqual(HTTPURLResponse(url: URL(string: "http://www.google.com")!, statusCode: .ok, HTTPVersion: nil, headerFields: nil)!.statusCodeValue, .ok)
    }
    
    func testVersion3_0() {
        XCTAssertEqual(HTTPStatusCode.continue, 100)
        XCTAssertEqual(HTTPStatusCode.switchingProtocols, 101)
        XCTAssertEqual(HTTPStatusCode.processing, 102)
//        XCTAssertEqual(HTTPStatusCode.checkpoint, 103)
        XCTAssertEqual(HTTPStatusCode.ok, 200)
        XCTAssertEqual(HTTPStatusCode.created, 201)
        XCTAssertEqual(HTTPStatusCode.accepted, 202)
        XCTAssertEqual(HTTPStatusCode.nonAuthoritativeInformation, 203)
        XCTAssertEqual(HTTPStatusCode.noContent, 204)
        XCTAssertEqual(HTTPStatusCode.resetContent, 205)
        XCTAssertEqual(HTTPStatusCode.partialContent, 206)
        XCTAssertEqual(HTTPStatusCode.multiStatus, 207)
        XCTAssertEqual(HTTPStatusCode.alreadyReported, 208)
        XCTAssertEqual(HTTPStatusCode.imUsed, 226)
        XCTAssertEqual(HTTPStatusCode.multipleChoices, 300)
        XCTAssertEqual(HTTPStatusCode.movedPermanently, 301)
        XCTAssertEqual(HTTPStatusCode.found, 302)
        XCTAssertEqual(HTTPStatusCode.seeOther, 303)
        XCTAssertEqual(HTTPStatusCode.notModified, 304)
        XCTAssertEqual(HTTPStatusCode.useProxy, 305)
        XCTAssertEqual(HTTPStatusCode.temporaryRedirect, 307)
        XCTAssertEqual(HTTPStatusCode.permanentRedirect, 308)
        XCTAssertEqual(HTTPStatusCode.badRequest, 400)
        XCTAssertEqual(HTTPStatusCode.unauthorized, 401)
        XCTAssertEqual(HTTPStatusCode.paymentRequired, 402)
        XCTAssertEqual(HTTPStatusCode.forbidden, 403)
        XCTAssertEqual(HTTPStatusCode.notFound, 404)
        XCTAssertEqual(HTTPStatusCode.methodNotAllowed, 405)
        XCTAssertEqual(HTTPStatusCode.notAcceptable, 406)
        XCTAssertEqual(HTTPStatusCode.proxyAuthenticationRequired, 407)
        XCTAssertEqual(HTTPStatusCode.requestTimeout, 408)
        XCTAssertEqual(HTTPStatusCode.conflict, 409)
        XCTAssertEqual(HTTPStatusCode.gone, 410)
        XCTAssertEqual(HTTPStatusCode.lengthRequired, 411)
        XCTAssertEqual(HTTPStatusCode.preconditionFailed, 412)
        XCTAssertEqual(HTTPStatusCode.payloadTooLarge, 413)
        XCTAssertEqual(HTTPStatusCode.uriTooLong, 414)
        XCTAssertEqual(HTTPStatusCode.unsupportedMediaType, 415)
        XCTAssertEqual(HTTPStatusCode.rangeNotSatisfiable, 416)
        XCTAssertEqual(HTTPStatusCode.expectationFailed, 417)
        XCTAssertEqual(HTTPStatusCode.imATeapot, 418)
        XCTAssertEqual(HTTPStatusCode.misdirectedRequest, 421)
        XCTAssertEqual(HTTPStatusCode.unprocessableEntity, 422)
        XCTAssertEqual(HTTPStatusCode.locked, 423)
        XCTAssertEqual(HTTPStatusCode.failedDependency, 424)
        XCTAssertEqual(HTTPStatusCode.upgradeRequired, 426)
        XCTAssertEqual(HTTPStatusCode.preconditionRequired, 428)
        XCTAssertEqual(HTTPStatusCode.tooManyRequests, 429)
        XCTAssertEqual(HTTPStatusCode.requestHeaderFieldsTooLarge, 431)
        XCTAssertEqual(HTTPStatusCode.iisLoginTimeout, 440)
        XCTAssertEqual(HTTPStatusCode.nginxNoResponse, 444)
        XCTAssertEqual(HTTPStatusCode.iisRetryWith, 449)
        XCTAssertEqual(HTTPStatusCode.blockedByWindowsParentalControls, 450)
        XCTAssertEqual(HTTPStatusCode.unavailableForLegalReasons, 451)
        XCTAssertEqual(HTTPStatusCode.nginxSSLCertificateError, 495)
        XCTAssertEqual(HTTPStatusCode.nginxSSLCertificateRequired, 496)
        XCTAssertEqual(HTTPStatusCode.nginxHTTPToHTTPS, 497)
        XCTAssertEqual(HTTPStatusCode.tokenExpired, 498)
        XCTAssertEqual(HTTPStatusCode.nginxClientClosedRequest, 499)
        XCTAssertEqual(HTTPStatusCode.internalServerError, 500)
        XCTAssertEqual(HTTPStatusCode.notImplemented, 501)
        XCTAssertEqual(HTTPStatusCode.badGateway, 502)
        XCTAssertEqual(HTTPStatusCode.serviceUnavailable, 503)
        XCTAssertEqual(HTTPStatusCode.gatewayTimeout, 504)
        XCTAssertEqual(HTTPStatusCode.httpVersionNotSupported, 505)
        XCTAssertEqual(HTTPStatusCode.variantAlsoNegotiates, 506)
        XCTAssertEqual(HTTPStatusCode.insufficientStorage, 507)
        XCTAssertEqual(HTTPStatusCode.loopDetected, 508)
        XCTAssertEqual(HTTPStatusCode.bandwidthLimitExceeded, 509)
        XCTAssertEqual(HTTPStatusCode.notExtended, 510)
        XCTAssertEqual(HTTPStatusCode.networkAuthenticationRequired, 511)
        XCTAssertEqual(HTTPStatusCode.siteIsFrozen, 530)
        XCTAssertEqual(HTTPStatusCode.networkConnectTimeoutError, 599)
        XCTAssertEqual(HTTPStatusCode.networkTimeoutError, 599)
        
        XCTAssertEqual(HTTPURLResponse(url: URL(string: "http://www.google.com")!, statusCode: .ok, httpVersion: nil, headerFields: nil)!.statusCodeValue, .ok)
    }
    
    func testVersion3_2() {
        XCTAssertEqual(HTTPStatusCode.continue, 100)
        XCTAssertEqual(HTTPStatusCode.switchingProtocols, 101)
        XCTAssertEqual(HTTPStatusCode.processing, 102)
        XCTAssertEqual(HTTPStatusCode.earlyHints, 103)
        XCTAssertEqual(HTTPStatusCode.ok, 200)
        XCTAssertEqual(HTTPStatusCode.created, 201)
        XCTAssertEqual(HTTPStatusCode.accepted, 202)
        XCTAssertEqual(HTTPStatusCode.nonAuthoritativeInformation, 203)
        XCTAssertEqual(HTTPStatusCode.noContent, 204)
        XCTAssertEqual(HTTPStatusCode.resetContent, 205)
        XCTAssertEqual(HTTPStatusCode.partialContent, 206)
        XCTAssertEqual(HTTPStatusCode.multiStatus, 207)
        XCTAssertEqual(HTTPStatusCode.alreadyReported, 208)
        XCTAssertEqual(HTTPStatusCode.imUsed, 226)
        XCTAssertEqual(HTTPStatusCode.multipleChoices, 300)
        XCTAssertEqual(HTTPStatusCode.movedPermanently, 301)
        XCTAssertEqual(HTTPStatusCode.found, 302)
        XCTAssertEqual(HTTPStatusCode.seeOther, 303)
        XCTAssertEqual(HTTPStatusCode.notModified, 304)
        XCTAssertEqual(HTTPStatusCode.useProxy, 305)
        XCTAssertEqual(HTTPStatusCode.temporaryRedirect, 307)
        XCTAssertEqual(HTTPStatusCode.permanentRedirect, 308)
        XCTAssertEqual(HTTPStatusCode.badRequest, 400)
        XCTAssertEqual(HTTPStatusCode.unauthorized, 401)
        XCTAssertEqual(HTTPStatusCode.paymentRequired, 402)
        XCTAssertEqual(HTTPStatusCode.forbidden, 403)
        XCTAssertEqual(HTTPStatusCode.notFound, 404)
        XCTAssertEqual(HTTPStatusCode.methodNotAllowed, 405)
        XCTAssertEqual(HTTPStatusCode.notAcceptable, 406)
        XCTAssertEqual(HTTPStatusCode.proxyAuthenticationRequired, 407)
        XCTAssertEqual(HTTPStatusCode.requestTimeout, 408)
        XCTAssertEqual(HTTPStatusCode.conflict, 409)
        XCTAssertEqual(HTTPStatusCode.gone, 410)
        XCTAssertEqual(HTTPStatusCode.lengthRequired, 411)
        XCTAssertEqual(HTTPStatusCode.preconditionFailed, 412)
        XCTAssertEqual(HTTPStatusCode.payloadTooLarge, 413)
        XCTAssertEqual(HTTPStatusCode.uriTooLong, 414)
        XCTAssertEqual(HTTPStatusCode.unsupportedMediaType, 415)
        XCTAssertEqual(HTTPStatusCode.rangeNotSatisfiable, 416)
        XCTAssertEqual(HTTPStatusCode.expectationFailed, 417)
        XCTAssertEqual(HTTPStatusCode.imATeapot, 418)
        XCTAssertEqual(HTTPStatusCode.misdirectedRequest, 421)
        XCTAssertEqual(HTTPStatusCode.unprocessableEntity, 422)
        XCTAssertEqual(HTTPStatusCode.locked, 423)
        XCTAssertEqual(HTTPStatusCode.failedDependency, 424)
        XCTAssertEqual(HTTPStatusCode.upgradeRequired, 426)
        XCTAssertEqual(HTTPStatusCode.preconditionRequired, 428)
        XCTAssertEqual(HTTPStatusCode.tooManyRequests, 429)
        XCTAssertEqual(HTTPStatusCode.requestHeaderFieldsTooLarge, 431)
        XCTAssertEqual(HTTPStatusCode.iisLoginTimeout, 440)
        XCTAssertEqual(HTTPStatusCode.nginxNoResponse, 444)
        XCTAssertEqual(HTTPStatusCode.iisRetryWith, 449)
        XCTAssertEqual(HTTPStatusCode.blockedByWindowsParentalControls, 450)
        XCTAssertEqual(HTTPStatusCode.unavailableForLegalReasons, 451)
        XCTAssertEqual(HTTPStatusCode.nginxSSLCertificateError, 495)
        XCTAssertEqual(HTTPStatusCode.nginxSSLCertificateRequired, 496)
        XCTAssertEqual(HTTPStatusCode.nginxHTTPToHTTPS, 497)
        XCTAssertEqual(HTTPStatusCode.tokenExpired, 498)
        XCTAssertEqual(HTTPStatusCode.nginxClientClosedRequest, 499)
        XCTAssertEqual(HTTPStatusCode.internalServerError, 500)
        XCTAssertEqual(HTTPStatusCode.notImplemented, 501)
        XCTAssertEqual(HTTPStatusCode.badGateway, 502)
        XCTAssertEqual(HTTPStatusCode.serviceUnavailable, 503)
        XCTAssertEqual(HTTPStatusCode.gatewayTimeout, 504)
        XCTAssertEqual(HTTPStatusCode.httpVersionNotSupported, 505)
        XCTAssertEqual(HTTPStatusCode.variantAlsoNegotiates, 506)
        XCTAssertEqual(HTTPStatusCode.insufficientStorage, 507)
        XCTAssertEqual(HTTPStatusCode.loopDetected, 508)
        XCTAssertEqual(HTTPStatusCode.bandwidthLimitExceeded, 509)
        XCTAssertEqual(HTTPStatusCode.notExtended, 510)
        XCTAssertEqual(HTTPStatusCode.networkAuthenticationRequired, 511)
        XCTAssertEqual(HTTPStatusCode.siteIsFrozen, 530)
        XCTAssertEqual(HTTPStatusCode.networkConnectTimeoutError, 599)
        
        XCTAssertEqual(HTTPURLResponse(url: URL(string: "http://www.google.com")!, statusCode: .ok, httpVersion: nil, headerFields: nil)!.statusCodeValue, .ok)
    }
    
    func testVersion3_3() {
        XCTAssertEqual(HTTPStatusCode.continue, 100)
        XCTAssertEqual(HTTPStatusCode.switchingProtocols, 101)
        XCTAssertEqual(HTTPStatusCode.processing, 102)
        XCTAssertEqual(HTTPStatusCode.earlyHints, 103)
        XCTAssertEqual(HTTPStatusCode.ok, 200)
        XCTAssertEqual(HTTPStatusCode.created, 201)
        XCTAssertEqual(HTTPStatusCode.accepted, 202)
        XCTAssertEqual(HTTPStatusCode.nonAuthoritativeInformation, 203)
        XCTAssertEqual(HTTPStatusCode.noContent, 204)
        XCTAssertEqual(HTTPStatusCode.resetContent, 205)
        XCTAssertEqual(HTTPStatusCode.partialContent, 206)
        XCTAssertEqual(HTTPStatusCode.multiStatus, 207)
        XCTAssertEqual(HTTPStatusCode.alreadyReported, 208)
        XCTAssertEqual(HTTPStatusCode.imUsed, 226)
        XCTAssertEqual(HTTPStatusCode.multipleChoices, 300)
        XCTAssertEqual(HTTPStatusCode.movedPermanently, 301)
        XCTAssertEqual(HTTPStatusCode.found, 302)
        XCTAssertEqual(HTTPStatusCode.seeOther, 303)
        XCTAssertEqual(HTTPStatusCode.notModified, 304)
        XCTAssertEqual(HTTPStatusCode.useProxy, 305)
        XCTAssertEqual(HTTPStatusCode.temporaryRedirect, 307)
        XCTAssertEqual(HTTPStatusCode.permanentRedirect, 308)
        XCTAssertEqual(HTTPStatusCode.badRequest, 400)
        XCTAssertEqual(HTTPStatusCode.unauthorized, 401)
        XCTAssertEqual(HTTPStatusCode.paymentRequired, 402)
        XCTAssertEqual(HTTPStatusCode.forbidden, 403)
        XCTAssertEqual(HTTPStatusCode.notFound, 404)
        XCTAssertEqual(HTTPStatusCode.methodNotAllowed, 405)
        XCTAssertEqual(HTTPStatusCode.notAcceptable, 406)
        XCTAssertEqual(HTTPStatusCode.proxyAuthenticationRequired, 407)
        XCTAssertEqual(HTTPStatusCode.requestTimeout, 408)
        XCTAssertEqual(HTTPStatusCode.conflict, 409)
        XCTAssertEqual(HTTPStatusCode.gone, 410)
        XCTAssertEqual(HTTPStatusCode.lengthRequired, 411)
        XCTAssertEqual(HTTPStatusCode.preconditionFailed, 412)
        XCTAssertEqual(HTTPStatusCode.payloadTooLarge, 413)
        XCTAssertEqual(HTTPStatusCode.uriTooLong, 414)
        XCTAssertEqual(HTTPStatusCode.unsupportedMediaType, 415)
        XCTAssertEqual(HTTPStatusCode.rangeNotSatisfiable, 416)
        XCTAssertEqual(HTTPStatusCode.expectationFailed, 417)
        XCTAssertEqual(HTTPStatusCode.imATeapot, 418)
        XCTAssertEqual(HTTPStatusCode.misdirectedRequest, 421)
        XCTAssertEqual(HTTPStatusCode.unprocessableEntity, 422)
        XCTAssertEqual(HTTPStatusCode.locked, 423)
        XCTAssertEqual(HTTPStatusCode.failedDependency, 424)
        XCTAssertEqual(HTTPStatusCode.tooEarly, 425)
        XCTAssertEqual(HTTPStatusCode.upgradeRequired, 426)
        XCTAssertEqual(HTTPStatusCode.preconditionRequired, 428)
        XCTAssertEqual(HTTPStatusCode.tooManyRequests, 429)
        XCTAssertEqual(HTTPStatusCode.requestHeaderFieldsTooLarge, 431)
        XCTAssertEqual(HTTPStatusCode.iisLoginTimeout, 440)
        XCTAssertEqual(HTTPStatusCode.nginxNoResponse, 444)
        XCTAssertEqual(HTTPStatusCode.iisRetryWith, 449)
        XCTAssertEqual(HTTPStatusCode.blockedByWindowsParentalControls, 450)
        XCTAssertEqual(HTTPStatusCode.unavailableForLegalReasons, 451)
        XCTAssertEqual(HTTPStatusCode.nginxSSLCertificateError, 495)
        XCTAssertEqual(HTTPStatusCode.nginxSSLCertificateRequired, 496)
        XCTAssertEqual(HTTPStatusCode.nginxHTTPToHTTPS, 497)
        XCTAssertEqual(HTTPStatusCode.tokenExpired, 498)
        XCTAssertEqual(HTTPStatusCode.nginxClientClosedRequest, 499)
        XCTAssertEqual(HTTPStatusCode.internalServerError, 500)
        XCTAssertEqual(HTTPStatusCode.notImplemented, 501)
        XCTAssertEqual(HTTPStatusCode.badGateway, 502)
        XCTAssertEqual(HTTPStatusCode.serviceUnavailable, 503)
        XCTAssertEqual(HTTPStatusCode.gatewayTimeout, 504)
        XCTAssertEqual(HTTPStatusCode.httpVersionNotSupported, 505)
        XCTAssertEqual(HTTPStatusCode.variantAlsoNegotiates, 506)
        XCTAssertEqual(HTTPStatusCode.insufficientStorage, 507)
        XCTAssertEqual(HTTPStatusCode.loopDetected, 508)
        XCTAssertEqual(HTTPStatusCode.bandwidthLimitExceeded, 509)
        XCTAssertEqual(HTTPStatusCode.notExtended, 510)
        XCTAssertEqual(HTTPStatusCode.networkAuthenticationRequired, 511)
        XCTAssertEqual(HTTPStatusCode.siteIsFrozen, 530)
        XCTAssertEqual(HTTPStatusCode.networkConnectTimeoutError, 599)
        
        XCTAssertEqual(HTTPURLResponse(url: URL(string: "http://www.google.com")!, statusCode: .ok, httpVersion: nil, headerFields: nil)!.statusCodeValue, .ok)
    }
}
    
#endif
Download .txt
gitextract_wa78b5hf/

├── .gitignore
├── .travis.yml
├── HTTPStatusCodes.podspec
├── LICENSE
├── Package.swift
├── README.md
├── Sources/
│   ├── HTTPStatusCodes+Extensions.swift
│   └── HTTPStatusCodes.swift
└── Tests/
    ├── .gitignore
    ├── Cartfile
    ├── Generator.playground/
    │   ├── Contents.swift
    │   ├── Sources/
    │   │   ├── Case.swift
    │   │   └── StaticTexts.swift
    │   └── contents.xcplayground
    ├── HTTPStatusCodes/
    │   ├── Deprecated.h
    │   ├── Deprecated.m
    │   ├── HTTPStatusCodes.h
    │   └── SupportingFiles/
    │       ├── Info-OSX.plist
    │       ├── Info-iOS.plist
    │       ├── Info-tvOS.plist
    │       └── Info-watchOS.plist
    ├── HTTPStatusCodes.xcconfig
    ├── HTTPStatusCodes.xcodeproj/
    │   ├── project.pbxproj
    │   ├── project.xcworkspace/
    │   │   ├── contents.xcworkspacedata
    │   │   └── xcshareddata/
    │   │       └── IDEWorkspaceChecks.plist
    │   └── xcshareddata/
    │       └── xcschemes/
    │           └── HTTPStatusCodes.xcscheme
    └── HTTPStatusCodesTests/
        ├── HTTPStatusCodesTests.swift
        ├── Info.plist
        ├── ObjectiveCRegressionTests.m
        ├── ObjectiveCTests.m
        └── RegressionTests.swift
Download .txt
SYMBOL INDEX (1 symbols across 1 files)

FILE: Tests/HTTPStatusCodes/Deprecated.h
  type NSInteger (line 12) | typedef const NSInteger __HTTPStatusCode
Condensed preview — 31 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (139K chars).
[
  {
    "path": ".gitignore",
    "chars": 423,
    "preview": "# Xcode\n#\nbuild/\n*.pbxuser\n!default.pbxuser\n*.mode1v3\n!default.mode1v3\n*.mode2v3\n!default.mode2v3\n*.perspectivev3\n!defau"
  },
  {
    "path": ".travis.yml",
    "chars": 456,
    "preview": "language: objective-c\nosx_image: xcode10.2\nscript:\n    - xcodebuild -project Tests/HTTPStatusCodes.xcodeproj -scheme HTT"
  },
  {
    "path": "HTTPStatusCodes.podspec",
    "chars": 701,
    "preview": "Pod::Spec.new do |s|\n  s.name = 'HTTPStatusCodes'\n  s.version = '3.3.2'\n  s.license = 'MIT'\n  s.summary = 'Swift enum wr"
  },
  {
    "path": "LICENSE",
    "chars": 1081,
    "preview": "The MIT License (MIT)\n\nCopyright (c) 2017 Rich Hodgkins\n\nPermission is hereby granted, free of charge, to any person obt"
  },
  {
    "path": "Package.swift",
    "chars": 724,
    "preview": "// swift-tools-version:4.0\n//\n//  Created by Richard Hodgkins on 07/06/2016.\n//  Copyright (c) 2016 Richard Hodgkins. Al"
  },
  {
    "path": "README.md",
    "chars": 2965,
    "preview": "# SwiftHTTPStatusCodes\n[![Build Status](https://travis-ci.org/rhodgkins/SwiftHTTPStatusCodes.svg?branch=master)](https:/"
  },
  {
    "path": "Sources/HTTPStatusCodes+Extensions.swift",
    "chars": 8589,
    "preview": "//\n//  HTTPStatusCodes+Extensions.swift\n//  HTTPStatusCodes\n//\n//  Created by Richard Hodgkins on 07/06/2016.\n//  Copyri"
  },
  {
    "path": "Sources/HTTPStatusCodes.swift",
    "chars": 14051,
    "preview": "//\n// HTTPStatusCodes.swift\n//\n// Generated by Richard Hodgkins on 21/02/2019.\n// Copyright (c) 2019 Richard Hodgkins. A"
  },
  {
    "path": "Tests/.gitignore",
    "chars": 27,
    "preview": "Carthage\nCartfile.resolved\n"
  },
  {
    "path": "Tests/Cartfile",
    "chars": 50,
    "preview": "github \"rhodgkins/SwiftHTTPStatusCodes\" \"master\"\n\n"
  },
  {
    "path": "Tests/Generator.playground/Contents.swift",
    "chars": 3714,
    "preview": "import Foundation\nimport XCPlayground\n\nfunc createEnumCaseFromLine(line: String) -> Case? {\n    \n    func createComments"
  },
  {
    "path": "Tests/Generator.playground/Sources/Case.swift",
    "chars": 3951,
    "preview": "public struct Case {\n    public let code: Int\n    let name: String\n    let comments: [String]\n    let caseName: String\n "
  },
  {
    "path": "Tests/Generator.playground/Sources/StaticTexts.swift",
    "chars": 6424,
    "preview": "import Foundation\n\nfunc text(_ lines: [String]) -> String {\n    return lines.joined(separator: \"\\n\")\n}\n\nfunc text(_ line"
  },
  {
    "path": "Tests/Generator.playground/contents.xcplayground",
    "chars": 218,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<playground version='5.0' target-platform='osx' executeOnSourceC"
  },
  {
    "path": "Tests/HTTPStatusCodes/Deprecated.h",
    "chars": 5269,
    "preview": "//\n//  Deprecated.h\n//  HTTPStatusCodes\n//\n//  Created by Richard Hodgkins on 08/06/2016.\n//  Copyright © 2016 Rich H. A"
  },
  {
    "path": "Tests/HTTPStatusCodes/Deprecated.m",
    "chars": 1550,
    "preview": "//\n//  Deprecated.c\n//  HTTPStatusCodes\n//\n//  Created by Richard Hodgkins on 08/06/2016.\n//  Copyright © 2016 Rich H. A"
  },
  {
    "path": "Tests/HTTPStatusCodes/HTTPStatusCodes.h",
    "chars": 434,
    "preview": "//\n//  HTTPStatusCodes.h\n//  HTTPStatusCodes\n//\n//  Created by Richard Hodgkins on 22/02/2015.\n//  Copyright (c) 2015 Ri"
  },
  {
    "path": "Tests/HTTPStatusCodes/SupportingFiles/Info-OSX.plist",
    "chars": 918,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Tests/HTTPStatusCodes/SupportingFiles/Info-iOS.plist",
    "chars": 817,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Tests/HTTPStatusCodes/SupportingFiles/Info-tvOS.plist",
    "chars": 817,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Tests/HTTPStatusCodes/SupportingFiles/Info-watchOS.plist",
    "chars": 817,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Tests/HTTPStatusCodes.xcconfig",
    "chars": 2173,
    "preview": "//\n//  HTTPStatusCodes.xcconfig\n//  HTTPStatusCodes\n//\n//  Created by Richard Hodgkins on 14/09/2015.\n//  Copyright © 20"
  },
  {
    "path": "Tests/HTTPStatusCodes.xcodeproj/project.pbxproj",
    "chars": 21647,
    "preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 48;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
  },
  {
    "path": "Tests/HTTPStatusCodes.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "chars": 160,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:HTTPStatusCodes"
  },
  {
    "path": "Tests/HTTPStatusCodes.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "chars": 238,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Tests/HTTPStatusCodes.xcodeproj/xcshareddata/xcschemes/HTTPStatusCodes.xcscheme",
    "chars": 4016,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1020\"\n   version = \"1.3\">\n   <BuildAction\n      "
  },
  {
    "path": "Tests/HTTPStatusCodesTests/HTTPStatusCodesTests.swift",
    "chars": 9689,
    "preview": "//\n//  HTTPStatusCodesTests.swift\n//  HTTPStatusCodesTests\n//\n//  Created by Richard Hodgkins on 22/02/2015.\n//  Copyrig"
  },
  {
    "path": "Tests/HTTPStatusCodesTests/Info.plist",
    "chars": 744,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Tests/HTTPStatusCodesTests/ObjectiveCRegressionTests.m",
    "chars": 16984,
    "preview": "//\n//  ObjectiveCRegressionTests.m\n//  ObjectiveCTests\n//\n//  Created by Richard Hodgkins on 09/06/2016.\n//  Copyright ©"
  },
  {
    "path": "Tests/HTTPStatusCodesTests/ObjectiveCTests.m",
    "chars": 1957,
    "preview": "//\n//  ObjectiveCTests.m\n//  HTTPStatusCodes\n//\n//  Created by Richard Hodgkins on 12/10/2016.\n//  Copyright © 2016 Rich"
  },
  {
    "path": "Tests/HTTPStatusCodesTests/RegressionTests.swift",
    "chars": 19120,
    "preview": "//\n//  RegressionTests.swift\n//  HTTPStatusCodes\n//\n//  Created by Richard Hodgkins on 07/06/2016.\n//  Copyright © 2016 "
  }
]

About this extraction

This page contains the full source code of the rhodgkins/SwiftHTTPStatusCodes GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 31 files (127.7 KB), approximately 35.5k tokens, and a symbol index with 1 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!