-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtypes.go
More file actions
62 lines (49 loc) · 1.14 KB
/
types.go
File metadata and controls
62 lines (49 loc) · 1.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package main
import (
"net/http"
"regexp"
)
type Config []DomainConfig
// config for domain (converters, parsing rules, credentials, etc.)
type DomainConfig struct {
rewriters []UrlRewriter
parsingRules []ParsingRule
}
// config for input URL ; parsing rules here are a filtered subset of domain's parsing rules
type UrlConfig struct {
parsingRules []ParsingRule
}
type Request struct {
credentials string
url string
}
type ParsingRule struct {
urlPattern string
ruleType string
contentTypes []string
path string
field string
}
type ConfigLoader interface {
Load(dirname string) *Config
}
type DomainMatcher interface {
Match(c *Config, url string) *DomainConfig
}
type UrlRewriter struct {
OriginPattern string
DestinationPattern string
}
func (r UrlRewriter) Rewrite(url string) string {
re := regexp.MustCompile(r.OriginPattern)
return re.ReplaceAllString(url, r.DestinationPattern)
}
type UrlMatcher interface {
Match(c *DomainConfig, url string) *UrlConfig
}
type Requester interface {
Get(c *Request) *http.Response
}
type Redirecter interface {
Redirect(r *http.Response) (url string)
}