package schema

import (
	"context"
	"encoding/json"
	"fmt"
	"io/ioutil"
	"net/http"
	"strings"
)

func IXURL(id int64) string {
	return fmt.Sprintf("https://peeringdb.com/api/ix/%d.json?depth=4", id)
}

func NetIXLanInIXURL(id int64) string {
	return fmt.Sprintf("https://peeringdb.com/api/netixlan?ix_id__in=%d", id)
}

func NetURLMulti(ids []int64) string {
	sid := make([]string, len(ids))
	for i, id := range ids {
		sid[i] = fmt.Sprintf("%d", id)
	}
	return fmt.Sprintf("https://peeringdb.com/api/net?id__in=%s", strings.Join(sid, ","))
}

func Get(ctx context.Context, obj interface{}, url string) error {
	req, err := http.NewRequest("GET", url, nil)
	if err != nil {
		return fmt.Errorf("http.NewRequest(GET, %q): %v", url, err)
	}

	req.Header.Add("User-Agent", "bgpwtf-cccampix-peeringdbproxy/1.0 (https://code.hackerspace.pl/hscloud/bgpwtf/cccampix/peeringdb)")

	req = req.WithContext(ctx)

	client := http.DefaultClient
	res, err := client.Do(req)
	if err != nil {
		return fmt.Errorf("client.Do(%v): %v", req, err)
	}

	defer res.Body.Close()

	if res.StatusCode != 200 {
		return fmt.Errorf("got status code %d", res.StatusCode)
	}

	data, err := ioutil.ReadAll(res.Body)
	if err != nil {
		return fmt.Errorf("could not read response: %v", err)
	}

	err = json.Unmarshal(data, &obj)
	if err != nil {
		return fmt.Errorf("could not parse response JSON: %v", err)
	}

	return nil
}
