@@ -6,8 +6,27 @@ import (
66 "strings"
77
88 "github.com/OpenListTeam/OpenList/v4/drivers/base"
9+ "github.com/go-resty/resty/v2"
910)
1011
12+ // 发送 GET 请求
13+ func (d * GithubReleases ) GetRequest (url string ) (* resty.Response , error ) {
14+ req := base .RestyClient .R ()
15+ req .SetHeader ("Accept" , "application/vnd.github+json" )
16+ req .SetHeader ("X-GitHub-Api-Version" , "2022-11-28" )
17+ if d .Addition .Token != "" {
18+ req .SetHeader ("Authorization" , fmt .Sprintf ("Bearer %s" , d .Addition .Token ))
19+ }
20+ res , err := req .Get (url )
21+ if err != nil {
22+ return nil , err
23+ }
24+ if res .StatusCode () != 200 {
25+ return nil , fmt .Errorf ("github api error: status %d" , res .StatusCode ())
26+ }
27+ return res , nil
28+ }
29+
1130// 解析挂载结构
1231func (d * GithubReleases ) ParseRepos (text string ) ([]MountPoint , error ) {
1332 lines := strings .Split (text , "\n " )
@@ -57,12 +76,12 @@ func GetNextDir(wholePath string, basePath string) string {
5776
5877// getLatestRelease 获取最新 release
5978func (d * GithubReleases ) getLatestRelease (repo string ) (* Release , error ) {
60- resp , err := d .githubGet ("https://api.github.com/repos/" + repo + "/releases/latest" )
79+ resp , err := d .GetRequest ("https://api.github.com/repos/" + repo + "/releases/latest" )
6180 if err != nil {
6281 return nil , err
6382 }
6483 release := new (Release )
65- if err := json .Unmarshal (resp , release ); err != nil {
84+ if err := json .Unmarshal (resp . Body () , release ); err != nil {
6685 return nil , err
6786 }
6887 return release , nil
@@ -87,13 +106,13 @@ func (d *GithubReleases) getAllReleases(repo string) ([]Release, error) {
87106
88107 for {
89108 url := fmt .Sprintf ("https://api.github.com/repos/%s/releases?per_page=%d&page=%d" , repo , perPage , page )
90- resp , err := d .githubGet (url )
109+ resp , err := d .GetRequest (url )
91110 if err != nil {
92111 return nil , err
93112 }
94113
95114 releases := make ([]Release , 0 )
96- if err := json .Unmarshal (resp , & releases ); err != nil {
115+ if err := json .Unmarshal (resp . Body () , & releases ); err != nil {
97116 return nil , err
98117 }
99118
@@ -121,31 +140,13 @@ func (d *GithubReleases) getAllReleases(repo string) ([]Release, error) {
121140
122141// fetchRepoFiles 获取仓库根目录文件列表
123142func (d * GithubReleases ) fetchRepoFiles (repo string ) ([]FileInfo , error ) {
124- resp , err := d .githubGet ("https://api.github.com/repos/" + repo + "/contents" )
143+ resp , err := d .GetRequest ("https://api.github.com/repos/" + repo + "/contents" )
125144 if err != nil {
126145 return nil , err
127146 }
128147 files := make ([]FileInfo , 0 )
129- if err := json .Unmarshal (resp , & files ); err != nil {
148+ if err := json .Unmarshal (resp . Body () , & files ); err != nil {
130149 return nil , err
131150 }
132151 return files , nil
133152}
134-
135- // githubGet 发送 GitHub API GET 请求
136- func (d * GithubReleases ) githubGet (url string ) ([]byte , error ) {
137- req := base .RestyClient .R ()
138- req .SetHeader ("Accept" , "application/vnd.github+json" )
139- req .SetHeader ("X-GitHub-Api-Version" , "2022-11-28" )
140- if d .Addition .Token != "" {
141- req .SetHeader ("Authorization" , fmt .Sprintf ("Bearer %s" , d .Addition .Token ))
142- }
143- res , err := req .Get (url )
144- if err != nil {
145- return nil , err
146- }
147- if res .StatusCode () != 200 {
148- return nil , fmt .Errorf ("github api error: status %d" , res .StatusCode ())
149- }
150- return res .Body (), nil
151- }
0 commit comments