MCPcopy Create free account
hub / github.com/basecamp/hey-cli / AuthenticateRequest

Method AuthenticateRequest

internal/auth/auth.go:85–120  ·  view source on GitHub ↗

AuthenticateRequest sets the appropriate auth header on an HTTP request. Uses Bearer token if available, otherwise falls back to session cookie.

(ctx context.Context, req *http.Request)

Source from the content-addressed store, hash-verified

83// AuthenticateRequest sets the appropriate auth header on an HTTP request.
84// Uses Bearer token if available, otherwise falls back to session cookie.
85func (m *Manager) AuthenticateRequest(ctx context.Context, req *http.Request) error {
86 if token := os.Getenv("HEY_TOKEN"); token != "" {
87 req.Header.Set("Authorization", "Bearer "+token)
88 return nil
89 }
90
91 m.mu.Lock()
92 defer m.mu.Unlock()
93
94 creds, err := m.store.Load(m.baseURL)
95 if err != nil {
96 return fmt.Errorf("not authenticated: %w", err)
97 }
98
99 if creds.AccessToken != "" {
100 // Auto-refresh if needed
101 if creds.ExpiresAt > 0 && time.Now().Unix() >= creds.ExpiresAt-300 {
102 if err = m.refreshLocked(ctx, creds); err != nil {
103 return err
104 }
105 creds, err = m.store.Load(m.baseURL)
106 if err != nil {
107 return fmt.Errorf("failed to load refreshed credentials: %w", err)
108 }
109 }
110 req.Header.Set("Authorization", "Bearer "+creds.AccessToken)
111 return nil
112 }
113
114 if creds.SessionCookie != "" {
115 req.Header.Set("Cookie", "session_token="+creds.SessionCookie)
116 return nil
117 }
118
119 return fmt.Errorf("no access token or session cookie available")
120}
121
122// IsAuthenticated checks if there are valid credentials.
123func (m *Manager) IsAuthenticated() bool {

Callers 1

AuthenticateMethod · 0.80

Calls 2

refreshLockedMethod · 0.95
LoadMethod · 0.80

Tested by

no test coverage detected