package gitadapters

import (
	"fmt"
	"io"
	"net/http"

	"bitbucket.bit.admin.ch/scm/~u80859501/pierre-bot/internal/pierre"
)

type BitbucketAdapter struct {
	baseHTTP
}

func NewBitbucket(baseURL string, bearerToken string) *BitbucketAdapter {
	return &BitbucketAdapter{
		baseHTTP{
			baseURL:     baseURL,
			bearerToken: bearerToken,
		},
	}
}

func (b *BitbucketAdapter) GetDiff(projectKey, repositorySlug string, pullRequestID int) (diff io.Reader, err error) {
	r, err := b.createRequest(
		http.MethodGet,
		nil,
		"/rest/api/1.0/projects/", projectKey, "repos", repositorySlug, "pull-requests", fmt.Sprintf("%d.diff", pullRequestID),
	)
	if err != nil {
		return
	}

	response, err := http.DefaultClient.Do(r)
	if err != nil {
		return
	}
	diff = response.Body
	return
}

func (b *BitbucketAdapter) AddComment(projectKey, repositorySlug string, pullRequestID int, comment pierre.Comment) error {
	fmt.Printf("[MOCK BITBUCKET] Adding comment to PR %s/%s #%d: %s at %s:%d\n",
		projectKey, repositorySlug, pullRequestID, comment.Message, comment.File, comment.Line)
	return nil
}
