package models

type CreateWebHookReq struct {
	ClientID     string `json:"client_id"`     // id интеграции
	ClientSecret string `json:"client_secret"` // Секрет интеграции
	GrantType    string `json:"grant_type"`    // Тип авторизационных данных (для кода авторизации – authorization_code)
	Code         string `json:"code"`          // Полученный код авторизации
	RedirectUrl  string `json:"redirect_uri"`  // Redirect URI указанный в настройках интеграции. Должен четко совпадать с тем, что указан в настройках
}

type CreateWebHookResp struct {
	TokenType    string `json:"token_type"`   // Тип токена
	ExpiresIn    int64  `json:"expires_in"`   // ttl в  секундах
	AccessToken  string `json:"access_token"` // Access Token в формате JWT
	RefreshToken string `json:"refresh_token"`
}

type UpdateWebHookReq struct {
	ClientID     string `json:"client_id"`     // id интеграции
	ClientSecret string `json:"client_secret"` // Секрет интеграции
	GrantType    string `json:"grant_type"`    // Тип авторизационных данных (для кода авторизации – authorization_code)
	RefreshToken string `json:"refresh_token"` // Refresh токен
	RedirectUrl  string `json:"redirect_uri"`  // Redirect URI указанный в настройках интеграции. Должен четко совпадать с тем, что указан в настройках
}

type WebHookRequest interface {
	SetClientID(str string)
	SetClientSecret(str string)
	GetGrantType() string
	SetRedirectURL(str string)
	GetToken() string
}

func (req *CreateWebHookReq) SetClientID(str string) {
	req.ClientID = str
}

func (req *CreateWebHookReq) SetClientSecret(str string) {
	req.ClientSecret = str
}

func (req *CreateWebHookReq) GetGrantType() string {
	return req.GrantType
}

func (req *CreateWebHookReq) SetRedirectURL(str string) {
	req.RedirectUrl = str
}

func (req *CreateWebHookReq) GetToken() string {
	return req.Code
}

func (req *UpdateWebHookReq) SetClientID(str string) {
	req.ClientID = str
}

func (req *UpdateWebHookReq) SetClientSecret(str string) {
	req.ClientSecret = str
}

func (req *UpdateWebHookReq) GetGrantType() string {
	return req.GrantType
}

func (req *UpdateWebHookReq) SetRedirectURL(str string) {
	req.RedirectUrl = str
}

func (req *UpdateWebHookReq) GetToken() string {
	return req.RefreshToken
}
