Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 32c5d80

Browse files
chore: update
1 parent 0915f99 commit 32c5d80

File tree

5 files changed

+42
-43
lines changed

5 files changed

+42
-43
lines changed

‎cmd/main.go‎

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import (
55
"log"
66
"os"
77

8+
"github.com/zcong1993/leetcode-tool/internal/config"
9+
810
"github.com/zcong1993/leetcode-tool/cmd/new"
911
"github.com/zcong1993/leetcode-tool/cmd/tags"
1012
"github.com/zcong1993/leetcode-tool/cmd/update"
@@ -36,8 +38,8 @@ var (
3638
tagsForce = tagsCmd.Flag("force", "force update file").Short('f').Bool()
3739
)
3840

39-
func showMeta(number string) {
40-
meta, err := leetcode.GetMetaByNumber(number)
41+
func showMeta(lc*leetcode.Leetcode, number string) {
42+
meta, err := lc.GetMetaByNumber(number)
4143
if err != nil {
4244
log.Fatal(err)
4345
}
@@ -55,15 +57,17 @@ func main() {
5557
app.VersionFlag.Short('v')
5658
app.HelpFlag.Short('h')
5759

60+
lc := leetcode.NewLeetcode(config.NewConfig())
61+
5862
switch kingpin.MustParse(app.Parse(os.Args[1:])) {
5963
case updateCmd.FullCommand():
6064
update.Run()
6165
case newCmd.FullCommand():
62-
new.Run(*number, *lang)
66+
new.Run(lc, *number, *lang)
6367
case metaCmd.FullCommand():
64-
showMeta(*metaNumber)
68+
showMeta(lc, *metaNumber)
6569
case tagsCmd.FullCommand():
66-
tags.Run(*tagsForce)
70+
tags.Run(lc, *tagsForce)
6771
}
6872
}
6973

‎cmd/new/main.go‎

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,6 @@ import (
1010
"strings"
1111
"text/template"
1212

13-
config2 "github.com/zcong1993/leetcode-tool/internal/config"
14-
1513
"github.com/tidwall/gjson"
1614

1715
"github.com/zcong1993/leetcode-tool/pkg/leetcode"
@@ -83,10 +81,11 @@ type MetaWithFolder struct {
8381
FrontendId string
8482
}
8583

86-
func Run(n string, lang string) {
84+
func Run(lc*leetcode.Leetcode, n string, lang string) {
8785
if lang == "" {
88-
lang = config2.GetLang()
86+
lang = lc.Config.Lang
8987
}
88+
9089
config, ok := languageConfigs[lang]
9190
if !ok {
9291
supportLangs := make([]string, len(languageConfigs))
@@ -97,7 +96,7 @@ func Run(n string, lang string) {
9796
}
9897
log.Fatalf("invalid lang, now support %s\n", strings.Join(supportLangs, ","))
9998
}
100-
meta, err := leetcode.GetMetaByNumber(n)
99+
meta, err := lc.GetMetaByNumber(n)
101100
if err != nil || meta == nil {
102101
log.Fatal(err, meta)
103102
}

‎cmd/tags/tag.go‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ func fileExists(path string) bool {
2121
return !os.IsNotExist(err)
2222
}
2323

24-
func Run(force bool) {
25-
tags, err := leetcode.GetTags()
24+
func Run(lc*leetcode.Leetcode, force bool) {
25+
tags, err := lc.GetTags()
2626
if err != nil {
2727
log.Fatal(err)
2828
}

‎internal/config/config.go‎

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,15 @@ type Config struct {
1414

1515
const configPath = ".leetcode.json"
1616

17-
func LoadConfig() Config {
17+
func NewConfig() *Config {
18+
c := loadConfig()
19+
if c.Cookie == "" {
20+
c.Cookie = defaultCookie
21+
}
22+
return &c
23+
}
24+
25+
func loadConfig() Config {
1826
var c Config
1927
content, err := ioutil.ReadFile(configPath)
2028
if err != nil {
@@ -26,17 +34,3 @@ func LoadConfig() Config {
2634
}
2735
return c
2836
}
29-
30-
func GetLang() string {
31-
c := LoadConfig()
32-
return c.Lang
33-
}
34-
35-
func GetCookie() string {
36-
c := LoadConfig()
37-
ck := c.Cookie
38-
if ck == "" {
39-
return defaultCookie
40-
}
41-
return ck
42-
}

‎pkg/leetcode/leetcode.go‎

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,20 @@ var (
3737
}
3838
)
3939

40-
func getAllPloblem() ([]byte, error) {
40+
type Leetcode struct {
41+
Config *config.Config
42+
}
43+
44+
func NewLeetcode(config *config.Config) *Leetcode {
45+
return &Leetcode{Config: config}
46+
}
47+
48+
func (l *Leetcode) getAllProblem() ([]byte, error) {
4149
req, err := http.NewRequest(http.MethodGet, "https://leetcode-cn.com/api/problems/all/", nil)
4250
if err != nil {
4351
return nil, err
4452
}
45-
req.Header.Set("Cookie", config.GetCookie())
53+
req.Header.Set("Cookie", l.Config.Cookie)
4654
resp, err := http.DefaultClient.Do(req)
4755
if err != nil {
4856
return nil, err
@@ -51,11 +59,11 @@ func getAllPloblem() ([]byte, error) {
5159
return ioutil.ReadAll(resp.Body)
5260
}
5361

54-
func findPloblemSlugByNumber(ploblems []byte, number string) string {
55-
return gjson.GetBytes(ploblems, fmt.Sprintf("stat_status_pairs.#(stat.frontend_question_id=\"%s\").stat.question__title_slug", number)).String()
62+
func (l*Leetcode) findProblemSlugByNumber(problems []byte, number string) string {
63+
return gjson.GetBytes(problems, fmt.Sprintf("stat_status_pairs.#(stat.frontend_question_id=\"%s\").stat.question__title_slug", number)).String()
5664
}
5765

58-
func getDetail(slug string) (*Meta, error) {
66+
func (l*Leetcode) getDetail(slug string) (*Meta, error) {
5967
if slug == "" {
6068
return nil, nil
6169
}
@@ -76,7 +84,6 @@ func getDetail(slug string) (*Meta, error) {
7684
if err != nil {
7785
return nil, err
7886
}
79-
//fmt.Println(string(content))
8087
tagsResult := gjson.GetBytes(content, "data.question.topicTags.#.slug").Array()
8188
tags := make([]string, len(tagsResult))
8289
for i, t := range tagsResult {
@@ -85,10 +92,6 @@ func getDetail(slug string) (*Meta, error) {
8592

8693
codeSnippets := gjson.GetBytes(content, "data.question.codeSnippets").String()
8794

88-
//for _, v := range gjson.GetBytes(content, "data.question.codeSnippets.#.lang").Array() {
89-
// println(v.String())
90-
//}
91-
9295
return &Meta{
9396
Index: gjson.GetBytes(content, "data.question.questionId").String(),
9497
Title: gjson.GetBytes(content, "data.question.translatedTitle").String(),
@@ -101,17 +104,16 @@ func getDetail(slug string) (*Meta, error) {
101104
}, nil
102105
}
103106

104-
func GetMetaByNumber(number string) (*Meta, error) {
105-
//ploblems, err := ioutil.ReadFile("./solve/a.json")
106-
ploblems, err := getAllPloblem()
107+
func (l *Leetcode) GetMetaByNumber(number string) (*Meta, error) {
108+
problems, err := l.getAllProblem()
107109
if err != nil {
108110
return nil, err
109111
}
110-
slug := findPloblemSlugByNumber(ploblems, number)
111-
return getDetail(slug)
112+
slug := l.findProblemSlugByNumber(problems, number)
113+
return l.getDetail(slug)
112114
}
113115

114-
func GetTags() ([]Tag, error) {
116+
func (l*Leetcode) GetTags() ([]Tag, error) {
115117
resp, err := http.Get("https://leetcode-cn.com/problems/api/tags/")
116118
if err != nil {
117119
return nil, err

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /