summaryrefslogtreecommitdiff
path: root/api/handlers.go
diff options
context:
space:
mode:
Diffstat (limited to 'api/handlers.go')
-rw-r--r--api/handlers.go28
1 files changed, 26 insertions, 2 deletions
diff --git a/api/handlers.go b/api/handlers.go
index c9c3031..04fcc23 100644
--- a/api/handlers.go
+++ b/api/handlers.go
@@ -227,16 +227,30 @@ func (h *Handler) GetArticle(w http.ResponseWriter, r *http.Request) {
return
}
- base := "https://api.enterprise.wikimedia.com/v2/structured-contents/" + url.QueryEscape(article)
- req, err := http.NewRequestWithContext(ctx, "GET", base+"?limit=1&filters[project]=en.wikipedia.org", nil)
+ baseURL := "https://api.enterprise.wikimedia.com/v2/structured-contents/" + url.QueryEscape(article)
+ queryURL := baseURL + "?limit=1&filters[project]=en.wikipedia.org"
+
+ req, err := http.NewRequestWithContext(ctx, "GET", queryURL, nil)
if err != nil {
serverError(w, "could not build request")
return
}
req.Header.Set("Authorization", "Bearer "+acct.AccessToken)
+ start := time.Now()
resp, err := http.DefaultClient.Do(req)
+ elapsed := int(time.Since(start).Milliseconds())
+
if err != nil {
+ log.Printf("article request failed: user=%s article=%s error=%v (%dms)", username, article, err, elapsed)
+ h.db.LogApiCall(ctx, &db.ApiLogEntry{
+ Username: username,
+ ArticleName: article,
+ StatusCode: 0,
+ ResponseMs: elapsed,
+ Error: err.Error(),
+ RequestURL: queryURL,
+ })
serverError(w, "wikimedia api error")
return
}
@@ -244,6 +258,16 @@ func (h *Handler) GetArticle(w http.ResponseWriter, r *http.Request) {
if resp.StatusCode < 200 || resp.StatusCode >= 300 {
b, _ := io.ReadAll(resp.Body)
+ log.Printf("article request failed: user=%s article=%s status=%d body=%s (%dms)",
+ username, article, resp.StatusCode, string(b), elapsed)
+ h.db.LogApiCall(ctx, &db.ApiLogEntry{
+ Username: username,
+ ArticleName: article,
+ StatusCode: resp.StatusCode,
+ ResponseMs: elapsed,
+ Error: string(b),
+ RequestURL: queryURL,
+ })
http.Error(w, string(b), resp.StatusCode)
return
}