Procházet zdrojové kódy

protect < > & for json message, prevent it from being encoded.

master
Patrick Peng Sun před 8 roky
rodič
revize
39d70527ae
2 změnil soubory, kde provedl 15 přidání a 4 odebrání
  1. +12
    -1
      kfsend.go
  2. +3
    -3
      kfsend_test.go

+ 12
- 1
kfsend.go Zobrazit soubor

@@ -1,6 +1,7 @@
package main

import (
"bytes"
"encoding/json"
"fmt"
"log"
@@ -28,10 +29,20 @@ func kfSendTxt(user, txt string) {
s.Text.Content = txt
s.ToUser = user

j, _ := json.Marshal(s)
//j, _ := json.Marshal(s) // it will escape html < > and & to \u0006
j, _ := myJSONMarshal(s) // this reserves < > and &
log.Println(string(j))
postJSON(j, u)
}

func myJSONMarshal(t interface{}) ([]byte, error) {
buffer := &bytes.Buffer{}
encoder := json.NewEncoder(buffer)
encoder.SetEscapeHTML(false)
err := encoder.Encode(t)
return buffer.Bytes(), err
}

type sendPicMsg struct {
ToUser string `json:"touser"`
MsgType string `json:"msgtype"`

+ 3
- 3
kfsend_test.go Zobrazit soubor

@@ -10,10 +10,10 @@ var toUser = "oUN420bxqFqlx0ZQHciUOesZO3PE"

func TestSendTxt(t *testing.T) {
SetupConfig()
msg := fmt.Sprintf("测试消息, %s ", time.Now().String())
msg := fmt.Sprintf("测试消息 & < >, %s ", time.Now().String())

randinit()
msg = RandStringRunes(2048)
// randinit()
// msg = RandStringRunes(2048)

kfSendTxt(toUser, msg)
}

Načítá se…
Zrušit
Uložit