package shortcodes import ( "context" "fmt" "net/http" "os" "fr.latosa-escrima/core" "fr.latosa-escrima/core/models" "fr.latosa-escrima/utils" ) func HandleShortcodes(w http.ResponseWriter, r *http.Request) { var shortcodes []models.Shortcode err := core.DB.NewSelect(). Model(&shortcodes). Relation("Media"). Scan(context.Background()) if err != nil { core.JSONError{ Status: core.Error, Message: err.Error(), }.Respond(w, http.StatusInternalServerError) return } scheme := "http" if r.TLS != nil || os.Getenv("ENVIRONMENT") != "DEV" { // Check if the request is over HTTPS scheme = "https" } // Extract the host host := r.Host baseURL := fmt.Sprintf("%s://%s", scheme, host) if os.Getenv("ENVIRONMENT") != "DEV" { baseURL += "/api" } shortcodes = utils.Map(shortcodes, func(s models.Shortcode) models.Shortcode { if s.MediaID == nil { return s } s.Media.Author = nil s.Media.URL = fmt.Sprintf("%s/media/%s/file", baseURL, s.MediaID) return s }) core.JSONSuccess{ Status: core.Success, Message: "Shortcodes retrieved.", Data: shortcodes, }.Respond(w, http.StatusOK) }