Documentation
¶
Index ¶
- Variables
- func ParseContestQID(qid string, c Client, withQuestions bool) (*Contest, []*QuestionData, error)
- type CheckResult
- type Client
- type ClientOption
- type CodeSnippet
- type Contest
- func (ct *Contest) GetAllQuestions() ([]*QuestionData, error)
- func (ct *Contest) GetQuestionByNumber(num int) (*QuestionData, error)
- func (ct *Contest) GetQuestionNumber(slug string) (int, error)
- func (ct *Contest) HasFinished() bool
- func (ct *Contest) HasStarted() bool
- func (ct *Contest) Refresh() error
- func (ct *Contest) TimeTillStart() time.Duration
- type CredentialsProvider
- type FilenameTemplateData
- type InterpretSolutionResult
- type JsonExampleTestCases
- type MetaData
- type MetaDataConstructor
- type MetaDataMethod
- type MetaDataParam
- type MetaDataReturn
- type NeedClient
- type Options
- type QuestionData
- func (q *QuestionData) Contest() *Contest
- func (q *QuestionData) ContestUrl() string
- func (q *QuestionData) Fulfill() error
- func (q *QuestionData) GetCodeSnippet(slug string) string
- func (q *QuestionData) GetContent() (string, config.Language)
- func (q *QuestionData) GetFormattedContent() string
- func (q *QuestionData) GetFormattedFilename(lang string, filenameTemplate string) (string, error)
- func (q *QuestionData) GetTestCases() []string
- func (q *QuestionData) GetTitle() string
- func (q *QuestionData) IsContest() bool
- func (q *QuestionData) ParseExampleOutputs() []string
- func (q *QuestionData) TagSlugs() []string
- func (q *QuestionData) Url() string
- type QuestionFilter
- type QuestionList
- type QuestionTag
- type QuestionsCache
- type ResettableProvider
- type RunCheckResult
- type SimilarQuestion
- type SimilarQuestions
- type Stats
- type StatusCode
- type SubmitCheckResult
- type TopicTag
- type UserStatus
Constants ¶
This section is empty.
Variables ¶
View Source
var ( ErrPaidOnlyQuestion = errors.New("this is paid only question, you need to subscribe to LeetCode Premium") ErrTooManyRequests = errors.New("you have submitted too frequently, please submit again later") )
View Source
var ErrContestNotStarted = errors.New("contest has not started")
Functions ¶
func ParseContestQID ¶
Types ¶
type CheckResult ¶
type CheckResult interface {
Display(q *QuestionData) string
GetState() string
}
type Client ¶
type Client interface {
BaseURI() string
Inspect(typ string) (map[string]any, error)
Login(username, password string) (*http.Response, error)
GetUserStatus() (*UserStatus, error)
GetQuestionData(slug string) (*QuestionData, error)
GetAllQuestions() ([]*QuestionData, error)
GetTodayQuestion() (*QuestionData, error)
GetQuestionsByFilter(f QuestionFilter, limit int, skip int) (QuestionList, error)
GetQuestionTags() ([]QuestionTag, error)
Test(q *QuestionData, lang string, code string, dataInput string) (
*InterpretSolutionResult,
error,
)
Submit(q *QuestionData, lang string, code string) (string, error)
CheckResult(interpretId string) (CheckResult, error)
GetUpcomingContests() ([]*Contest, error)
GetContest(contestSlug string) (*Contest, error)
RegisterContest(slug string) error
UnregisterContest(slug string) error
}
func NewClient ¶
func NewClient(options ...ClientOption) Client
type ClientOption ¶
type ClientOption func(*Options)
func WithCredentials ¶
func WithCredentials(cred CredentialsProvider) ClientOption
type CodeSnippet ¶
type Contest ¶
type Contest struct {
Id int
TitleSlug string
Title string
StartTime int64
OriginStartTime int64
Duration int
Description string
Questions []*QuestionData
Registered bool
ContainsPremium bool
IsVirtual bool
// contains filtered or unexported fields
}
func (*Contest) GetAllQuestions ¶
func (ct *Contest) GetAllQuestions() ([]*QuestionData, error)
func (*Contest) GetQuestionByNumber ¶
func (ct *Contest) GetQuestionByNumber(num int) (*QuestionData, error)
func (*Contest) HasFinished ¶
func (*Contest) HasStarted ¶
func (*Contest) TimeTillStart ¶
type CredentialsProvider ¶
func CredentialsFromConfig ¶
func CredentialsFromConfig() CredentialsProvider
func NewBrowserAuth ¶
func NewBrowserAuth(browsers ...string) CredentialsProvider
func NewCookiesAuth ¶
func NewCookiesAuth(session, csrftoken string) CredentialsProvider
func NewPasswordAuth ¶
func NewPasswordAuth(username, passwd string) CredentialsProvider
func NonAuth ¶
func NonAuth() CredentialsProvider
type FilenameTemplateData ¶
type InterpretSolutionResult ¶
type JsonExampleTestCases ¶
type JsonExampleTestCases []string
func (*JsonExampleTestCases) UnmarshalJSON ¶
func (j *JsonExampleTestCases) UnmarshalJSON(data []byte) error
type MetaData ¶
type MetaData struct {
Name string `json:"name"`
Params []MetaDataParam `json:"params"`
Return MetaDataReturn `json:"return"`
// System design problems related
SystemDesign bool `json:"systemdesign"`
ClassName string `json:"classname"`
Constructor MetaDataConstructor `json:"constructor"`
Methods []MetaDataMethod `json:"methods"`
// Unknown fields
Manual bool `json:"manual"`
}
func (*MetaData) UnmarshalJSON ¶
type MetaDataConstructor ¶
type MetaDataConstructor struct {
Params []MetaDataParam `json:"params"`
}
type MetaDataMethod ¶
type MetaDataMethod struct {
Name string `json:"name"`
Params []MetaDataParam `json:"params"`
Return MetaDataReturn `json:"return"`
}
type MetaDataParam ¶
type MetaDataReturn ¶
type NeedClient ¶
type NeedClient interface {
SetClient(c Client)
}
type QuestionData ¶
type QuestionData struct {
TitleSlug string `json:"titleSlug"`
QuestionId string `json:"questionId"`
QuestionFrontendId string `json:"questionFrontendId"`
CategoryTitle string `json:"categoryTitle"`
Title string `json:"title"`
TranslatedTitle string `json:"translatedTitle"`
Difficulty string `json:"difficulty"`
TopicTags []TopicTag `json:"topicTags"`
IsPaidOnly bool `json:"isPaidOnly"`
Content string `json:"content"`
TranslatedContent string `json:"translatedContent"`
Status string `json:"status"` // "ac", "notac", or null
Stats Stats `json:"stats"`
Hints []string `json:"hints"`
SimilarQuestions SimilarQuestions `json:"similarQuestions"`
SampleTestCase string `json:"sampleTestCase"`
ExampleTestcases string `json:"exampleTestcases"`
JsonExampleTestcases JsonExampleTestCases `json:"jsonExampleTestcases"`
MetaData MetaData `json:"metaData"`
CodeSnippets []CodeSnippet `json:"codeSnippets"`
// contains filtered or unexported fields
}
func QuestionBySlug ¶
func QuestionBySlug(slug string, c Client) (*QuestionData, error)
QuestionBySlug loads question data from cache first, if not found, fetch from leetcode.com
func QuestionFromCacheByID ¶
func QuestionFromCacheByID(id string, c Client) (*QuestionData, error)
func QuestionFromCacheBySlug ¶
func QuestionFromCacheBySlug(slug string, c Client) (*QuestionData, error)
func (*QuestionData) Contest ¶
func (q *QuestionData) Contest() *Contest
func (*QuestionData) ContestUrl ¶
func (q *QuestionData) ContestUrl() string
func (*QuestionData) Fulfill ¶
func (q *QuestionData) Fulfill() error
func (*QuestionData) GetCodeSnippet ¶
func (q *QuestionData) GetCodeSnippet(slug string) string
func (*QuestionData) GetContent ¶
func (q *QuestionData) GetContent() (string, config.Language)
func (*QuestionData) GetFormattedContent ¶
func (q *QuestionData) GetFormattedContent() string
func (*QuestionData) GetFormattedFilename ¶
func (q *QuestionData) GetFormattedFilename(lang string, filenameTemplate string) (string, error)
func (*QuestionData) GetTestCases ¶
func (q *QuestionData) GetTestCases() []string
func (*QuestionData) GetTitle ¶
func (q *QuestionData) GetTitle() string
func (*QuestionData) IsContest ¶
func (q *QuestionData) IsContest() bool
func (*QuestionData) ParseExampleOutputs ¶
func (q *QuestionData) ParseExampleOutputs() []string
ParseExampleOutputs parses example output from content and translatedContent. We can also get correct example outputs by submitting example inputs to judge server.
func (*QuestionData) TagSlugs ¶
func (q *QuestionData) TagSlugs() []string
func (*QuestionData) Url ¶
func (q *QuestionData) Url() string
type QuestionFilter ¶
type QuestionList ¶
type QuestionList struct {
Questions []*QuestionData `json:"questions"`
HasMore bool `json:"hasMore"`
Total int `json:"total"`
}
type QuestionTag ¶
type QuestionsCache ¶
type QuestionsCache interface {
GetBySlug(slug string) *QuestionData
GetById(id string) *QuestionData
GetAllQuestions() []*QuestionData
GetCacheFile() string
Update() error
}
func GetCache ¶
func GetCache(c Client) QuestionsCache
type ResettableProvider ¶
type ResettableProvider interface {
Reset()
}
type RunCheckResult ¶
type RunCheckResult struct {
InputData string
State string `json:"state"` // STARTED, SUCCESS
StatusCode int `json:"status_code"`
StatusMsg string `json:"status_msg"` // Accepted, Wrong Answer, Time Limit Exceeded, Memory Limit Exceeded, Runtime Error, Compile Error, Output Limit Exceeded, Unknown Error
Memory int `json:"memory"` // 内存消耗 in bytes
StatusMemory string `json:"status_memory"` // 内存消耗
MemoryPercentile float64 `json:"memory_percentile"` // 内存消耗击败百分比
StatusRuntime string `json:"status_runtime"` // 执行用时
RuntimePercentile float64 `json:"runtime_percentile"` // 用时击败百分比
Lang string `json:"lang"`
PrettyLang string `json:"pretty_lang"`
CodeAnswer []string `json:"code_answer"` // return values of our code
CompileError string `json:"compile_error"` //
FullCompileError string `json:"full_compile_error"`
FullRuntimeError string `json:"full_runtime_error"`
CompareResult string `json:"compare_result"` // "111", 1 means correct, 0 means wrong
CorrectAnswer bool `json:"correct_answer"` // true means all passed
CodeOutput []string `json:"code_output"` // output to stdout of our code
StdOutputList []string `json:"std_output_list"` // list of output to stdout, same as code_output
TaskName string `json:"task_name"`
TotalCorrect int `json:"total_correct"` // number of correct answers
TotalTestcases int `json:"total_testcases"` // number of test cases
ElapsedTime int `json:"elapsed_time"`
TaskFinishTime int `json:"task_finish_time"`
RunSuccess bool `json:"run_success"` // true if run success
FastSubmit bool `json:"fast_submit"`
Finished bool `json:"finished"`
ExpectedOutput string `json:"expected_output"`
ExpectedCodeAnswer []string `json:"expected_code_answer"`
ExpectedCodeOutput []string `json:"expected_code_output"`
ExpectedElapsedTime int `json:"expected_elapsed_time"`
ExpectedLang string `json:"expected_lang"`
ExpectedMemory int `json:"expected_memory"`
ExpectedRunSuccess bool `json:"expected_run_success"`
ExpectedStatusCode int `json:"expected_status_code"`
ExpectedStatusRuntime string `json:"expected_status_runtime"`
ExpectedStdOutputList []string `json:"expected_std_output_list"`
ExpectedTaskFinishTime int `json:"expected_task_finish_time"`
ExpectedTaskName string `json:"expected_task_name"`
}
func (*RunCheckResult) Display ¶
func (r *RunCheckResult) Display(q *QuestionData) string
func (*RunCheckResult) GetState ¶
func (r *RunCheckResult) GetState() string
type SimilarQuestion ¶
type SimilarQuestions ¶
type SimilarQuestions []SimilarQuestion
func (*SimilarQuestions) UnmarshalJSON ¶
func (s *SimilarQuestions) UnmarshalJSON(data []byte) error
type Stats ¶
type Stats struct {
TotalAccepted string `json:"totalAccepted"`
TotalSubmission string `json:"totalSubmission"`
TotalAcceptedRaw int `json:"totalAcceptedRaw"`
TotalSubmissionRaw int `json:"totalSubmissionRaw"`
ACRate string `json:"acRate"`
}
func (*Stats) UnmarshalJSON ¶
type StatusCode ¶
type StatusCode int
const ( Accepted StatusCode = 10 WrongAnswer StatusCode = 11 // submit only MemoryLimitExceeded StatusCode = 12 // submit only? OutputLimitExceeded StatusCode = 13 TimeLimitExceeded StatusCode = 14 RuntimeError StatusCode = 15 CompileError StatusCode = 20 )
type SubmitCheckResult ¶
type SubmitCheckResult struct {
CodeOutput string `json:"code_output"` // answers of our code
CompareResult string `json:"compare_result"`
ElapsedTime int `json:"elapsed_time"`
ExpectedOutput string `json:"expected_output"`
FastSubmit bool `json:"fast_submit"`
Finished bool `json:"finished"`
Lang string `json:"lang"`
LastTestcase string `json:"last_testcase"`
Memory int `json:"memory"`
MemoryPercentile float64 `json:"memory_percentile"`
PrettyLang string `json:"pretty_lang"`
QuestionId string `json:"question_id"`
RunSuccess bool `json:"run_success"`
RuntimePercentile float64 `json:"runtime_percentile"`
State string `json:"state"`
StatusCode int `json:"status_code"`
StatusMemory string `json:"status_memory"`
StatusMsg string `json:"status_msg"`
StatusRuntime string `json:"status_runtime"`
StdOutput string `json:"std_output"`
SubmissionId string `json:"submission_id"`
TaskFinishTime int `json:"task_finish_time"`
TaskName string `json:"task_name"`
TotalCorrect int `json:"total_correct"`
TotalTestcases int `json:"total_testcases"`
CompileError string `json:"compile_error"`
FullCompileError string `json:"full_compile_error"`
FullRuntimeError string `json:"full_runtime_error"`
}
func (*SubmitCheckResult) Display ¶
func (r *SubmitCheckResult) Display(q *QuestionData) string
func (*SubmitCheckResult) GetState ¶
func (r *SubmitCheckResult) GetState() string
Click to show internal directories.
Click to hide internal directories.