iot_server/internal/hummingbird/core/route/gateway.go

207 lines
7.9 KiB
Go
Raw Permalink Normal View History

2023-08-29 07:36:46 +00:00
/*******************************************************************************
* Copyright 2017 Dell Inc.
* Copyright (c) 2019 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
* in compliance with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*******************************************************************************/
package route
import (
"github.com/winc-link/hummingbird/internal/hummingbird/core/controller/http/gateway"
"github.com/winc-link/hummingbird/internal/hummingbird/core/controller/http/websocket"
"github.com/winc-link/hummingbird/internal/pkg/di"
"github.com/winc-link/hummingbird/internal/tools/jwt"
"github.com/gin-gonic/gin"
"github.com/swaggo/files"
gs "github.com/swaggo/gin-swagger"
)
func RegisterGateway(engine *gin.Engine, dic *di.Container) {
ctl := gateway.New(dic)
v1 := engine.Group("/api/v1")
v1.GET("/swagger/*any", gs.WrapHandler(swaggerFiles.Handler))
v1.POST("auth/login", ctl.Login)
v1.GET("auth/initInfo", ctl.InitInfo)
v1.POST("auth/init-password", ctl.InitPassword)
v1.POST("ekuiper/alert", ctl.EkuiperAlert)
v1.POST("ekuiper/scene", ctl.EkuiperScene) //ekuiper 服务调用
v1.GET("ws/", websocket.NewServer(dic).Handle)
v1Auth := v1.Group("", jwt.JWTAuth(false))
v1Auth.PUT("auth/password", ctl.UpdatePassword)
/*******首页 *******/
{
v1Auth.GET("home-page", ctl.HomePage)
}
{
v1Auth.GET("local/config/network", ctl.ConfigNetWorkGet)
v1Auth.PUT("local/config/network", ctl.ConfigNetWorkUpdate)
v1Auth.GET("local/config/dns", ctl.ConfigDnsGet)
v1Auth.PUT("local/config/dns", ctl.ConfigDnsUpdate)
}
{
/******* 运维管理-agentclient *******/
v1Auth.GET("/metrics/system", ctl.SystemMetricsHandler)
}
/*******云服实例*******/
{
v1Auth.GET("cloud-instance", ctl.CloudInstanceSearch)
}
/******* 镜像仓库管理 *******/
{
v1Auth.POST("docker-configs", ctl.DockerConfigAdd)
v1Auth.GET("docker-configs", ctl.DockerConfigsSearch)
v1Auth.PUT("docker-configs/:dockerConfigId", ctl.DockerConfigUpdate)
v1Auth.DELETE("docker-configs/:dockerConfigId", ctl.DockerConfigDelete)
}
/*******驱动管理 *******/
{
v1Auth.POST("device-libraries", ctl.DeviceLibraryAdd)
v1Auth.GET("device-libraries", ctl.DeviceLibrariesSearch)
v1Auth.DELETE("device-libraries/:deviceLibraryId", ctl.DeviceLibraryDelete)
v1Auth.PUT("device-libraries/:deviceLibraryId", ctl.DeviceLibraryUpdate)
}
/*******驱动实例 *******/
{
v1Auth.GET("device-servers", ctl.DeviceServicesSearch)
v1Auth.PUT("device-server/:deviceServiceId", ctl.DeviceServiceUpdate)
}
/*******驱动市场分类 *******/
{
v1Auth.GET("device-classify", ctl.DeviceClassify)
}
/*******产品管理 *******/
{
v1Auth.GET("products", ctl.ProductsSearch)
v1Auth.GET("product/:productId", ctl.ProductById)
v1Auth.POST("product", ctl.ProductAdd)
v1Auth.POST("product-release/:productId", ctl.ProductRelease)
v1Auth.POST("product-unrelease/:productId", ctl.ProductUnRelease)
v1Auth.DELETE("product/:productId", ctl.ProductDelete)
v1Auth.GET("iot-platform", ctl.IotPlatform)
}
/*******产品物模型管理 *******/
{
v1Auth.GET("thingmodel/system", ctl.SystemThingModelSearch)
v1Auth.POST("thingmodel", ctl.ThingModelAdd)
v1Auth.PUT("thingmodel", ctl.ThingModelUpdate)
v1Auth.DELETE("thingmodel", ctl.ThingModelDelete)
v1Auth.GET("thingmodel/unit", ctl.ThingModelUnit)
v1Auth.POST("thingmodel/unit-sync", ctl.ThingModelUnitSync)
v1Auth.POST("thingmodel/docs-sync", ctl.ThingModelDocsSync)
v1Auth.POST("thingmodel/quicknavigation-sync", ctl.ThingModelQuickNavigationSync)
//v1Auth.POST("thingmodel/msg-gather", ctl.MsgGather)
}
/*******设备管理 *******/
{
v1Auth.POST("device", ctl.DeviceByAdd)
v1Auth.GET("devices", ctl.DevicesSearch)
v1Auth.GET("device/:deviceId", ctl.DeviceById)
v1Auth.DELETE("device/:deviceId", ctl.DeviceDelete)
v1Auth.DELETE("devices", ctl.DevicesDelete)
v1Auth.PUT("device/:deviceId", ctl.DeviceUpdate)
v1Auth.GET("device-mqtt/:deviceId", ctl.DeviceMqttInfoById)
v1Auth.POST("device-mqtt", ctl.AddMqttAuth)
v1Auth.GET("device/:deviceId/thing-model/property", ctl.DeviceThingModelPropertyDataSearch)
v1Auth.GET("device/:deviceId/thing-model/history-property", ctl.DeviceThingModelHistoryPropertyDataSearch)
v1Auth.GET("device/:deviceId/thing-model/event", ctl.DeviceThingModelEventDataSearch)
v1Auth.GET("device/:deviceId/thing-model/service", ctl.DeviceThingModelServiceDataSearch)
v1Auth.GET("device/status-template", ctl.DeviceStatusTemplate)
v1Auth.GET("devices/import-template", ctl.DeviceImportTemplateDownload)
v1Auth.POST("devices/import", ctl.DevicesImport)
v1Auth.POST("device/upload-validated", ctl.UploadValidated)
v1Auth.PUT("devices/bind-driver", ctl.DevicesBindDriver)
v1Auth.PUT("devices/unbind-driver", ctl.DevicesUnBindDriver)
v1Auth.PUT("devices/bind-product", ctl.DevicesBindByProductId)
}
/*******品类、物模型同步接口 *******/
{
v1Auth.GET("category-template", ctl.CategoryTemplateSearch)
v1Auth.POST("category-template/sync", ctl.CategoryTemplateSync)
v1Auth.GET("thingmodel-template", ctl.ThingModelTemplateSearch)
v1Auth.GET("thingmodel-template/:categoryKey", ctl.ThingModelTemplateByCategoryKey)
v1Auth.POST("thingmodel-template/sync", ctl.ThingModelTemplateSync)
}
/*******告警中心接口 *******/
{
v1Auth.POST("alert-rule", ctl.AlertRuleAdd)
v1Auth.PUT("alert-rule/:ruleId", ctl.AlertRuleUpdate)
v1Auth.PUT("rule-field", ctl.AlertRuleUpdateField)
v1Auth.GET("alert-rule/:ruleId", ctl.AlertRuleById)
v1Auth.GET("alert-rule", ctl.AlertRuleSearch)
v1Auth.DELETE("alert-rule/:ruleId", ctl.AlertRuleDelete)
v1Auth.POST("alert-rule/:ruleId/start", ctl.AlertRuleStart)
v1Auth.POST("alert-rule/:ruleId/stop", ctl.AlertRuleStop)
v1Auth.POST("alert-rule/:ruleId/restart", ctl.AlertRuleRestart)
v1Auth.GET("alert-list", ctl.AlertSearch)
v1Auth.GET("alert-plate", ctl.AlertPlate)
v1Auth.PUT("alert-ignore/:ruleId", ctl.AlertIgnore)
v1Auth.POST("alert-treated", ctl.AlertTreated)
}
/*******规则引擎 *******/
{
v1Auth.POST("rule-engine", ctl.RuleEngineAdd)
v1Auth.PUT("rule-engine", ctl.RuleEngineUpdate)
v1Auth.GET("rule-engine/:ruleEngineId", ctl.RuleEngineById)
v1Auth.GET("rule-engine", ctl.RuleEngineSearch)
v1Auth.POST("rule-engine/:ruleEngineId/start", ctl.RuleEngineStart)
v1Auth.POST("rule-engine/:ruleEngineId/stop", ctl.RuleEngineStop)
v1Auth.DELETE("rule-engine/:ruleEngineId/delete", ctl.RuleEngineDelete)
v1Auth.GET("rule-engine/:ruleEngineId/status", ctl.RuleEngineStatus)
}
/*******资源管理 *******/
{
v1Auth.GET("typeresource", ctl.DataResourceType)
v1Auth.PUT("dataresource", ctl.UpdateDataResource)
v1Auth.POST("dataresource", ctl.DataResourceAdd)
v1Auth.DELETE("dataresource/:dataResourceId", ctl.DataResourceDel)
v1Auth.GET("dataresource", ctl.DataResourceSearch)
v1Auth.GET("dataresource/:dataResourceId", ctl.DataResourceById)
v1Auth.POST("dataresource/:dataResourceId/health", ctl.DataResourceHealth)
}
/*******场景联动 *******/
{
v1Auth.POST("scene", ctl.SceneAdd)
v1Auth.PUT("scene", ctl.SceneUpdate)
v1Auth.GET("scene/:sceneId", ctl.SceneById)
v1Auth.GET("scene", ctl.SearchScene)
v1Auth.POST("scene/:sceneId/start", ctl.SceneStart)
v1Auth.POST("scene/:sceneId/stop", ctl.SceneStop)
v1Auth.DELETE("scene/:sceneId", ctl.DeleteScene)
v1Auth.GET("scene/:sceneId/log", ctl.SceneLogSearch)
}
/*******文档中心sdk *******/
{
v1Auth.GET("language-sdk", ctl.LanguageSdkSearch)
v1Auth.POST("language-sdk-sync", ctl.LanguageSdkSync)
}
}