aboutsummaryrefslogtreecommitdiff
path: root/service/transport.go
diff options
context:
space:
mode:
authorr <r@freesoftwareextremist.com>2020-01-05 18:55:37 +0000
committerr <r@freesoftwareextremist.com>2020-01-05 18:55:37 +0000
commitca711e62ec85a763f1b17c9443125579a0f0be7a (patch)
tree869bc00d3acc7638f08e32ca7494c74a9841ef21 /service/transport.go
parent50e58c4e010959955286e4250ebacb3b93f8c525 (diff)
downloadbloat-ca711e62ec85a763f1b17c9443125579a0f0be7a.tar.gz
bloat-ca711e62ec85a763f1b17c9443125579a0f0be7a.zip
Fix duplicate status ids
Use retweeted_by_id to focus target tweet
Diffstat (limited to 'service/transport.go')
-rw-r--r--service/transport.go40
1 files changed, 32 insertions, 8 deletions
diff --git a/service/transport.go b/service/transport.go
index d481b21..041330d 100644
--- a/service/transport.go
+++ b/service/transport.go
@@ -159,52 +159,76 @@ func NewHandler(s Service, staticDir string) http.Handler {
r.HandleFunc("/like/{id}", func(w http.ResponseWriter, req *http.Request) {
ctx := getContextWithSession(context.Background(), req)
id, _ := mux.Vars(req)["id"]
- err := s.Like(ctx, w, nil, id)
+ retweetedByID := req.FormValue("retweeted_by_id")
+
+ _, err := s.Like(ctx, w, nil, id)
if err != nil {
s.ServeErrorPage(ctx, w, err)
return
}
- w.Header().Add("Location", req.Header.Get("Referer")+"#status-"+id)
+ rID := id
+ if len(retweetedByID) > 0 {
+ rID = retweetedByID
+ }
+ w.Header().Add("Location", req.Header.Get("Referer")+"#status-"+rID)
w.WriteHeader(http.StatusFound)
}).Methods(http.MethodPost)
r.HandleFunc("/unlike/{id}", func(w http.ResponseWriter, req *http.Request) {
ctx := getContextWithSession(context.Background(), req)
id, _ := mux.Vars(req)["id"]
- err := s.UnLike(ctx, w, nil, id)
+ retweetedByID := req.FormValue("retweeted_by_id")
+
+ _, err := s.UnLike(ctx, w, nil, id)
if err != nil {
s.ServeErrorPage(ctx, w, err)
return
}
- w.Header().Add("Location", req.Header.Get("Referer")+"#status-"+id)
+ rID := id
+ if len(retweetedByID) > 0 {
+ rID = retweetedByID
+ }
+ w.Header().Add("Location", req.Header.Get("Referer")+"#status-"+rID)
w.WriteHeader(http.StatusFound)
}).Methods(http.MethodPost)
r.HandleFunc("/retweet/{id}", func(w http.ResponseWriter, req *http.Request) {
ctx := getContextWithSession(context.Background(), req)
id, _ := mux.Vars(req)["id"]
- err := s.Retweet(ctx, w, nil, id)
+ retweetedByID := req.FormValue("retweeted_by_id")
+
+ _, err := s.Retweet(ctx, w, nil, id)
if err != nil {
s.ServeErrorPage(ctx, w, err)
return
}
- w.Header().Add("Location", req.Header.Get("Referer")+"#status-"+id)
+ rID := id
+ if len(retweetedByID) > 0 {
+ rID = retweetedByID
+ }
+ w.Header().Add("Location", req.Header.Get("Referer")+"#status-"+rID)
w.WriteHeader(http.StatusFound)
}).Methods(http.MethodPost)
r.HandleFunc("/unretweet/{id}", func(w http.ResponseWriter, req *http.Request) {
ctx := getContextWithSession(context.Background(), req)
id, _ := mux.Vars(req)["id"]
- err := s.UnRetweet(ctx, w, nil, id)
+ retweetedByID := req.FormValue("retweeted_by_id")
+
+ _, err := s.UnRetweet(ctx, w, nil, id)
if err != nil {
s.ServeErrorPage(ctx, w, err)
return
}
- w.Header().Add("Location", req.Header.Get("Referer")+"#status-"+id)
+ rID := id
+ if len(retweetedByID) > 0 {
+ rID = retweetedByID
+ }
+ w.Header().Add("Location", req.Header.Get("Referer")+"#status-"+rID)
w.WriteHeader(http.StatusFound)
}).Methods(http.MethodPost)