/* -*- coding: utf-8 -*-
* ------------------------------------------------------------------------------
*
*   Copyright 2018-2019 Fetch.AI Limited
*
*   Licensed under the Apache License, Version 2.0 (the "License");
*   you may not use this file except in compliance with the License.
*   You may obtain a copy of the License at
*
*       http://www.apache.org/licenses/LICENSE-2.0
*
*   Unless required by applicable law or agreed to in writing, software
*   distributed under the License is distributed on an "AS IS" BASIS,
*   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*   See the License for the specific language governing permissions and
*   limitations under the License.
*
* ------------------------------------------------------------------------------
 */

package dhtclient

import "libp2p_node/utils"

// Option for dhtclient.New
type Option func(*DHTClient) error

// IdentityFromFetchAIKey for dhtclient.New
func IdentityFromFetchAIKey(key string) Option {
	return func(dhtClient *DHTClient) error {
		var err error
		dhtClient.key, dhtClient.publicKey, err = utils.KeyPairFromFetchAIKey(key)
		if err != nil {
			return err
		}
		return nil
	}
}

// RegisterAgentAddress for dhtclient.New
func RegisterAgentAddress(addr string, isReady func() bool) Option {
	return func(dhtClient *DHTClient) error {
		dhtClient.myAgentAddress = addr
		dhtClient.myAgentReady = isReady
		return nil
	}
}

// BootstrapFrom for dhtclient.New
func BootstrapFrom(entryPeers []string) Option {
	return func(dhtClient *DHTClient) error {
		var err error
		dhtClient.bootstrapPeers, err = utils.GetPeersAddrInfo(entryPeers)
		if err != nil {
			return err
		}
		return nil
	}
}
