YOCKOW / SwiftNetworkGear

`SwiftNetworkGear` will provide various functions about network.
MIT License
0 stars 0 forks source link

What is SwiftNetworkGear?

SwiftNetworkGear will provide various functions about network. It was originally written as a part of SwiftCGIResponder.

Requirements

Dependencies

Dependencies

Usage

import NetworkGear
import Foundation

// DNS Lookup
Domain("GitHub.com")!.ipAddresses
//// -> [192.30.255.112, 192.30.255.113]

// DNS Reverse Lookup
IPAddress(string:"192.30.255.112")!.domain!
//// -> lb-192-30-255-112-sea.github.com

// Punycode
Domain("www.日本.jp")!.description
//// -> www.xn--wgv71a.jp

// Extended URL
URL(internationalString:"https://USER:PASSWORD@にっぽん。JP:8080/☕︎.cgi?杯=2#MyCoffee")!
//// -> https://USER:PASSWORD@xn--j9jp9cue.jp:8080/%E2%98%95.cgi?%E6%9D%AF=2#MyCoffee

// Public Suffix
Domain("YOCKOW.jp")!.isPublicSuffix
//// -> false
Domain("YOCKOW.JP")!.publicSuffix!.description
//// -> jp

SimpleHTTPConnection

There is a type named SimpleHTTPConnection that doesn't depend on URLSession but directly use libcurl as its backend.

import NetworkGear

let url = URL(string: "https://httpbin.org/post")!
let connection = SimpleHTTPConnection(
  url: url,
  method: .post,
  requestHeader: [
    .contentLength(7),
    .contentType(.wwwFormURLEncoded),
  ],
  requestBody: .init(data: Data("foo=bar".utf8)),
  redirectStrategy: .noFollow
)
let response = try await connection.response()
let content = response.content

License

MIT License.
See "LICENSE.txt" for more information.