github.com/github.com/PerfectlySoft/Perfect-CURL

cURL support for Perfect.


Keywords
curl, libcurl, networking, perfect, server-side-swift, swift
License
Apache-2.0

Documentation

Perfect-CURL

cURL support for Perfect

GitHub version

This project provides a Swift wrapper around the libcurl.

This package builds with Swift Package Manager and is part of the Perfect project. It was written to be stand-alone and so does not require PerfectLib or any other components.

Ensure you have installed and activated the latest Swift 3.0 tool chain.

Example usage:

func testCURLAsync() {
    let url = "https://www.treefrog.ca"
    let curl = CURL(url: url)

    // set an option
    let _ = curl.setOption(CURLOPT_SSL_VERIFYPEER, int: 0)

    // check the url
    XCTAssert(curl.url == url)

    // perform the request
    curl.perform {
        code, header, body in

        // check the result code, http response code, header and body bytes

        XCTAssert(0 == code, "Request error code \(code)")

        let response = curl.responseCode
        XCTAssert(response == 200, "\(response)")
        XCTAssert(header.count > 0)
        XCTAssert(body.count > 0)
    }
}

Linux Build Notes

Ensure that you have installed libcurl.

sudo apt-get install libcurl-dev

Building

Add this project as a dependency in your Package.swift file.

.Package(url: "https://github.com/PerfectlySoft/Perfect-CURL.git", versions: Version(0,0,0)..<Version(10,0,0))

Repository Layout

We have finished refactoring Perfect to support Swift Package Manager. The Perfect project has been split up into the following repositories:

  • Perfect - This repository contains the core PerfectLib and will continue to be the main landing point for the project.
  • PerfectTemplate - A simple starter project which compiles with SPM into a stand-alone executable HTTP server. This repository is ideal for starting on your own Perfect based project.
  • PerfectDocs - Contains all API reference related material.
  • PerfectExamples - All the Perfect example projects and documentation.
  • PerfectEverything - This umbrella repository allows one to pull in all the related Perfect modules in one go, including the servers, examples, database connectors and documentation. This is a great place to start for people wishing to get up to speed with Perfect.
  • PerfectServer - Contains the PerfectServer variants, including the stand-alone HTTP and FastCGI servers. Those wishing to do a manual deployment should clone and build from this repository.
  • Perfect-Redis - Redis database connector.
  • Perfect-SQLite - SQLite3 database connector.
  • Perfect-PostgreSQL - PostgreSQL database connector.
  • Perfect-MySQL - MySQL database connector.
  • Perfect-MongoDB - MongoDB database connector.
  • Perfect-FastCGI-Apache2.4 - Apache 2.4 FastCGI module; required for the Perfect FastCGI server variant.

The database connectors are all stand-alone and can be used outside of the Perfect framework and server.

Further Information

For more information on the Perfect project, please visit perfect.org.