package provider_conf

import (
	"encoding/json"
	"github.com/go-acme/lego/v4/challenge"
	"github.com/go-acme/lego/v4/providers/dns/cloudflare"
)

type Cloudflare struct {
	AuthApiToken string `json:"dnsApiToken"`
	ZoneApiToken string `json:"zoneApiToken"`
}

func (c Cloudflare) ToProvider(confStr string) (challenge.Provider, error) {
	var conf Cloudflare
	err := json.Unmarshal([]byte(confStr), &conf)
	if err != nil {
		panic(err)
	}
	dnsConf := cloudflare.NewDefaultConfig()
	dnsConf.AuthToken = conf.AuthApiToken
	dnsConf.ZoneToken = conf.ZoneApiToken
	provider, err := cloudflare.NewDNSProviderConfig(dnsConf)
	return provider, err
}