mirror of
https://github.com/foomo/sesamy-go.git
synced 2025-10-16 12:35:43 +00:00
fix: handle richtsse
This commit is contained in:
parent
74a97246b0
commit
d943476d76
@ -2,6 +2,7 @@ package gtm
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"github.com/ThreeDotsLabs/watermill/message"
|
"github.com/ThreeDotsLabs/watermill/message"
|
||||||
@ -83,19 +84,20 @@ func (p *Publisher) Publish(topic string, messages ...*message.Message) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NOTE: `richsstsse` seems to be last parameter in the query to let's ensure it stays that way
|
||||||
var richsstsse bool
|
var richsstsse bool
|
||||||
if values.Has("richsstsse") {
|
if values.Has("richsstsse") {
|
||||||
values.Del("richsstsse")
|
|
||||||
richsstsse = true
|
richsstsse = true
|
||||||
|
values.Del("richsstsse")
|
||||||
}
|
}
|
||||||
|
|
||||||
u := p.url + "?"
|
url := fmt.Sprintf("%s?%s", p.url, values.Encode())
|
||||||
|
|
||||||
if richsstsse {
|
if richsstsse {
|
||||||
u += "&richsstsse"
|
url += "&richsstsse"
|
||||||
}
|
}
|
||||||
|
|
||||||
req, err := http.NewRequestWithContext(msg.Context(), http.MethodPost, u, body)
|
req, err := http.NewRequestWithContext(msg.Context(), http.MethodPost, url, body)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Wrap(err, "failed to create request")
|
return errors.Wrap(err, "failed to create request")
|
||||||
}
|
}
|
||||||
|
|||||||
@ -25,6 +25,13 @@ const (
|
|||||||
type Data map[string]any
|
type Data map[string]any
|
||||||
|
|
||||||
func Marshal(input *Event) (url.Values, io.Reader, error) {
|
func Marshal(input *Event) (url.Values, io.Reader, error) {
|
||||||
|
var richsstsse bool
|
||||||
|
// NOTE: `richsstsse` seems to be last parameter in the query to let's ensure it stays that way
|
||||||
|
if input.Richsstsse != nil {
|
||||||
|
richsstsse = true
|
||||||
|
input.Richsstsse = nil
|
||||||
|
}
|
||||||
|
|
||||||
a, err := json.Marshal(input)
|
a, err := json.Marshal(input)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
@ -66,13 +73,22 @@ func Marshal(input *Event) (url.Values, io.Reader, error) {
|
|||||||
|
|
||||||
var body []string
|
var body []string
|
||||||
var reader io.Reader
|
var reader io.Reader
|
||||||
for len(ret.Encode()) > 2048 {
|
maxQueryLength := 2048 //
|
||||||
|
if richsstsse {
|
||||||
|
maxQueryLength -= len("&richsstsse")
|
||||||
|
}
|
||||||
|
for len(ret.Encode()) > maxQueryLength {
|
||||||
for s, i := range ret {
|
for s, i := range ret {
|
||||||
ret.Del(s)
|
ret.Del(s)
|
||||||
body = append(body, s+"="+i[0])
|
body = append(body, s+"="+i[0])
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if richsstsse {
|
||||||
|
ret.Add("richsstsse", "")
|
||||||
|
}
|
||||||
|
|
||||||
if len(body) > 0 {
|
if len(body) > 0 {
|
||||||
reader = bytes.NewReader([]byte(strings.Join(body, "&")))
|
reader = bytes.NewReader([]byte(strings.Join(body, "&")))
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user