1.1.4 • Published 6 months ago

is-tor-order v1.1.4

Weekly downloads
-
License
ISC
Repository
github
Last release
6 months ago

is-tor-order

Checks if http header order is Tor

Usage

const express = require("express");
const isTorOrder = require("is-tor-order");

const port = 3000;
const app = express();

app.get("/", ({ headers }, res) => {
  const are = isTorOrder(headers) ? "are" : "are not";

  res.send(`You ${are} tor!`);
});

app.listen(port);

API

  type Headers = Record<string, string> | string[] | Array<[string, string]>;
  type IsTorOrderOptions = {
    areRawHeaders: boolean;
    userAgentString: string;
  };

  function isTorOrder(
    headers: Headers,
    options: IsTorOrderOptions = { areRawHeaders = false, userAgentString: null }
  ): boolean;

  export = isTorOrder;

headers - one of:

  • array of strings
["accept", "accept-language"];
  • object of structure [key: string]: string
{
  'accept': '...',
  'user-agent': '...'
}
  • array with 2-length array of strings
[
  ["accept-encoding", "gzip"],
  ["accept", "*/*"],
];

options: object that can have areRawHeaders option if it should parse entries array such as:

[
  "user-agent",
  "this is invalid because there can be only one",
  "User-Agent",
  "curl/7.22.0",
  "Host",
  "127.0.0.1:8000",
  "ACCEPT",
  "*",
];

or can have userAgentString option that is required on indefinite GET requests when it is unclear whenever it's TOR or not.

Throws

class IsTorOrderError extends Error(message, headers): {
  message: string,
  headers: Headers
}

if indefinite request occurred and userAgentString is not specified.

Exception handling Example

const isTorOrder = require("is-tor-order");
const { IsTorOrderError } = require("is-tor-order");

try {
  const isTor = isTorOrder(req.headers);
  // ...
} catch (error) {
  if (error instanceof IsTorOrderError) {
    // Handle indefinite case
  }
}

or

const isTorOrder = require("is-tor-order");

try {
  const isTor = isTorOrder(req.headers);
  // ...
} catch (error) {
  if (error instanceof isTorOrder.IsTorOrderError) {
    // Handle indefinite case
  }
}

areRawHeaders defaults to false

userAgentString defaults to null

Test

npm test

Related repositories

is-chrome-order is-firefox-order is-safari-order

1.1.4

6 months ago

1.1.3

9 months ago

1.1.1

9 months ago

1.1.0

9 months ago