//go:build dpp // +build dpp package dpp import ( "encoding/json" "git.kirsle.net/SketchyMaze/doodle/pkg/doodads" "git.kirsle.net/SketchyMaze/doodle/pkg/filesystem" "git.kirsle.net/SketchyMaze/doodle/pkg/level" "git.kirsle.net/SketchyMaze/doodle/pkg/levelpack" "git.kirsle.net/SketchyMaze/doodle/pkg/plus" "git.kirsle.net/SketchyMaze/dpp/embedding" "git.kirsle.net/SketchyMaze/dpp/license" "git.kirsle.net/SketchyMaze/dpp/license/levelsigning" ) type Plugin struct{} func (Plugin) LoadFromEmbeddable(filename string, fs filesystem.Embeddable, force bool) (*doodads.Doodad, error) { return embedding.LoadFromEmbeddable(filename, fs, force) } func (Plugin) IsRegistered() bool { return license.IsRegistered() } func (Plugin) GetRegistration() (plus.Registration, error) { reg, err := license.GetRegistration() if err != nil { return plus.Registration{}, err } return translateLicenseStruct(reg) } func (Plugin) UploadLicenseFile(filename string) (plus.Registration, error) { reg, err := license.UploadLicenseFile(filename) if err != nil { return plus.Registration{}, err } return translateLicenseStruct(reg) } // Hack: to translate JWT token types, easiest is to just encode/decode them (inner jwt.StandardClaims complexity). func translateLicenseStruct(reg license.Registration) (plus.Registration, error) { jsonStr, err := json.Marshal(reg) if err != nil { return plus.Registration{}, err } var result plus.Registration err = json.Unmarshal(jsonStr, &result) return result, err } func (Plugin) IsLevelPackSigned(lp *levelpack.LevelPack) bool { return levelsigning.IsLevelPackSigned(lp) } func (Plugin) IsLevelSigned(lvl *level.Level) bool { return levelsigning.IsLevelSigned(lvl) } func init() { Driver = Plugin{} }