package v1

import (
	"encoding/json"

	"gitlab.fjmaimaimai.com/mmm-go/ability/controllers"
	"gitlab.fjmaimaimai.com/mmm-go/ability/protocol"
	s_auth "gitlab.fjmaimaimai.com/mmm-go/ability/services/auth"

	"gitlab.fjmaimaimai.com/mmm-go/gocomm/pkg/log"
	"gitlab.fjmaimaimai.com/mmm-go/gocomm/pkg/mybeego"
)

var(
	auth s_auth.IAuthService = &s_auth.AuthService{}
)

type AuthController struct {
	controllers.BaseController
}

//Login
func(this *AuthController)Login(){
	var msg *mybeego.Message
	defer func(){
		this.Resp(msg)
	}()
	var request *protocol.LoginRequest
	if err:=json.Unmarshal(this.ByteBody,&request);err!=nil{
		log.Error(err)
		msg = mybeego.NewMessage(1)
		return
	}
	if b,m :=this.Valid(request);!b{
		msg = m
		return
	}
	msg = this.GenMessage(auth.Login(request))
}

//SmsCode
func(this *AuthController)SmsCode(){
	var msg *mybeego.Message
	defer func(){
		this.Resp(msg)
	}()
	var request *protocol.SmsCodeRequest
	if err:=json.Unmarshal(this.ByteBody,&request);err!=nil{
		log.Error(err)
		msg = mybeego.NewMessage(1)
		return
	}
	if b,m :=this.Valid(request);!b{
		msg = m
		return
	}
	msg = this.GenMessage(auth.SmsCode(request))
}

//UpdateDevice
func(this *AuthController)UpdateDevice(){
	var msg *mybeego.Message
	defer func(){
		this.Resp(msg)
	}()
	var request *protocol.UpdateDeviceRequest
	if err:=json.Unmarshal(this.ByteBody,&request);err!=nil{
		log.Error(err)
		msg = mybeego.NewMessage(1)
		return
	}
	if b,m :=this.Valid(request);!b{
		msg = m
		return
	}
	msg = this.GenMessage(auth.UpdateDevice(request))
}

//AccessToken
func(this *AuthController)AccessToken(){
	var msg *mybeego.Message
	defer func(){
		this.Resp(msg)
	}()
	var request *protocol.AccessTokenRequest
	if err:=json.Unmarshal(this.ByteBody,&request);err!=nil{
		log.Error(err)
		msg = mybeego.NewMessage(1)
		return
	}
	if b,m :=this.Valid(request);!b{
		msg = m
		return
	}
	msg = this.GenMessage(auth.AccessToken(request))
}

//RefreshToken
func(this *AuthController)RefreshToken(){
	var msg *mybeego.Message
	defer func(){
		this.Resp(msg)
	}()
	var request *protocol.RefreshTokenRequest
	if err:=json.Unmarshal(this.ByteBody,&request);err!=nil{
		log.Error(err)
		msg = mybeego.NewMessage(1)
		return
	}
	if b,m :=this.Valid(request);!b{
		msg = m
		return
	}
	msg = this.GenMessage(auth.RefreshToken(request))
}