MCPcopy Index your code
hub / github.com/SignTools/SignTools / renderInstall

Function renderInstall

main.go:184–240  ·  view source on GitHub ↗
(c echo.Context, app storage.App)

Source from the content-addressed store, hash-verified

182}
183
184func renderInstall(c echo.Context, app storage.App) error {
185 usingManifestProxy := false
186 baseUrl := getBaseUrl(c)
187 manifestUrl := ""
188 var err error
189 if strings.HasPrefix(baseUrl, "https") {
190 // must be a full URL
191 manifestUrl, err = util.JoinUrls(baseUrl, "/apps", app.GetId(), "manifest")
192 if err != nil {
193 return errors.WithMessage(err, "build manifest url")
194 }
195 } else {
196 usingManifestProxy = true
197 downloadFullUrl, err := util.JoinUrls(baseUrl, "/apps", app.GetId(), "signed")
198 if err != nil {
199 return errors.WithMessage(err, "build download url")
200 }
201 proxyUrl := url.URL{
202 Scheme: "https",
203 Host: "ota.signtools.workers.dev",
204 Path: "/v1",
205 }
206 name, err := app.GetString(storage.AppName)
207 if err != nil {
208 logErrApp(err, app).Msg("get name")
209 }
210 bundleId, _ := app.GetString(storage.AppBundleId)
211
212 query := url.Values{
213 "ipa": []string{downloadFullUrl},
214 "title": []string{name},
215 "id": []string{bundleId},
216 }
217 proxyUrl.RawQuery = query.Encode()
218 manifestUrl = proxyUrl.String()
219 }
220 if usingManifestProxy {
221 log.Warn().Str("base_url", getBaseUrl(c)).Msg("using OTA manifest proxy, installation may not work")
222 }
223 appName, err := app.GetString(storage.AppName)
224 if err != nil {
225 return err
226 }
227 data := assets.InstallData{
228 ManifestUrl: manifestUrl,
229 AppName: appName,
230 }
231 t, err := htmlTemplate.New("").Parse(assets.InstallHtml)
232 if err != nil {
233 return err
234 }
235 var result bytes.Buffer
236 if err := t.Execute(&result, data); err != nil {
237 return err
238 }
239 return c.HTMLBlob(200, result.Bytes())
240}
241

Callers

nothing calls this directly

Calls 6

JoinUrlsFunction · 0.92
getBaseUrlFunction · 0.85
logErrAppFunction · 0.85
NewMethod · 0.80
GetIdMethod · 0.65
GetStringMethod · 0.65

Tested by

no test coverage detected