handlers

package
v0.0.0-...-e59cf99 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 28, 2025 License: GPL-3.0 Imports: 18 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var SubmissionStatus = struct {
	Pending      string
	CompileError string
	WrongAnswer  string
	MemoryLimit  string
	TimeLimit    string
	RuntimeError string
	Ok           string
}{
	Pending:      "pending",
	CompileError: "compile_error",
	WrongAnswer:  "wrong_answer",
	MemoryLimit:  "memory_limit",
	TimeLimit:    "time_limit",
	RuntimeError: "runtime_error",
	Ok:           "ok",
}

SubmissionStatus represents the possible statuses of a submission

Functions

func CheckValidToken

func CheckValidToken(r *http.Request) (uint, string, error)

func ComparePasswords

func ComparePasswords(hashedPassword, plainPassword string) bool

func CreateProblem

func CreateProblem(c *gin.Context)

func CreateSubmission

func CreateSubmission(c *gin.Context)

CreateSubmission handles the API endpoint for creating a new submission

func DeleteProblem

func DeleteProblem(c *gin.Context)

func GetCurrentUser

func GetCurrentUser(c *gin.Context)

GetCurrentUser returns information about the currently logged-in user

func GetProblem

func GetProblem(c *gin.Context)

func GetSubmission

func GetSubmission(c *gin.Context)

GetSubmission handles the API endpoint for getting a single submission

func HandleCreateProblem

func HandleCreateProblem(c *gin.Context)

HandleCreateProblem processes a form submission to create a new problem

func HandleDeleteProblem

func HandleDeleteProblem(c *gin.Context)

HandleDeleteProblem processes a form submission to delete a problem

func HandlePublishDraft

func HandlePublishDraft(c *gin.Context)

HandlePublishDraft processes a form submission to publish a draft problem

func HandlePublishProblem

func HandlePublishProblem(c *gin.Context)

HandlePublishProblem handles HTTP form submissions for publishing/unpublishing problems

func HandleSubmitSolution

func HandleSubmitSolution(c *gin.Context)

func HandleToggleUserRole

func HandleToggleUserRole(c *gin.Context)

HandleToggleUserRole processes a form submission to change a user's role

func HashPassword

func HashPassword(password string) (string, error)

func InitHandlers

func InitHandlers(router *gin.Engine)

InitHandlers initializes all route handlers for the application

func IsValidPassword

func IsValidPassword(password string) bool

func ListProblems

func ListProblems(c *gin.Context)

func ListSubmissions

func ListSubmissions(c *gin.Context)

func ListUsers

func ListUsers(c *gin.Context)

ListUsers returns a list of all users in the system (admin access only)

func LoginHandler

func LoginHandler(c *gin.Context)

func LogoutHandler

func LogoutHandler(c *gin.Context)

func PublishProblem

func PublishProblem(c *gin.Context)

func RequirePermission

func RequirePermission(permission string) gin.HandlerFunc

RequirePermission creates a middleware that checks if the user has the required permission

func RequireRole

func RequireRole(requiredRole string) gin.HandlerFunc

RequireRole creates a middleware that checks if the user has the required role

func ShowAdminDashboard

func ShowAdminDashboard(c *gin.Context)

ShowAdminDashboard renders the admin dashboard page with users and draft problems

func ShowCreateProblemPage

func ShowCreateProblemPage(c *gin.Context)

ShowCreateProblemPage renders the page for creating a new problem.

func ShowSubmissionPage

func ShowSubmissionPage(c *gin.Context)

ShowSubmissionPage renders the submission view page

func ShowSubmitProblemPage

func ShowSubmitProblemPage(c *gin.Context)

ShowSubmitProblemPage renders the page for submitting a solution to a problem

func ShowUserSubmissionsPage

func ShowUserSubmissionsPage(c *gin.Context)

ShowUserSubmissionsPage renders the page showing a user's submissions

func SignUpHandler

func SignUpHandler(c *gin.Context)

func UpdateProblem

func UpdateProblem(c *gin.Context)

func UpdateSubmissionStatus

func UpdateSubmissionStatus(c *gin.Context)

UpdateSubmissionStatus handles the API endpoint for updating a submission status This would typically be called by the judging service

func UpdateUserRole

func UpdateUserRole(c *gin.Context)

UpdateUserRole changes a user's role between 'admin' and 'user' (admin access only)

Types

type CreateProblemRequest

type CreateProblemRequest struct {
	Title       string     `json:"title" binding:"required"`
	Description string     `json:"description" binding:"required"`
	TimeLimit   int        `json:"timeLimit" binding:"required"`
	MemoryLimit int        `json:"memoryLimit" binding:"required"`
	Difficulty  string     `json:"difficulty" binding:"required"`
	TestCases   []TestCase `json:"testCases" binding:"required"`
	Status      string     `json:"status"`
}

type CreateSubmissionRequest

type CreateSubmissionRequest struct {
	Code       string `json:"code" binding:"required"`
	QuestionId uint   `json:"questionId" binding:"required"`
}

CreateSubmissionRequest defines the request format for creating a submission

type LoginRequest

type LoginRequest struct {
	Username string `form:"username" binding:"required"`
	Password string `form:"password" binding:"required"`
}

type PublishProblemRequest

type PublishProblemRequest struct {
	Status string `json:"status" binding:"required,oneof=draft published"`
}

type TestCase

type TestCase struct {
	Input  string `json:"input" binding:"required"`
	Output string `json:"output" binding:"required"`
}

type UpdateProblemRequest

type UpdateProblemRequest struct {
	Title       string `json:"title"`
	Statement   string `json:"statement"`
	TimeLimit   int    `json:"timeLimit"`
	MemoryLimit int    `json:"memoryLimit"`
	Input       string `json:"input"`
	Output      string `json:"output"`
	Status      string `json:"status"`
}

type UpdateUserRoleRequest

type UpdateUserRoleRequest struct {
	Role string `json:"role" binding:"required,oneof=admin user"`
}

UpdateUserRoleRequest defines the request format for updating a user's role

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL