瀏覽代碼

cmd: use httputil.WithHeaders instead

thanks diamondburned <3
ayn2op 9 月之前
父節點
當前提交
3bc51c418b
共有 1 個文件被更改,包括 33 次插入36 次删除
  1. 33 36
      cmd/state.go

+ 33 - 36
cmd/state.go

@@ -29,6 +29,7 @@ func openState(token string) error {
 	discordState = ningen.New(token)
 
 	// Handlers
+	discordState.AddHandler(onRaw)
 	discordState.AddHandler(onReady)
 	discordState.AddHandler(onMessageCreate)
 	discordState.AddHandler(onMessageDelete)
@@ -41,54 +42,50 @@ func openState(token string) error {
 		app.messageInput.cache.Invalidate(event.GuildID.String()+" "+event.User.Username, discordState.MemberState.SearchLimit)
 	})
 
-	discordState.AddHandler(func(event *ws.RawEvent) {
-		slog.Debug(
-			"new raw event",
-			"code", event.OriginalCode,
-			"type", event.OriginalType,
-			"data", event.Raw,
-		)
-	})
-
 	discordState.StateLog = func(err error) {
 		slog.Error("state log", "err", err)
 	}
 
-	discordState.OnRequest = append(discordState.OnRequest, onRequest(props))
-
+	discordState.OnRequest = append(discordState.OnRequest, httputil.WithHeaders(getHeaders(props)), onRequest)
 	return discordState.Open(context.TODO())
 }
 
-func onRequest(props gateway.IdentifyProperties) httputil.RequestOption {
-	rawProps, err := json.Marshal(props)
-	if err != nil {
-		slog.Error("failed to marshal identify props", "props", props)
-		return nil
-	}
+func getHeaders(props gateway.IdentifyProperties) http.Header {
+	header := make(http.Header)
 
-	propsHeader := base64.StdEncoding.EncodeToString(rawProps)
-
-	return func(r httpdriver.Request) error {
-		header := make(http.Header)
-		// https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers
-		header.Set("Accept", "*/*")
-		header.Set("Accept-Language", "en-US,en;q=0.7")
-		header.Set("Origin", "https://discord.com")
-		header.Set("Referer", "https://discord.com/channels/@me")
-		header.Set("Sec-Fetch-Dest", "empty")
-		header.Set("Sec-Fetch-Mode", "cors")
-		header.Set("Sec-Fetch-Site", "same-origin")
-		header.Set("X-Debug-Options", "bugReporterEnabled")
-		header.Set("X-Discord-Locale", string(props.SystemLocale))
+	if rawProps, err := json.Marshal(props); err == nil {
+		propsHeader := base64.StdEncoding.EncodeToString(rawProps)
 		header.Set("X-Super-Properties", propsHeader)
-		r.AddHeader(header)
+	}
 
-		if req, ok := r.(*httpdriver.DefaultRequest); ok {
-			slog.Debug("new HTTP request", "method", req.Method, "url", req.URL)
-		}
+	// https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers
+	header.Set("Accept", "*/*")
+	header.Set("Accept-Language", "en-US,en;q=0.7")
+	header.Set("Origin", "https://discord.com")
+	header.Set("Referer", "https://discord.com/channels/@me")
+	header.Set("Sec-Fetch-Dest", "empty")
+	header.Set("Sec-Fetch-Mode", "cors")
+	header.Set("Sec-Fetch-Site", "same-origin")
+	header.Set("X-Debug-Options", "bugReporterEnabled")
+	header.Set("X-Discord-Locale", string(props.SystemLocale))
+	return header
+}
 
-		return nil
+func onRequest(r httpdriver.Request) error {
+	if req, ok := r.(*httpdriver.DefaultRequest); ok {
+		slog.Debug("new HTTP request", "method", req.Method, "url", req.URL)
 	}
+
+	return nil
+}
+
+func onRaw(event *ws.RawEvent) {
+	slog.Debug(
+		"new raw event",
+		"code", event.OriginalCode,
+		"type", event.OriginalType,
+		"data", event.Raw,
+	)
 }
 
 func onReady(r *gateway.ReadyEvent) {