Skip to content

Commit 32c5d80

Browse files
committed
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

+9-5
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

+4-5
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

+2-2
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

+9-15
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

+18-16
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)