github vapor/vapor 3.0.0-alpha.12
Vapor 3.0 Alpha 12

latest releases: 4.95.0, 4.94.1, 4.94.0...
pre-release6 years ago

🍾 This is our 200th release!

Compare 3.0.0-alpha.11...3.0.0-alpha.12

161 changed files with 1,735 additions and 840 deletions.

New:

  • New Validation module.
import Validation

let user = User(...)
try user.validate()
final class User: Validatable {
    var id: Int?
    var name: String
    var age: Int
    var child: User?

    init(id: Int? = nil, name: String, age: Int) {
        self.id = id
        self.name = name
        self.age = age
    }

    static var keyStringMap: KeyStringMap = [
        key(\.id): "id",
        key(\.name): "name",
        key(\.age): "age",
        key(\.child): "child"
    ]

    static var validations: Validations = [
        key(\.id): !IsNil(), // ensures id is not nil
        key(\.name): IsCount(5...), // ensures name is at least 5 chars
        key(\.age): IsCount(3...), // ensures age is above or equal to 3
        key(\.child): IsNil() || IsValid() // ensures child user is either nil or validates it
    ]
}
  • Renamed some generic modules to avoid future collisions (Core -> JunkDrawer, libc -> COperatingSystem)
  • Adds Base64URL encoding/decoding
  • Refactored JWT
struct TestPayload: JWTPayload {
    var sub: SubjectClaim
    var name: String
    var admin: Bool
    var exp: ExpirationClaim

    func verify() throws {
        try exp.verify()
    }
}
let data = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImV4cCI6OTk5OTk5OTk5OTk5fQ.Ks7KcdjrlUTYaSNeAO5SzBla_sFCHkUh4vvJYn6q29U"

let signer = JWTSigner.hs256(key: Data("secret".utf8))
let jwt = try JWT<TestPayload>(from: data, verifiedUsing: signer)
XCTAssertEqual(jwt.payload.name, "John Doe")
XCTAssertEqual(jwt.payload.sub.value, "1234567890")
XCTAssertEqual(jwt.payload.admin, true)
  • Environment.get("FOO") for getting process env variables

Fixed:

  • Publicized import Multipart
  • --env flag is now supported
  • Simplified TCP socket connect, fixing some intermittent errors

Don't miss a new vapor release

NewReleases is sending notifications on new releases.