1
1
package core
2
2
3
3
import (
4
+ "context"
4
5
"fmt"
5
6
"io"
6
7
"net/http"
@@ -39,9 +40,9 @@ func NewServerMeta(client *http.Client, backend Backend, kv utils.KVConfig, doma
39
40
return & ServerMeta {backend , domain , client , kv , ttl , utils .NewLocker ()}
40
41
}
41
42
42
- func (s * ServerMeta ) GetMeta (owner , repo , branch string ) (* PageMetaContent , error ) {
43
+ func (s * ServerMeta ) GetMeta (ctx context. Context , owner , repo , branch string ) (* PageMetaContent , error ) {
43
44
rel := NewPageMetaContent ()
44
- if repos , err := s .Repos (owner ); err != nil {
45
+ if repos , err := s .Repos (ctx , owner ); err != nil {
45
46
return nil , err
46
47
} else {
47
48
defBranch := repos [repo ]
@@ -52,7 +53,7 @@ func (s *ServerMeta) GetMeta(owner, repo, branch string) (*PageMetaContent, erro
52
53
branch = defBranch
53
54
}
54
55
}
55
- if branches , err := s .Branches (owner , repo ); err != nil {
56
+ if branches , err := s .Branches (ctx , owner , repo ); err != nil {
56
57
return nil , err
57
58
} else {
58
59
info := branches [branch ]
@@ -64,7 +65,7 @@ func (s *ServerMeta) GetMeta(owner, repo, branch string) (*PageMetaContent, erro
64
65
}
65
66
66
67
key := fmt .Sprintf ("meta/%s/%s/%s" , owner , repo , branch )
67
- cache , err := s .cache .Get (key )
68
+ cache , err := s .cache .Get (ctx , key )
68
69
if err != nil && ! errors .Is (err , os .ErrNotExist ) {
69
70
return nil , err
70
71
}
@@ -79,7 +80,7 @@ func (s *ServerMeta) GetMeta(owner, repo, branch string) (*PageMetaContent, erro
79
80
mux := s .locker .Open (key )
80
81
mux .Lock ()
81
82
defer mux .Unlock ()
82
- cache , err = s .cache .Get (key )
83
+ cache , err = s .cache .Get (ctx , key )
83
84
if err == nil {
84
85
if err = rel .From (cache ); err == nil {
85
86
if ! rel .IsPage {
@@ -90,25 +91,25 @@ func (s *ServerMeta) GetMeta(owner, repo, branch string) (*PageMetaContent, erro
90
91
}
91
92
92
93
// 确定存在 index.html , 否则跳过
93
- if find , _ := s .FileExists (owner , repo , rel .CommitID , "index.html" ); ! find {
94
+ if find , _ := s .FileExists (ctx , owner , repo , rel .CommitID , "index.html" ); ! find {
94
95
rel .IsPage = false
95
- _ = s .cache .Put (key , rel .String (), s .ttl )
96
+ _ = s .cache .Put (ctx , key , rel .String (), s .ttl )
96
97
return nil , os .ErrNotExist
97
98
} else {
98
99
rel .IsPage = true
99
100
}
100
101
errFunc := func (err error ) (* PageMetaContent , error ) {
101
102
rel .IsPage = false
102
103
rel .ErrorMsg = err .Error ()
103
- _ = s .cache .Put (key , rel .String (), s .ttl )
104
+ _ = s .cache .Put (ctx , key , rel .String (), s .ttl )
104
105
return nil , err
105
106
}
106
107
// 添加默认跳过的内容
107
108
for _ , defIgnore := range rel .Ignore {
108
109
rel .ignoreL = append (rel .ignoreL , glob .MustCompile (defIgnore ))
109
110
}
110
111
// 解析配置
111
- if data , err := s .ReadString (owner , repo , rel .CommitID , ".pages.yaml" ); err == nil {
112
+ if data , err := s .ReadString (ctx , owner , repo , rel .CommitID , ".pages.yaml" ); err == nil {
112
113
cfg := new (PageConfig )
113
114
if err = yaml .Unmarshal ([]byte (data ), cfg ); err != nil {
114
115
return errFunc (err )
@@ -172,7 +173,7 @@ func (s *ServerMeta) GetMeta(owner, repo, branch string) (*PageMetaContent, erro
172
173
}
173
174
174
175
// 兼容 github 的 CNAME 模式
175
- if cname , err := s .ReadString (owner , repo , rel .CommitID , "CNAME" ); err == nil {
176
+ if cname , err := s .ReadString (ctx , owner , repo , rel .CommitID , "CNAME" ); err == nil {
176
177
cname = strings .TrimSpace (cname )
177
178
if regexpHostname .MatchString (cname ) && ! strings .HasSuffix (strings .ToLower (cname ), strings .ToLower (s .Domain )) {
178
179
rel .Alias = append (rel .Alias , cname )
@@ -182,12 +183,12 @@ func (s *ServerMeta) GetMeta(owner, repo, branch string) (*PageMetaContent, erro
182
183
}
183
184
rel .Alias = utils .ClearDuplicates (rel .Alias )
184
185
rel .Ignore = utils .ClearDuplicates (rel .Ignore )
185
- _ = s .cache .Put (key , rel .String (), s .ttl )
186
+ _ = s .cache .Put (ctx , key , rel .String (), s .ttl )
186
187
return rel , nil
187
188
}
188
189
189
- func (s * ServerMeta ) ReadString (owner , repo , branch , path string ) (string , error ) {
190
- resp , err := s .Open (s .client , owner , repo , branch , path , nil )
190
+ func (s * ServerMeta ) ReadString (ctx context. Context , owner , repo , branch , path string ) (string , error ) {
191
+ resp , err := s .Open (ctx , s .client , owner , repo , branch , path , nil )
191
192
if resp != nil {
192
193
defer resp .Body .Close ()
193
194
}
@@ -204,8 +205,8 @@ func (s *ServerMeta) ReadString(owner, repo, branch, path string) (string, error
204
205
return string (all ), nil
205
206
}
206
207
207
- func (s * ServerMeta ) FileExists (owner , repo , branch , path string ) (bool , error ) {
208
- resp , err := s .Open (s .client , owner , repo , branch , path , nil )
208
+ func (s * ServerMeta ) FileExists (ctx context. Context , owner , repo , branch , path string ) (bool , error ) {
209
+ resp , err := s .Open (ctx , s .client , owner , repo , branch , path , nil )
209
210
if resp != nil {
210
211
defer resp .Body .Close ()
211
212
}
0 commit comments