server

package module
v0.0.0-...-d14dcb5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 29, 2021 License: Apache-2.0 Imports: 9 Imported by: 0

README

Health Import Server

Storage backend for https://www.healthexportapp.com

Official documentation on the JSON format that the request submodule parses can be found here: https://github.com/Lybron/health-auto-export/wiki/API-Export---JSON-Format

Currently just stores the metrics into influxdb but more storage backends (and storing workout data) may be supported in the future.

Config file

You'll need provide a json config file with the details on how to connect to and authenticate with your influx db instance:

[
	{
		"type": "influxdb",
		"hostname": "YOUR HOSTNAME HERE",
		"token": "YOUR TOKEN HERE",
		"org": "YOUR ORG HERE",
		"bucket": "YOUR BUCKET HERE"
	}
]

Running in docker

The image can be built with this command (not on dockerhub yet):

docker build -t health-import:latest

To provide the config file to the application you need to place it here: /config/config.json (later on I'd like to support config via environment variables instead).

You can either do this with a bind mount e.g.

docker run -v $(PWD)/config:/config health-import:latest

Or making an image which extends the base image:

FROM health-import:latest
ADD config.json /config/config.json

(docker-compose works well with this approach)

What the metrics look like

See this file: sample.go

How to use this with Health Export App (aka. API Export)

  1. Run the server on a machine on your local home network.
  2. Configure the API Export to point to the server.
  3. Enable automatic syncing

Documentation

Index

Constants

View Source
const INFLUX_BUCKET = "INFLUX_BUCKET"
View Source
const INFLUX_HOSTNAME = "INFLUX_HOSTNAME"
View Source
const INFLUX_ORG = "INFLUX_ORG"
View Source
const INFLUX_TOKEN = "INFLUX_TOKEN"

Variables

This section is empty.

Functions

This section is empty.

Types

type ImportHandler

type ImportHandler struct {
	MetricStores []MetricStore
}

func NewImportHandler

func NewImportHandler(metricStores []MetricStore) *ImportHandler

func (*ImportHandler) ServeHTTP

func (handler *ImportHandler) ServeHTTP(wr http.ResponseWriter, req *http.Request)

type MetricStore

type MetricStore interface {
	Name() string
	Store(metrics []request.Metric) error
}

MetricStore encapsulates a storage backend for the metrics provided by the Auto Export app. There is a possibility of the same metrics arriving twice so all MetricStores must not store duplicate metrics.

func LoadMetricStores

func LoadMetricStores(filename string) ([]MetricStore, error)

func LoadMetricStoresFromConfig

func LoadMetricStoresFromConfig(filename string) ([]MetricStore, error)

func LoadMetricStoresFromEnvironment

func LoadMetricStoresFromEnvironment() ([]MetricStore, error)

Directories

Path Synopsis
cmd
storage

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL