This tiny API provides subscribing and unsubscribing of users using the go-news package.
Responds with all subscribers for a newsletter
, provided in the query-string parameter.
Accepts a form body with a newsletter
name and subscriber and email
.
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.
- 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"
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
This project is sponsored by my GitHub sponsors: