diff --git a/cmd/main.go b/cmd/main.go index 9be92e4..8177a00 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -49,7 +49,7 @@ func main() { for range time.Tick(time.Hour * 24) { log.Println("tick") - page, err := wikipedia.Get() + page, err := wikipedia.Get(config) if err != nil { log.Println(err) continue diff --git a/config.json.templ b/config.json.templ index 8b5f25d..113a6d5 100644 --- a/config.json.templ +++ b/config.json.templ @@ -1,4 +1,5 @@ { "consumer_key": "", - "consumer_secret": "" + "consumer_secret": "", + "base_url": "https://en.wikipedia.org" } \ No newline at end of file diff --git a/internal/config/config.go b/internal/config/config.go index 2fea9fb..f0bb138 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -8,6 +8,7 @@ import ( type Config struct { ConsumerKey string `json:"consumer_key"` ConsumerSecret string `json:"consumer_secret"` + BaseUrl string `json:"base_url"` } type AccessConfig struct { diff --git a/internal/wikipedia/api.go b/internal/wikipedia/api.go index d4adf69..e39b359 100644 --- a/internal/wikipedia/api.go +++ b/internal/wikipedia/api.go @@ -35,12 +35,10 @@ type randomReponse struct { } `json:"query"` } -const baseURL = "https://de.wikipedia.org" - var noDescription = errors.New("no description found") var noPageInfo = errors.New("no page info found") -func request(params map[string]string) ([]byte, error) { +func request(baseURL string, params map[string]string) ([]byte, error) { builder := strings.Builder{} builder.WriteString(baseURL) builder.WriteString("/w/api.php?") @@ -79,7 +77,7 @@ func responseToPageInfo(response infoResponse) (PageInfo, error) { return PageInfo{}, noPageInfo } -func queryInfo(id int64) (PageInfo, error) { +func queryInfo(baseUrl string, id int64) (PageInfo, error) { params := map[string]string { "action": "query", "pageids": strconv.FormatInt(id, 10), @@ -87,7 +85,7 @@ func queryInfo(id int64) (PageInfo, error) { "inprop": "url", } - content, err := request(params) + content, err := request(baseUrl, params) if err != nil { return PageInfo{}, err } @@ -101,14 +99,14 @@ func queryInfo(id int64) (PageInfo, error) { return responseToPageInfo(response) } -func queryRandom() (int64, error) { +func queryRandom(baseUrl string) (int64, error) { params := map[string]string { "action": "query", "list": "random", "rnnamespace": "0", } - content, err := request(params) + content, err := request(baseUrl, params) if err != nil { return 0, err } diff --git a/internal/wikipedia/wikipedia.go b/internal/wikipedia/wikipedia.go index 80db7c8..897593d 100644 --- a/internal/wikipedia/wikipedia.go +++ b/internal/wikipedia/wikipedia.go @@ -4,6 +4,7 @@ import ( "errors" "fmt" "strings" + . "wikitil/internal/config" ) const retries = 5 @@ -12,15 +13,15 @@ var illegalDescriptionParts = []string{ "Begriffsklärungsseite", } -func Get() (PageInfo, error){ +func Get(config Config) (PageInfo, error){ retryLoop: for i := 0; i < retries; i++ { - id, err := queryRandom() + id, err := queryRandom(config.BaseUrl) if err != nil { return PageInfo{}, err } - info, err := queryInfo(id) + info, err := queryInfo(config.BaseUrl, id) if err != nil { fmt.Println(err)