// package mod_http -- http-движок для архитектуры package engine_http import ( _ "embed" "time" "github.com/gofiber/fiber/v2" "gitp78su.ipnodns.ru/svi/kern/v3" "gitp78su.ipnodns.ru/svi/kern/v3/kc/log_buf" "gitp78su.ipnodns.ru/svi/kern/v3/krn/ktypes" "gitp78su.ipnodns.ru/svi/goarch/lev0/cons" "gitp78su.ipnodns.ru/svi/goarch/lev0/types" "gitp78su.ipnodns.ru/svi/goarch/lev1/arch_doc" "gitp78su.ipnodns.ru/svi/goarch/lev1/view_coord" "gitp78su.ipnodns.ru/svi/goarch/lev2/engine_http/http_api" ) //go:embed index.html var indexHtml []byte // EngineHttp -- http-движок для архитектуры type EngineHttp struct { // fibApp *fiber.App kCtx ktypes.IKernelCtx log ktypes.ILogBuf diaMode string // Режим диаграммы pos types.IViewCoord // Координаты холста archDoc *arch_doc.ArchDoc // Документ архитектуры httpApi *http_api.HttpApi } // NewEngineHttp -- возвращает новый движок HTTP func NewEngineHttp() *EngineHttp { optTerm := log_buf.OptIsTerm(true) optPref := log_buf.OptPrefix("EngineHttp") log := log_buf.NewLogBuf(optTerm, optPref) sf := &EngineHttp{ kCtx: kern.GetKernelCtx(), log: log, diaMode: cons.ModeUseCase, pos: view_coord.NewViewCoord(0, 0), archDoc: arch_doc.GetArchDoc(), httpApi: http_api.NewHttpApi(), } sHttp := kern.GetKernelServerHttp() fibApp := sHttp.Fiber() fibApp.Static("/static", "./static", fiber.Static{ Compress: true, Browse: true, CacheDuration: time.Second * 10, }) fibApp.Get("/", sf.getIndex) fibApp.Get("/api/use_case", sf.postSetModeUseCase) return sf } // Возвращает картинку архитектуры func (sf *EngineHttp) postSetModeUseCase(ctx *fiber.Ctx) error { sf.diaMode = cons.ModeUseCase return ctx.SendString("[mode='" + sf.diaMode + "']") } // Возвращает главную страницу сервиса func (sf *EngineHttp) getIndex(ctx *fiber.Ctx) error { ctx.Response().Header.Set("Content-Type", "text/html") return ctx.Send(indexHtml) }