| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- // 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)
- }
|