/* Copyright © 2024 Seednode */ package flash import ( "fmt" "net/http" "strings" "seedno.de/seednode/roulette/types" ) type Format struct{} func (t Format) CSP(w http.ResponseWriter) string { nonce := types.GetNonce() w.Header().Add("Content-Security-Policy", fmt.Sprintf("default-src 'self' 'nonce-%s'; script-src 'self' 'unsafe-inline'", nonce)) return nonce } func (t Format) CSS() string { var css strings.Builder css.WriteString(`html,body{margin:0;padding:0;height:100%;}`) css.WriteString(`a{color:inherit;display:block;height:100%;width:100%;text-decoration:none;}`) return css.String() } func (t Format) Title(rootUrl, fileUri, filePath, fileName, prefix, mime string) (string, error) { return fmt.Sprintf(`%s`, fileName), nil } func (t Format) Body(rootUrl, fileUri, filePath, fileName, prefix, mime, nonce string) (string, error) { var html strings.Builder html.WriteString(fmt.Sprintf(``, nonce, fileUri)) html.WriteString(fmt.Sprintf(`
`, rootUrl)) return html.String(), nil } func (t Format) Extensions() map[string]string { return map[string]string{ `.swf`: `application/x-shockwave-flash`, } } func (t Format) MediaType(extension string) string { extensions := t.Extensions() value, exists := extensions[extension] if exists { return value } return "" } func (t Format) Validate(filePath string) bool { return true } func (t Format) Type() string { return "embed" } func init() { types.SupportedFormats.Register(Format{}) }