Something went wrong. Try again.
Monorepo for Tangled tangled.org
Something went wrong. Try again.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859package mill
import ( "errors" "fmt"
"github.com/bluesky-social/indigo/atproto/syntax"
millproto "tangled.org/core/spindle/mill/proto" millv1 "tangled.org/core/spindle/mill/proto/gen")
// the key stays in the spindle, the mill only names the repotype GitTokenSigner interface { GitToken(repo syntax.DID) (string, error)}
func (m *Mill) SetGitTokenSigner(signer GitTokenSigner) { m.mu.Lock() defer m.mu.Unlock() m.gitTokens = signer}
func (m *Mill) handleGitTokenRequest(s *millSession, req *millv1.GitTokenRequest) { resp := &millv1.GitTokenResponse{RequestId: req.GetRequestId()} token, err := m.gitToken(s, req.GetLeaseId()) if err != nil { resp.Error = err.Error() } else { resp.Token = token } _ = s.send(&millproto.Message{GitTokenResp: resp})}
// fork runs clone the fork and get no tokenfunc (m *Mill) gitToken(s *millSession, leaseID string) (string, error) { m.mu.Lock() signer := m.gitTokens m.mu.Unlock() if signer == nil { return "", errors.New("no git token signer attached") } lease, err := m.sessionLease(s, leaseID) if err != nil { return "", err } lease.mu.Lock() repo, own := lease.repoDID, lease.clonesOwnRepo lease.mu.Unlock() if !own { return "", fmt.Errorf("lease %q doesn't clone its own repo", leaseID) } repoDid, err := syntax.ParseDID(repo) if err != nil { return "", fmt.Errorf("lease has no usable repo: %w", err) } return signer.GitToken(repoDid)}