Luminescence 0.3.1

Luminescence 0.3.1

测试已测试
Lang语言 CC
许可协议 MIT
Released上次发布2015年11月

Paulo Faria 维护。



  • Paulo Faria

Luminescence

codecov.io

Luminescence 是为 Swift 2 设计的 HTTP 解析器。

特性

  • [x] 无需 Foundation 依赖(适用于 Linux
  • [x] 异步解析
  • [x] 处理持久流(keep-alive)
  • [x] 解码分块编码
  • [x] 防御缓冲区溢出攻击

Luminescence 使用了在 node.js 中使用的 C 库 http_parser

产品

Luminescence 是 HTTP 服务器的基础

  • Aeon - 基于 GCD 的 HTTP 服务器
  • Epoch - 基于 Luminescence 的 HTTP 服务器

用法

HTTPRequestParser

import Luminescence

let parser = HTTPRequestParser { request in
    // Here you get your parsed requests (HTTPRequest)
}

do {
    // Here you'll probably get the real data from a socket, right?
    let data = "GET / HTTP/1.1\r\n\r\n"
    try parser.parse(data)
} catch {
    // Something bad happened :(
}

HTTPResponseParser

import Luminescence

let parser = HTTPResponseParser { response in
    // Here you get your parsed responses (HTTPResponse)
}

do {
    // Here you'll probably get the real data from a socket, right?
    let data = "HTTP/1.1 204 No Content\r\n\r\n"
    try parser.parse(data)
} catch {
    // Something bad happened :(
}

分块数据和持久流

import Luminescence

let parser = HTTPRequestParser { request in
    // Here you get your parsed requests (HTTPRequest)
}

do {
    // You can call parse as many times as you like
    // passing chunks of the request or response.
    // Once the parser completes it will spit the result

    let data1 = "GE"
    let data2 = "T / HTT"
    let data3 = "P/1.1\r\n\r\n")

    try parser.parse(data1)
    try parser.parse(data2)
    try parser.parse(data3)

    // The parser supports persistent streams (keep-alive)
    // so you can keep streaming requests or responses
    // all you want.

    let data4 = "POS"
    let data5 = "T / H"
    let data6 = "TTP/1.1\r\n\r\n")

    try parser.parse(data4)
    try parser.parse(data5)
    try parser.parse(data6)
} catch {
    // Something bad happened :(
}

使用 EOF

import Luminescence

let parser = HTTPResponseParser { response in
    // Here you get your parsed responses (HTTPResponse)
}

do {
    // Sometimes servers return a response without Content-Length
    // to close the stream you can call eof()
    let data = ("HTTP/1.1 200 OK\r\n" +
                "\r\n" +
                "Zewo")
    try parser.parse(data)
    try parser.eof()
} catch {
    // Something bad happened :(
}

安装

命令行应用程序

要在命令行应用程序中使用 Luminescence

许可协议

Luminescence 采用 MIT 许可协议发布。有关详细信息,请参阅 LICENSE 文件。