vspd/webapi/ticketstatus.go
2021-11-16 14:33:39 +00:00

46 lines
1.3 KiB
Go

// Copyright (c) 2020 The Decred developers
// Use of this source code is governed by an ISC
// license that can be found in the LICENSE file.
package webapi
import (
"time"
"github.com/decred/vspd/database"
"github.com/gin-gonic/gin"
"github.com/gin-gonic/gin/binding"
)
// ticketStatus is the handler for "POST /api/v3/ticketstatus".
func ticketStatus(c *gin.Context) {
const funcName = "ticketStatus"
// Get values which have been added to context by middleware.
ticket := c.MustGet(ticketKey).(database.Ticket)
knownTicket := c.MustGet(knownTicketKey).(bool)
reqBytes := c.MustGet(requestBytesKey).([]byte)
if !knownTicket {
log.Warnf("%s: Unknown ticket (clientIP=%s)", funcName, c.ClientIP())
sendError(errUnknownTicket, c)
return
}
var request ticketStatusRequest
if err := binding.JSON.BindBody(reqBytes, &request); err != nil {
log.Warnf("%s: Bad request (clientIP=%s): %v", funcName, c.ClientIP(), err)
sendErrorWithMsg(err.Error(), errBadRequest, c)
return
}
sendJSONResponse(ticketStatusResponse{
Timestamp: time.Now().Unix(),
Request: reqBytes,
TicketConfirmed: ticket.Confirmed,
FeeTxStatus: string(ticket.FeeTxStatus),
FeeTxHash: ticket.FeeTxHash,
VoteChoices: ticket.VoteChoices,
}, c)
}