package twi

import (
	"github.com/gin-gonic/gin"
	"courseSign/server/api/v1"
	"courseSign/server/middleware"
)

type TwiMetamaskRouter struct {
}

// InitTwiMetamaskRouter 初始化 TwiMetamask 路由信息
func (s *TwiMetamaskRouter) InitTwiMetamaskRouter(Router *gin.RouterGroup) {
	twiMetamaskRouter := Router.Group("twiMetamask").Use(middleware.OperationRecord())
	twiMetamaskRouterWithoutRecord := Router.Group("twiMetamask")
	var twiMetamaskApi = v1.ApiGroupApp.TwiApiGroup.TwiMetamaskApi
	{
		twiMetamaskRouter.POST("createTwiMetamask", twiMetamaskApi.CreateTwiMetamask)   // 新建TwiMetamask
		twiMetamaskRouter.DELETE("deleteTwiMetamask", twiMetamaskApi.DeleteTwiMetamask) // 删除TwiMetamask
		twiMetamaskRouter.DELETE("deleteTwiMetamaskByIds", twiMetamaskApi.DeleteTwiMetamaskByIds) // 批量删除TwiMetamask
		twiMetamaskRouter.PUT("updateTwiMetamask", twiMetamaskApi.UpdateTwiMetamask)    // 更新TwiMetamask
		twiMetamaskRouterWithoutRecord.PUT("unbindTwitter", twiMetamaskApi.UnbindTwitter)        // 后台解绑twitter
		twiMetamaskRouterWithoutRecord.PUT("unbindTelegram", twiMetamaskApi.UnbindTelegram)        // 后台解绑telegram
	}
	{
		twiMetamaskRouterWithoutRecord.GET("findTwiMetamask", twiMetamaskApi.FindTwiMetamask)        // 根据ID获取TwiMetamask
		twiMetamaskRouterWithoutRecord.GET("getTwiMetamaskList", twiMetamaskApi.GetTwiMetamaskList)  // 获取TwiMetamask列表
	}
}

// 以下是一个简化的OAuth 1.0a流程概述，它展示了consumerKey和consumerSecret在其中的作用：
//
// 注册Twitter开发者账号并创建应用：在Twitter开发者平台上注册并创建一个应用，获取consumerKey和consumerSecret。
// 请求请求令牌（Request Token）：使用consumerKey和consumerSecret向Twitter发送请求，以获取一个请求令牌（Request Token）和请求令牌密钥（Request Token Secret）。
// 用户授权：将用户重定向到Twitter的授权页面，其中包括请求令牌。用户登录Twitter并授权你的应用访问他们的账户。
// 获取访问令牌（Access Token）：一旦用户授权，你的应用将使用请求令牌和请求令牌密钥向Twitter发送请求，以获取访问令牌（Access Token）和访问令牌密钥（Access Token Secret）。
// 使用访问令牌与Twitter API交互：现在，你可以使用访问令牌和访问令牌密钥来代表用户与Twitter的API进行交互了。
// 请注意，这个流程是为了说明consumerKey在OAuth认证中的作用而简化的。在实际应用中，你可能需要使用Twitter SDK或第三方库来更方便地处理OAuth认证和API调用。

// InitTwiMetamaskPubRouter 初始化 TwiMetamask 路由信息
func (s *TwiMetamaskRouter) InitTwiMetamaskPubRouter(Router *gin.RouterGroup) {
	twiMetamaskRouterWithoutRecord := Router.Group("twiMetamask")
	var twiMetamaskApi = v1.ApiGroupApp.TwiApiGroup.TwiMetamaskApi
	{
		twiMetamaskRouterWithoutRecord.GET("login", twiMetamaskApi.Login)        // metamask  验签登录  获取jwt token
		twiMetamaskRouterWithoutRecord.GET("callback", twiMetamaskApi.CallBack)        // 用户授权跳转 获取到用户的access-token 和 secret 再拿用户token请求用户信息
		twiMetamaskRouterWithoutRecord.GET("auth", twiMetamaskApi.Auth)        // 用户授权应用登录
		twiMetamaskRouterWithoutRecord.GET("twi",twiMetamaskApi.GetTwiByAddr)   // 公告接口通过地址获取twi Username
		twiMetamaskRouterWithoutRecord.GET("teleCallback", twiMetamaskApi.TeleCallback)        // 用户授权应用登录

	}
}

func (s *TwiMetamaskRouter) InitTwiMetamaskWebRouter(Router *gin.RouterGroup) {
	twiMetamaskRouterWithoutRecord := Router.Group("twiMetamask")
	var twiMetamaskApi = v1.ApiGroupApp.TwiApiGroup.TwiMetamaskApi
	{

		twiMetamaskRouterWithoutRecord.GET("info", twiMetamaskApi.GetInfo)        // 获取信息
	}
}