An optimized version of the classify client endpoint in Normandy
Перейти к файлу
Michael Cooper c7ffc5b44d Add cargo-audit step to check for dependecy security issues 2019-04-10 16:25:52 -07:00
.circleci Add cargo-audit step to check for dependecy security issues 2019-04-10 16:25:52 -07:00
src Merge pull request #47 from mythmon/update-maxminddb 2019-03-06 09:43:21 -08:00
.codecov.yml Configure codecov to be a little quieter in PRs 2019-01-09 15:22:50 -08:00
.dockerignore Updates to deploy in Google App Engine 2018-12-10 14:54:52 -08:00
.gitignore add README 2018-12-10 15:26:41 -08:00
.therapist.yml Don't use nightly-only features of rustfmt in Therapist config 2018-12-19 15:57:48 -08:00
CODE_OF_CONDUCT.md Add Mozilla Code of Conduct file 2019-03-30 00:05:44 -07:00
Cargo.lock Update maxmindbdb to 0.13.0 2019-01-22 10:05:51 -08:00
Cargo.toml Update Rust crate slog-json to v2.3.0 2019-03-11 22:06:30 +00:00
Dockerfile Change default port to 8000 2018-12-23 08:44:02 -05:00
LICENSE License under MPLv2 2019-01-22 14:42:54 -08:00
README.md Merge #44 2019-01-17 16:39:45 +00:00
app.yaml Updates to deploy in Google App Engine 2018-12-10 14:54:52 -08:00
bors.toml Create bors.toml 2019-01-08 10:36:37 -08:00
build.rs Download the GeoIP DB during build 2018-12-19 16:39:30 +01:00
renovate.json Add renovate.json 2019-03-11 21:46:24 +00:00
version.json Add dev version.json 2018-12-18 10:04:54 +01:00

README.md

Classify Client

codecov

This is an optimized version of the classify client endpoint in Normandy.

Dev instructions

This is a normal Cargo project, so after cloning the repository, you can build and run it with

$ cargo build
$ cargo run

This project should run on the latest stable version of Rust. Unstable features are not allowed.

GeoIP Database

A GeoIP database will be downloaded automatically during the build.

Note: It relies on curl and tar commands. See build.rs for insights about how to obtain the file manually in case the .mmdb file does not show up in the current folder.

Configuration

Via environment variables:

  • DEBUG: Set to "true" to enable extra debugging options, such as a /debug endpoint that shows internal server state (default: "false").
  • GEOIP_DB_PATH: path to GeoIP database (default: "./GeoLite2-Country.mmdb")
  • HOST: host to bind to (default: "localhost")
  • HUMAN_LOGS: set to "true" to use human readable logging (default: MozLog as JSON)
  • METRICS_TARGET: The host and port to send statsd metrics to. May be a hostname like "metrics.example.com:8125" or an IP like "127.0.0.1:8125". Port is required. (default: "localhost:8125")
  • PORT: port number to bind to (default: "8000")
  • SENTRY_DSN: report errors to a Sentry instance (default: "")
  • TRUSTED_PROXY_LIST: A comma-separated list of CIDR ranges that trusted proxies will be in. Supports both IPv4 and IPv6.
  • VERSION_FILE: path to version.json file (default: "./version.json")

Tests

Tests can be run with Cargo as well

$ cargo test

Linting

Linting is handled via Therapist. After installing it, enable the git hooks using either therapist install or therapist install --fix. The --fix variant will automatically format your code upon commit. The variant without --fix will simply show an error and ask you to reformat the code using other means before committing. Therapist runs in CI.

The checks Therapist runs are:

  • Rustfmt
  • Clippy, using the clippy::all preset