80 lines
1.7 KiB
Go
80 lines
1.7 KiB
Go
package config
|
|
|
|
import (
|
|
"bytes"
|
|
"io/ioutil"
|
|
|
|
"github.com/BurntSushi/toml"
|
|
)
|
|
|
|
// Config defines config fields
|
|
type Config struct {
|
|
DatabaseConnection string
|
|
BindAddress string
|
|
AssetsDirectory string
|
|
TemplatesDirectory string
|
|
ContentDirectory string
|
|
ContentWebDirectory string
|
|
Snapchat Snapchat
|
|
Twitter Twitter
|
|
Instagram Instagram
|
|
Folder Folder
|
|
}
|
|
|
|
// Folder defines fields for Folder configuration
|
|
type Folder struct {
|
|
Folder string
|
|
}
|
|
|
|
// Instagram defines fields for Instagram configuration
|
|
type Instagram struct {
|
|
Tag string
|
|
}
|
|
|
|
// Twitter defines fields for Twitter configuration
|
|
type Twitter struct {
|
|
ConsumerKey string
|
|
ConsumerSecret string
|
|
OAuthToken string
|
|
OAuthTokenSecret string
|
|
Filter []string
|
|
}
|
|
|
|
// Snapchat defines fields for Snapchat configuration
|
|
type Snapchat struct {
|
|
APIBase string
|
|
UserAgent string
|
|
UserName string
|
|
GetConversations SnapchatEndpoint
|
|
GetBlob SnapchatEndpoint
|
|
MarkAsSeen SnapchatEndpoint
|
|
}
|
|
|
|
// SnapchatEndpoint defines fields for Snapchat endpoint configuration
|
|
type SnapchatEndpoint struct {
|
|
UUID string
|
|
ClientAuthToken string
|
|
RequestToken string
|
|
Timestamp string
|
|
}
|
|
|
|
// C is the config handler
|
|
var C Config
|
|
|
|
// LoadConfig loads the configuration from given path
|
|
func LoadConfig(path string) error {
|
|
_, e := toml.DecodeFile(path, &C)
|
|
return e
|
|
}
|
|
|
|
// WriteConfig writes the configuration to the given path
|
|
func WriteConfig(path string) error {
|
|
buf := new(bytes.Buffer)
|
|
err := toml.NewEncoder(buf).Encode(C)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
err = ioutil.WriteFile(path, buf.Bytes(), 0644)
|
|
return err
|
|
}
|