/themes_backup

Use API webhooks to backup theme changes into Git repositories

Primary LanguageGoMIT LicenseMIT

Git-based themes backup

This app listens to themes.* Bootic webhooks and backs up theme templates and assets in a local Git repository for each shop.

Start

go run main.go --host=localhost:3004 --dir /some/directory
options description example
--host host:port to bind this app to localhost:3004
--dir directory path where to keep Git repos /home/git/backup

Run tests

go test -v ./...

Deploy

Compile locally with go build and upload binary to server, or pull this repo into server and go install.

Subscribe webhooks

You must use Bootic's API to subscribe a webhook pointing to this app's public URL.

See API docs.

# subscribe webhook using the Ruby client
# the hub resource groups webhook-related endpoints
hub = shop.hub
# create webhook for "themes" topics, pointing to app's URL

hook = hub.subscribe(
  topic: "themes",
  url: "https://some.app.com/events"
)

Once subscribed, Bootic will send webhook notifications to this app's URL everytime the shop's theme changes. This app will keep track of changes in Git repos.

git log --pretty=oneline

8ebcb9acf3e2b (HEAD -> master) Ismael Celis: updated layout.html - evt:7579
44580db7241c2 Ismael Celis: updated layout.html - evt:7578
cf9126b3cb7fb Ismael Celis: updated layout.html - evt:7577
415b3ce537fdd Ismael Celis: updated layout.html - evt:7576
d2e1cfed42efc Ismael Celis: updated layout.html - evt:7575

Example webhook notification

POST /events HTTP/1.1
Host: some.app.com
Content-Type: application/json
Content-Length: xxx

{
  "sequence": 1,
  "shop_subdomain": "acme",
  "topic": "themes.updated.templates.created",
  "user_name": "Joe Bloggs",
  "user_id": 123,
  "created_on": "2018-08-10T20:00:00",
  "_embedded": {
    "item": {
      "file_name": "foo.html",
      "body": "Some HTML code here"
    }
  }
}