cmd

package
v2.4.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 3, 2026 License: Apache-2.0 Imports: 37 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	Main = gcmd.Command{
		Name:  "main",
		Usage: "main",
		Brief: "start http server",
		Func: func(ctx context.Context, parser *gcmd.Parser) (err error) {

			s := g.Server()

			if config.Cfg.Debug.Open {
				runtime.SetMutexProfileFraction(1)
				runtime.SetBlockProfileRate(1)
				s.EnablePProf()
			}

			s.BindHookHandler("/*", ghttp.HookBeforeServe, beforeServeHook)

			s.SetServerRoot("./resource/index/")

			s.Group("/", func(g *ghttp.RouterGroup) {
				g.Middleware(middlewareHandlerResponse)
				g.Bind(
					health.NewV1(),
				)
			})

			s.BindHandler("/v1/realtime", func(r *ghttp.Request) {
				middleware(r)
				if err := service.Realtime().Realtime(r.GetCtx(), r, model.RealtimeRequest{
					Model: r.FormValue("model"),
				}, nil, nil); err != nil {
					err := errors.Error(r.GetCtx(), err)
					r.Response.Header().Set("Content-Type", "application/json")
					r.Response.WriteStatus(err.Status(), gjson.MustEncodeString(err))
					r.Exit()
				}
			})

			s.Group("/v1", func(v1 *ghttp.RouterGroup) {

				v1.Middleware(middlewareHandlerResponse)
				v1.Middleware(middleware)

				v1.Group("/", func(g *ghttp.RouterGroup) {
					g.Bind(
						dashboard.NewV1(),
						openai.NewV1(),
						anthropic.NewV1(),
						google.NewV1(),
						embedding.NewV1(),
						moderation.NewV1(),
						general.NewV1(),
					)
				})

				v1.Group("/dashboard", func(g *ghttp.RouterGroup) {
					g.Bind(
						dashboard.NewV1(),
					)
				})

				v1.Group("/chat", func(g *ghttp.RouterGroup) {
					g.Bind(
						chat.NewV1(),
					)
				})

				v1.Group("/images", func(g *ghttp.RouterGroup) {
					g.Bind(
						image.NewV1(),
					)
				})

				v1.Group("/audio", func(g *ghttp.RouterGroup) {
					g.Bind(
						audio.NewV1(),
					)
				})

				v1.Group("/videos", func(g *ghttp.RouterGroup) {
					g.Bind(
						video.NewV1(),
					)
				})

				v1.Group("/files", func(g *ghttp.RouterGroup) {
					g.Bind(
						file.NewV1(),
					)
				})

				v1.Group("/batches", func(g *ghttp.RouterGroup) {
					g.Bind(
						batch.NewV1(),
					)
				})

				v1.Group("/contents/generations", func(g *ghttp.RouterGroup) {
					g.Bind(
						volcengine.NewV1(),
					)
				})
			})

			s.Group("/v1beta", func(v1 *ghttp.RouterGroup) {
				v1.Middleware(middlewareHandlerResponse)
				v1.Middleware(middleware)
				v1.Bind(
					google.NewV1(),
				)
			})

			s.Group("/mj**", func(v1 *ghttp.RouterGroup) {
				v1.Middleware(middlewareHandlerResponse)
				v1.Middleware(middleware)
				v1.Bind(
					midjourney.NewV1(),
				)
			})

			s.Group("/api/v3", func(v1 *ghttp.RouterGroup) {
				v1.Middleware(middlewareHandlerResponse)
				v1.Middleware(middleware)
				v1.Group("/contents/generations", func(g *ghttp.RouterGroup) {
					g.Bind(
						volcengine.NewV1(),
					)
				})
			})

			s.Group("/{provider}/v1", func(v1 *ghttp.RouterGroup) {

				v1.Middleware(middlewareHandlerResponse)
				v1.Middleware(middleware)

				v1.Group("/files", func(g *ghttp.RouterGroup) {
					g.Bind(
						file.NewV1(),
					)
				})

				v1.Group("/batches", func(g *ghttp.RouterGroup) {
					g.Bind(
						batch.NewV1(),
					)
				})
			})

			if config.Cfg.ApiServerAddress != "" {
				s.SetAddr(config.Cfg.ApiServerAddress)
			}

			if _, err = redis.HSet(ctx, consts.SERVERS_KEY, g.Map{fmt.Sprintf("api:%s", util.GetLocalIp()): s.GetListenedAddress()}); err != nil {
				logger.Error(ctx, err)
			}

			s.Run()

			return nil
		},
	}
)

Functions

This section is empty.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL