未验证 提交 6a18f091 编写于 作者: LinuxSuRen's avatar LinuxSuRen 提交者: GitHub

Add media list api (#8)

* Add media list api

* Use jenkins-zh instead of linuxsuren

* Add more cmd

* Add ubuntu image
上级 aaa2fb47
......@@ -46,6 +46,7 @@ pipeline {
dir(FOLDER) {
sh '''
docker build -t surenpi/jenkins-wechat:$IMAGE_TAG .
docker build -t surenpi/jenkins-wechat:$IMAGE_TAG-ubuntu -f Dockerfile.ubuntu .
'''
}
}
......@@ -62,6 +63,7 @@ pipeline {
sh '''
docker login -u $DOCKER_CREDS_USR -p $DOCKER_CREDS_PSW
docker push surenpi/jenkins-wechat:$IMAGE_TAG
docker push surenpi/jenkins-wechat:$IMAGE_TAG-ubuntu
docker logout
'''
}
......
......@@ -4,6 +4,10 @@ build:
CGO_ENABLED=0 GOOS=linux go build -ldflags "-w -s" -a -installsuffix cgo -o bin/wechat-backend
upx bin/wechat-backend
run:
CGO_ENABLED=0 go build -ldflags "-w -s" -a -installsuffix cgo -o bin/wechat-backend
./bin/wechat-backend
build-local:
env go build -o bin/wechat-backend
upx bin/wechat-backend
......
......@@ -24,4 +24,6 @@ server_port: 8080
One simple command could bring the Jenkins wechat backend up:
`docker run -t -p 12345:8080 -v /var/wechat/config:/config surenpi/jenkins-wechat`
\ No newline at end of file
`docker run -t -p 12345:8080 -v /var/wechat/config:/config surenpi/jenkins-wechat`
docker run -t -p 45678:18080 -v /var/wechat/config:/config surenpi/jenkins-wechat:dev--LinuxSuRen-gmail.com
\ No newline at end of file
......@@ -12,6 +12,7 @@ import (
"strings"
core "github.com/jenkins-zh/wechat-backend/pkg"
"github.com/jenkins-zh/wechat-backend/pkg/api"
"github.com/jenkins-zh/wechat-backend/pkg/article"
"github.com/jenkins-zh/wechat-backend/pkg/config"
"github.com/jenkins-zh/wechat-backend/pkg/github"
......@@ -152,6 +153,7 @@ func main() {
http.HandleFunc("/", wechat.procRequest)
http.HandleFunc("/status", healthHandler)
http.HandleFunc("/medias", api.ListMedias)
http.HandleFunc("/webhook", func(w http.ResponseWriter, r *http.Request) {
github.WebhookHandler(w, r, weConfig, defaultRM.InitCheck)
})
......
......@@ -6,6 +6,7 @@ import (
"net/http"
"strings"
"github.com/jenkins-zh/wechat-backend/pkg/api"
"github.com/jenkins-zh/wechat-backend/pkg/config"
)
......@@ -79,7 +80,7 @@ func createWxMenu(config *config.WeChatConfig) {
//fmt.Println("生成的菜单json--->", menuStr)
//发送建立菜单的post请求
token := getAccessToken(config)
token := api.GetAccessToken(config)
PushWxMenuCreate(token, []byte(menuStr))
//} else {
// logUtils.GetLog().Error("微信菜单json转换错误", err)
......
package api
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"log"
"net/http"
"github.com/jenkins-zh/wechat-backend/pkg/config"
)
func ListMedias(w http.ResponseWriter, r *http.Request) {
r.ParseForm()
// imageName := r.Form["imageName"]
if weConfig, err := config.LoadConfig("config/wechat.yaml"); err == nil {
token := GetAccessToken(weConfig)
url := fmt.Sprintf("https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=%s", token)
request := ListRequest{
Type: "image",
Offset: 0,
Count: 20,
}
var data []byte
var err error
if data, err = json.Marshal(&request); err != nil {
data = []byte("")
}
log.Println("rquest ", string(data))
postReq, err := http.NewRequest(http.MethodPost,
url,
bytes.NewReader(data))
client := &http.Client{}
resp, err := client.Do(postReq)
if err != nil {
log.Println("rquest media failure", err)
return
} else {
log.Println("media request success")
}
data, err = ioutil.ReadAll(resp.Body)
if err != nil {
log.Println("read media request body error", err)
return
} else {
log.Println("read body success, data: ", string(data))
}
itemList := MediaItemList{}
if err = json.Unmarshal(data, &itemList); err == nil {
for _, item := range itemList.ItemList {
fmt.Println("name: ", item.Name, ", id: ", item.MediaID, "url: ", item.URL)
}
} else {
log.Printf("read yaml error %v, data: %s", err, string(data))
}
}
}
// 素材的类型,图片(image)、视频(video)、语音 (voice)、图文(news)
type ListRequest struct {
Type string `json:"type"`
Offset int `json:"offset"`
Count int `json:"count"`
}
type MediaItemList struct {
TotalCouont int `json:"total_count"`
ItemCount int `json:"item_count"`
ItemList []MediaItem `json:"item"`
}
type MediaItem struct {
MediaID string `json:"media_id"`
Name string `json:"name"`
UpdateTime string `json:"update_time"`
URL string `json:"url"`
}
package main
package api
import (
"encoding/json"
......@@ -16,7 +16,7 @@ type AccessToken struct {
Expires int `json:"expires_in"`
}
func getAccessToken(config *config.WeChatConfig) string {
func GetAccessToken(config *config.WeChatConfig) string {
resp, err := http.Get(strings.Join([]string{"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential",
"&appid=", config.AppID, "&secret=", config.AppSecret}, ""))
if err != nil {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册