Skip to content
This repository has been archived by the owner on Apr 20, 2024. It is now read-only.

ml-archive/n-meta

Repository files navigation

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:

N-Meta: [PLATFORM];[ENVIRONMENT];[APP_VERSION];[DEVICE_OS];[DEVICE]

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: [
        .target(
            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:

app.middlewares.use(NMetaMiddleware())

🏆 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