mirror of
https://github.com/silenceper/wechat.git
synced 2026-02-04 12:52:27 +08:00
long url to short url (#367)
* long url to short url * Decode by util.DecodeWithError
This commit is contained in:
52
officialaccount/basic/short_url.go
Normal file
52
officialaccount/basic/short_url.go
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
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
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user