29 lines
497 B
Go
29 lines
497 B
Go
package context
|
|
|
|
import (
|
|
"context"
|
|
"net/url"
|
|
|
|
"github.com/pkg/errors"
|
|
)
|
|
|
|
const keyBaseURL = "baseURL"
|
|
|
|
func BaseURL(ctx context.Context) *url.URL {
|
|
rawBaseURL, ok := ctx.Value(keyBaseURL).(string)
|
|
if !ok {
|
|
panic(errors.New("no base url in context"))
|
|
}
|
|
|
|
baseURL, err := url.Parse(rawBaseURL)
|
|
if err != nil {
|
|
panic(errors.WithStack(err))
|
|
}
|
|
|
|
return baseURL
|
|
}
|
|
|
|
func SetBaseURL(ctx context.Context, baseURL string) context.Context {
|
|
return context.WithValue(ctx, keyBaseURL, baseURL)
|
|
}
|