package main

import (
	"bytes"
	"encoding/gob"
	"github.com/akrylysov/pogreb"
)

// GetHSTSHeader returns a HSTS header with includeSubdomains & preload for MainDomainSuffix and RawDomain, or an empty
// string for custom domains.
func GetHSTSHeader(host []byte) string {
	if bytes.HasSuffix(host, MainDomainSuffix) || bytes.Equal(host, RawDomain) {
		return "max-age=63072000; includeSubdomains; preload"
	} else {
		return ""
	}
}

func TrimHostPort(host []byte) []byte {
	i := bytes.IndexByte(host, ':')
	if i >= 0 {
		return host[:i]
	}
	return host
}

func PogrebPut(db *pogreb.DB, name []byte, obj interface{}) {
	var resGob bytes.Buffer
	resEnc := gob.NewEncoder(&resGob)
	err := resEnc.Encode(obj)
	if err != nil {
		panic(err)
	}
	err = db.Put(name, resGob.Bytes())
	if err != nil {
		panic(err)
	}
}

func PogrebGet(db *pogreb.DB, name []byte, obj interface{}) bool {
	resBytes, err := db.Get(name)
	if err != nil {
		panic(err)
	}
	if resBytes == nil {
		return false
	}

	resGob := bytes.NewBuffer(resBytes)
	resDec := gob.NewDecoder(resGob)
	err = resDec.Decode(obj)
	if err != nil {
		panic(err)
	}
	return true
}