You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

75 lines
1.5KB

  1. package main
  2. import (
  3. "bytes"
  4. "encoding/json"
  5. "fmt"
  6. "io/ioutil"
  7. "log"
  8. "net/http"
  9. )
  10. type materialQuery struct {
  11. Type string `json:"type"`
  12. Offiset int `json:"offset"`
  13. Count int `json:"count"`
  14. }
  15. type materialCount struct {
  16. VoiceCount int64 `json:"voice_count"`
  17. VideoCount int64 `json:"video_count"`
  18. ImageCount int64 `json:"image_count"`
  19. NewsCount int64 `json:"news_count"`
  20. }
  21. func getNewList() (jstr string) {
  22. jstr = getMediaList("news")
  23. return
  24. }
  25. func getMediaList(mediaType string) (jstr string) {
  26. var q = materialQuery{mediaType, 0, 20}
  27. jsonStr, _ := json.Marshal(q)
  28. u := url4MaterialList()
  29. req, err := http.NewRequest("POST", u, bytes.NewBuffer(jsonStr))
  30. log.Println(u)
  31. if err != nil {
  32. return ""
  33. }
  34. client := &http.Client{}
  35. r, err := client.Do(req)
  36. if err != nil {
  37. return ""
  38. }
  39. defer r.Body.Close()
  40. b, _ := ioutil.ReadAll(r.Body)
  41. jstr = string(b)
  42. return
  43. }
  44. func url4MaterialList() string {
  45. atk, _ := GetAccessToken()
  46. u := fmt.Sprintf("https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=%s", atk)
  47. return u
  48. }
  49. func url4MaterialCount() string {
  50. atk, _ := GetAccessToken()
  51. u := fmt.Sprintf("https://api.weixin.qq.com/cgi-bin/material/get_materialcount?access_token=%s", atk)
  52. return u
  53. }
  54. func getMaterialCount() (materialCount, error) {
  55. mc := materialCount{}
  56. url := url4MaterialCount()
  57. r, err := http.Get(url)
  58. if err != nil {
  59. return mc, err
  60. }
  61. defer r.Body.Close()
  62. b, _ := ioutil.ReadAll(r.Body)
  63. err = json.Unmarshal(b, &mc)
  64. return mc, nil
  65. }