diff --git a/src/cmd/mediocre-blog/main.go b/src/cmd/mediocre-blog/main.go index cdd9b1b..ff8e478 100644 --- a/src/cmd/mediocre-blog/main.go +++ b/src/cmd/mediocre-blog/main.go @@ -126,6 +126,7 @@ func main() { gmiParams.Logger = logger.WithNamespace("gmi") gmiParams.PostStore = postStore gmiParams.PostAssetStore = postAssetStore + gmiParams.HTTPPublicURL = httpParams.PublicURL logger.Info(ctx, "starting gmi api") gmiAPI, err := gmi.New(gmiParams) diff --git a/src/gmi/gmi.go b/src/gmi/gmi.go index 9ef6e19..6835ea0 100644 --- a/src/gmi/gmi.go +++ b/src/gmi/gmi.go @@ -30,6 +30,8 @@ type Params struct { PublicURL *url.URL ListenAddr string CertificatesPath string + + HTTPPublicURL *url.URL } // SetupCfg implement the cfg.Cfger interface. diff --git a/src/gmi/tpl.go b/src/gmi/tpl.go index 3022fe2..8220a49 100644 --- a/src/gmi/tpl.go +++ b/src/gmi/tpl.go @@ -33,8 +33,9 @@ type rendererGetPostSeriesNextPreviousRes struct { } type renderer struct { - url *url.URL - postStore post.Store + url *url.URL + postStore post.Store + httpPublicURL *url.URL } func (r renderer) GetPosts(page, count int) (rendererGetPostsRes, error) { @@ -98,7 +99,9 @@ func (r renderer) PostBody(p post.StoredPost) (string, error) { return filepath.Join("/posts", id) }, StaticURL: func(path string) string { - return filepath.Join("/static", path) + httpPublicURL := *r.httpPublicURL + httpPublicURL.Path = filepath.Join(httpPublicURL.Path, "/static", path) + return httpPublicURL.String() }, Image: func(args ...string) (string, error) { @@ -207,8 +210,9 @@ func (a *api) tplHandler() (gemini.Handler, error) { buf := new(bytes.Buffer) err := tpl.Execute(buf, renderer{ - url: r.URL, - postStore: a.params.PostStore, + url: r.URL, + postStore: a.params.PostStore, + httpPublicURL: a.params.HTTPPublicURL, }) if err != nil {