// Copyright (C) The Arvados Authors. All rights reserved.
//
// SPDX-License-Identifier: AGPL-3.0

package githttpd

import (
	"context"

	"git.arvados.org/arvados.git/lib/service"
	"git.arvados.org/arvados.git/sdk/go/arvados"
	"git.arvados.org/arvados.git/sdk/go/arvadosclient"
	"github.com/prometheus/client_golang/prometheus"
)

var Command = service.Command(arvados.ServiceNameGitHTTP, newHandler)

func newHandler(ctx context.Context, cluster *arvados.Cluster, token string, reg *prometheus.Registry) service.Handler {
	client, err := arvados.NewClientFromConfig(cluster)
	if err != nil {
		return service.ErrorHandler(ctx, cluster, err)
	}
	ac, err := arvadosclient.New(client)
	if err != nil {
		return service.ErrorHandler(ctx, cluster, err)
	}
	return &authHandler{
		clientPool: &arvadosclient.ClientPool{Prototype: ac},
		cluster:    cluster,
		handler:    newGitHandler(ctx, cluster),
	}
}