mirror of
https://github.com/silenceper/wechat.git
synced 2026-02-04 12:52:27 +08:00
53 lines
1.1 KiB
Go
53 lines
1.1 KiB
Go
package basic
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/silenceper/wechat/v2/util"
|
|
)
|
|
|
|
const (
|
|
// 将一条长链接转成短链接
|
|
// https://developers.weixin.qq.com/doc/offiaccount/Account_Management/URL_Shortener.html
|
|
long2shortURL = "https://api.weixin.qq.com/cgi-bin/shorturl?access_token=%s"
|
|
long2shortAction = "long2short"
|
|
)
|
|
|
|
type (
|
|
reqLong2ShortURL struct {
|
|
Action string `json:"action"`
|
|
LongURL string `json:"long_url"`
|
|
}
|
|
resplong2ShortURL struct {
|
|
ShortURL string `json:"short_url"`
|
|
util.CommonError
|
|
}
|
|
)
|
|
|
|
// Long2ShortURL 将一条长链接转成短链接
|
|
func (basic *Basic) Long2ShortURL(longURL string) (shortURL string, err error) {
|
|
var (
|
|
req = &reqLong2ShortURL{
|
|
Action: long2shortAction,
|
|
LongURL: longURL,
|
|
}
|
|
resp = new(resplong2ShortURL)
|
|
ac, uri string
|
|
responseBytes []byte
|
|
)
|
|
ac, err = basic.GetAccessToken()
|
|
if err != nil {
|
|
return
|
|
}
|
|
uri = fmt.Sprintf(long2shortURL, ac)
|
|
responseBytes, err = util.PostJSON(uri, req)
|
|
if err != nil {
|
|
return
|
|
}
|
|
if err = util.DecodeWithError(responseBytes, resp, long2shortAction); err != nil {
|
|
return
|
|
}
|
|
shortURL = resp.ShortURL
|
|
return
|
|
}
|