From 08e08d771ef03df80248c80d81475fe7c5ea6fe7 Mon Sep 17 00:00:00 2001 From: "Santiago M. Mola" Date: Wed, 23 Nov 2016 15:30:34 +0100 Subject: transport: create Client interface (#132) * plumbing: move plumbing/client package to plumbing/transport. * transport: create Client interface. * A Client can instantiate any client transport service. * InstallProtocol installs a Client for a given protocol, instead of just a UploadPackService. * A Client can open a session for fetch-pack or send-pack for a specific Endpoint. * Adapt ssh and http clients to the new client interface. * updated doc --- plumbing/client/common.go | 46 ---------------------------------------------- 1 file changed, 46 deletions(-) delete mode 100644 plumbing/client/common.go (limited to 'plumbing/client/common.go') diff --git a/plumbing/client/common.go b/plumbing/client/common.go deleted file mode 100644 index 1524753..0000000 --- a/plumbing/client/common.go +++ /dev/null @@ -1,46 +0,0 @@ -// Package clients includes the implementation for different transport protocols -// -// go-git needs the packfile and the refs of the repo. The -// `NewGitUploadPackService` function returns an object that allows to -// download them. -// -// go-git supports HTTP and SSH (see `Protocols`) for downloading the packfile -// and the refs, but you can also install your own protocols (see -// `InstallProtocol` below). -// -// Each protocol has its own implementation of -// `NewGitUploadPackService`, but you should generally not use them -// directly, use this package's `NewGitUploadPackService` instead. -package clients - -import ( - "fmt" - - "gopkg.in/src-d/go-git.v4/plumbing/client/common" - "gopkg.in/src-d/go-git.v4/plumbing/client/http" - "gopkg.in/src-d/go-git.v4/plumbing/client/ssh" -) - -// Protocols are the protocols supported by default. -var Protocols = map[string]common.GitUploadPackServiceFactory{ - "http": http.NewGitUploadPackService, - "https": http.NewGitUploadPackService, - "ssh": ssh.NewGitUploadPackService, -} - -// InstallProtocol adds or modifies an existing protocol. -func InstallProtocol(scheme string, f common.GitUploadPackServiceFactory) { - Protocols[scheme] = f -} - -// NewGitUploadPackService returns the appropriate upload pack service -// among of the set of known protocols: HTTP, SSH. See `InstallProtocol` -// to add or modify protocols. -func NewGitUploadPackService(endpoint common.Endpoint) (common.GitUploadPackService, error) { - f, ok := Protocols[endpoint.Scheme] - if !ok { - return nil, fmt.Errorf("unsupported scheme %q", endpoint.Scheme) - } - - return f(endpoint), nil -} -- cgit