Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

108 lines
2.3KB

  1. package main
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. )
  6. //MediaID : json response for uploading media
  7. type MediaID struct {
  8. Type string `json:"type"`
  9. MediaID string `json:"media_id"`
  10. CreateAt int64 `json:"created_at"`
  11. ThumbMediaID string `json:"thumb_media_id"`
  12. }
  13. func uploadImage(filename string) (mediaid string) {
  14. url, _ := getPostImageURL()
  15. jstr, _ := postFileForm(filename, url, "media")
  16. //{"type":"TYPE","media_id":"MEDIA_ID","created_at":123456789}
  17. var m = MediaID{}
  18. json.Unmarshal([]byte(jstr), &m)
  19. mediaid = m.MediaID
  20. return
  21. }
  22. func uploadVideo(filename string) (mediaid string) {
  23. url, _ := getPostVideoURL()
  24. jstr, _ := postFileForm(filename, url, "media")
  25. //{"type":"TYPE","media_id":"MEDIA_ID","created_at":123456789}
  26. var m = MediaID{}
  27. json.Unmarshal([]byte(jstr), &m)
  28. mediaid = m.MediaID
  29. return
  30. }
  31. func uploadVoice(path string) (mediaID string) {
  32. url, _ := getPostVoiceURL()
  33. jstr, _ := postFileForm(path, url, "media")
  34. var m = MediaID{}
  35. json.Unmarshal([]byte(jstr), &m)
  36. mediaID = m.MediaID
  37. return
  38. }
  39. func uploadThumb(path string) (mediaID string) {
  40. url, _ := getPostThumbURL()
  41. jstr, _ := postFileForm(path, url, "media")
  42. var m = MediaID{}
  43. json.Unmarshal([]byte(jstr), &m)
  44. mediaID = m.ThumbMediaID
  45. return
  46. }
  47. func checkImageSanity() bool {
  48. //TODO
  49. //check file size should < 2M
  50. fmt.Println(" should check image file size")
  51. return true
  52. }
  53. func getPostImageURL() (url string, err error) {
  54. return getMediaPostURL("image")
  55. }
  56. func getPostVoiceURL() (url string, err error) {
  57. return getMediaPostURL("voice")
  58. }
  59. func getPostVideoURL() (url string, err error) {
  60. return getMediaPostURL("video")
  61. }
  62. func getPostThumbURL() (url string, err error) {
  63. return getMediaPostURL("thumb")
  64. }
  65. func getMediaPostURL(t string) (url string, err error) {
  66. atk, err := GetAccessToken()
  67. if err != nil {
  68. url = ""
  69. } else {
  70. url = fmt.Sprintf("https://api.weixin.qq.com/cgi-bin/media/upload?access_token=%s&type=%s", atk, t)
  71. }
  72. return
  73. }
  74. func saveMedia2File(mediaID string) (filename string, err error) {
  75. url := mediaID2URL(mediaID)
  76. file, _, e := saveURL(url)
  77. if e != nil {
  78. return "", e
  79. }
  80. fmt.Println("save media to " + file)
  81. return file, nil
  82. }
  83. func mediaID2URL(mediaID string) (url string) {
  84. atk, _ := GetAccessToken()
  85. url = fmt.Sprintf("https://api.weixin.qq.com/cgi-bin/media/get?access_token=%s&media_id=%s", atk, mediaID)
  86. return
  87. }