package main

import (
	"io/ioutil"
	"encoding/json"
	"muzzammil.xyz/jsonc"
	"log"
)

type Database struct {
	Host		string	`"json:host"`
	Port		int	`"json:port"`
	Username	string	`"json:username"`
	Password	string	`"json:password"`
	Workers		int	`"json:workers"`
}

type MassFollower struct {
	Acct		string	`"json:acct"`
	Name		string	`"json:name"`
	Summary		string	`"json:summary"`
	FollowingCount	int	`"json:followingcount"`
	FollowLimit	int	`"json:followlimit"`
}

type ExtAccount struct {
	Username	string	`"json:username"`
	Password	string	`"json:password"`
	Endpoint	string	`"json:endpoint"`
	Followlimit	int	`"json:followlimit"`
}

type Proxy struct {
	Host		string	`"json:host"`
	Port		int	`"json:port"`
	Username	string	`"json:username'`
	Password	string	`"json:password"`
}

type Settings struct {
	Autostart	[]string	`"json:autostart"`
	Crawl		bool		`"json:crawl"`
	Banned		[]string	`"json:banned"`
	Alwaysbot	[]string	`"json:alwaysbot"`
	Proxies		[]Proxy		`"json:proxies"`
	Externalaccounts	[]ExtAccount	`"json:externalaccounts"`
	MassFollowers	[]MassFollower	`"json:massfollowers"`
	Database	Database	`"json:database"`
}

var settings Settings

func StringExists(needle string, haystack []string) (bool) {
	for _, check := range haystack {
		if check == needle {
			return true
		}
	}
	return false
}

func getSettings() {
	c, err := ioutil.ReadFile("config.jsonc")
	if (err != nil) {
		log.Fatal("Unable to open config.jsonc, exiting: ", err)
	}
	jsoncbin := jsonc.ToJSON(c) // Calling jsonc.ToJSON() to convert JSONC to JSON
	if jsonc.Valid(jsoncbin) == false {
		log.Fatal("Invalid jsonc, exiting.")
	}

	err = json.Unmarshal(jsoncbin, &settings)
	if err != nil {
		log.Fatal("Unable to parse config.jsonc, exiting: ", err)
	}
}