Skip to content

Latest commit

 

History

History
119 lines (100 loc) · 12.2 KB

Readme.md

File metadata and controls

119 lines (100 loc) · 12.2 KB

News API

This tiny API provides subscribing and unsubscribing of users using the go-news package.

Routes

GET /subscribers

Responds with all subscribers for a newsletter, provided in the query-string parameter.

POST /subscribe

Accepts a form body with a newsletter name and subscriber and email.

GET /unsubscribe

Requires the newsletter and token query-string parameters. The token must be signed with the TOKEN_SECRET and the included token package, this ensures that only people who received an email with this token in their unsubscribe link can perform an unsubscribe.

Setup

  • Create a DynamoDB table with a Partition Key of "newsletter", and a Sort Key of "email".
  • Deploy this app however you prefer, you could use Up for example
  • Define the required environment variables:
    • TOKEN_SECRET: The secret used for signing unsubscribe tokens
    • API_TOKEN: The API token used to secure sensitive routes (GET /subscribers)
    • SUBSCRIBE_REDIRECT_URL: The redirect URL used for a successful subscription (thank you page)
    • UNSUBSCRIBE_REDIRECT_URL: The redirect URL used for a successful unsubscribe (bye bye page)
    • DYNAMO_TABLE: An optional table name, defaults to "news"

Auth

The API_TOKEN is used to restrict access to sensitive routes. You can specify it as the Basic Auth password, no username is necessary, for example:

$ export API_TOKEN=hello
$ go run main.go &
$ curl -u :slothy localhost:3000/subscribers?newsletter=blog

GoDoc

Sponsors

This project is sponsored by my GitHub sponsors: