Enforcing extra information in headers Ⓜ️

N-Meta Ⓜ️

Swift Version Vapor Version Circle CI codebeat badge codecov Readme Score GitHub license

This package enforces clients to send a specific header in all requests:


If you're running an older version of Vapor then have a look here:

This header can look like this android;production;1.2.3;4.4;Samsung S7

  • platform
  • environment
  • app version
  • device os
  • device

For web platform only platform and environment is required, since the rest can be found in User-Agent.

Why not just use User-Agent?

  • User-Agent is missing some of these details
  • User-Agent can be hard to extend/override
  • Default User-Agent in iOS & Android can be their client (OkHttp, Alamofire etc).

📦 Installation

Update your Package.swift file.

    dependencies: [
        .package(url: "https://github.com/nodes-vapor/n-meta.git", from: "4.0.0")
    targets: [
            name: "App",
            dependencies: [
                .product(name: "NMeta", package: "n-meta"),

Getting started 🚀

Configure NMeta as per your needs, for example:

app.nMeta = .init(exceptPath: ["/admin"])

Next, add the middleware directly to your routes (e.g. in routes.swift):

app.grouped(NMetaMiddleware()).get("hello") { req in
    "Hello, world!"

or add the middleware globally (e.g. in configure.swift) which will add it to all routes:


🏆 Credits

This package is developed and maintained by the Vapor team at Nodes.

📄 License

This package is open-sourced software licensed under the MIT license


  • Swift Tools 5.2.0
View More Packages from this Author


Last updated: Fri Jan 12 2024 14:10:07 GMT-1000 (Hawaii-Aleutian Standard Time)