From e8517cf9e655616264c8a5234bc8a54710d27736 Mon Sep 17 00:00:00 2001 From: Patrick Peng Sun Date: Thu, 11 May 2017 12:00:44 +1000 Subject: [PATCH] decode material Image list tested with real sample data --- material.go | 18 ++++++++ material_test.go | 46 +++++++++++++++++++ sample_data/material_list.json | 80 +++++++++++++++++++++++++++++----- 3 files changed, 133 insertions(+), 11 deletions(-) diff --git a/material.go b/material.go index 112e90b..3f238f6 100644 --- a/material.go +++ b/material.go @@ -87,3 +87,21 @@ func getMaterialCount() (materialCount, error) { err = json.Unmarshal(b, &mc) return mc, nil } + +type materialItemImage struct { + MediaID string `json:"media_id"` + Name string `json:"name"` + UpdateTime int `json:"update_time"` + URL string `json:"url"` +} + +type materialListImage struct { + TotalCount int `json:"total_count"` + ItemCount int `json:"item_count"` + Items []materialItemImage `json:"item"` +} + +func unmarshalImageList(jstr string) (r materialListImage) { + json.Unmarshal([]byte(jstr), &r) + return +} diff --git a/material_test.go b/material_test.go index f8e6798..bc50ccc 100644 --- a/material_test.go +++ b/material_test.go @@ -30,3 +30,49 @@ func TestGetMaterialCount(t *testing.T) { log.Printf("Image: %d", mc.ImageCount) log.Printf("News : %d", mc.NewsCount) } + +func TestUnmarshalImageList(t *testing.T) { + msg := ` +{"item": [ + { + "media_id": "e2iNEiSxCX5TV1WbFd0TQCOZJ6FrmbKe7sjUrIZnkW0", + "name": "hit_logo.jpg", + "update_time": 1494466025, + "url": "http:\/\/mmbiz.qpic.cn\/mmbiz_jpg\/WiaVAicTdo7zMBVOE4QKxFFnFwbnFbyYGUs0YQBiatN97ibIgOWE4picXg49jj1k5TRibswd7DzLC1CCvJco0Kic9T90g\/0?wx_fmt=jpeg" + }, + { + "media_id": "e2iNEiSxCX5TV1WbFd0TQOo3v5NmyZKIzG6erS8Heak", + "name": "hit_font.jpg", + "update_time": 1494466018, + "url": "http:\/\/mmbiz.qpic.cn\/mmbiz_jpg\/WiaVAicTdo7zMBVOE4QKxFFnFwbnFbyYGUvogs2hibSk6eqlcYZdZj3d5DLYMj4xAFuD9rp4e0s3O8B46Hgb6mETw\/0?wx_fmt=jpeg" + }, + { + "media_id": "e2iNEiSxCX5TV1WbFd0TQP9e-7cyXtbHoxptztJgz68", + "name": "logo-gold-964x640.png", + "update_time": 1492696182, + "url": "http:\/\/mmbiz.qpic.cn\/mmbiz_png\/WiaVAicTdo7zP8HtgLHegmr32SLxcGv0wjQ1pic9oePDgk6XUhDz6xfhicmiaq4ITfibtfPOsulOMD7icIfSicibd8By3Tw\/0?wx_fmt=png" + } + ], + "total_count": 30, + "item_count": 3 +}` + r := unmarshalImageList(msg) + AssertEqual(t, r.TotalCount, 30, "Total count should be 30") + AssertEqual(t, r.ItemCount, 3, "Item count should be 3") + //individual items + AssertEqual(t, r.Items[0].MediaID, "e2iNEiSxCX5TV1WbFd0TQCOZJ6FrmbKe7sjUrIZnkW0", "Item[0] media id mismatch") + AssertEqual(t, r.Items[0].Name, "hit_logo.jpg", "Item[0].name expect [hit_logo.jpg] not ["+r.Items[0].Name+"]") + AssertEqual(t, r.Items[0].UpdateTime, 1494466025, "Item[0] updatetime wrong") + AssertEqual(t, r.Items[0].URL, "http://mmbiz.qpic.cn/mmbiz_jpg/WiaVAicTdo7zMBVOE4QKxFFnFwbnFbyYGUs0YQBiatN97ibIgOWE4picXg49jj1k5TRibswd7DzLC1CCvJco0Kic9T90g/0?wx_fmt=jpeg", "Item[0] URL wrong") + + AssertEqual(t, r.Items[1].MediaID, "e2iNEiSxCX5TV1WbFd0TQOo3v5NmyZKIzG6erS8Heak", "Item[1] media id mismatch") + AssertEqual(t, r.Items[1].Name, "hit_font.jpg", "Item[1].name expect [hit_font.jpg] not ["+r.Items[0].Name+"]") + AssertEqual(t, r.Items[1].UpdateTime, 1494466018, "Item[1] updatetime wrong") + AssertEqual(t, r.Items[1].URL, "http://mmbiz.qpic.cn/mmbiz_jpg/WiaVAicTdo7zMBVOE4QKxFFnFwbnFbyYGUvogs2hibSk6eqlcYZdZj3d5DLYMj4xAFuD9rp4e0s3O8B46Hgb6mETw/0?wx_fmt=jpeg", "Item[1] URL wrong") + + AssertEqual(t, r.Items[2].MediaID, "e2iNEiSxCX5TV1WbFd0TQP9e-7cyXtbHoxptztJgz68", "Item[2] media id mismatch") + AssertEqual(t, r.Items[2].Name, "logo-gold-964x640.png", "Item[2].name expect [logo-gold-964x640.png] not ["+r.Items[0].Name+"]") + AssertEqual(t, r.Items[2].UpdateTime, 1492696182, "Item[2] update time mismatch ") + AssertEqual(t, r.Items[2].URL, "http://mmbiz.qpic.cn/mmbiz_png/WiaVAicTdo7zP8HtgLHegmr32SLxcGv0wjQ1pic9oePDgk6XUhDz6xfhicmiaq4ITfibtfPOsulOMD7icIfSicibd8By3Tw/0?wx_fmt=png", "Item[2] URL wrong") + +} diff --git a/sample_data/material_list.json b/sample_data/material_list.json index 04223c7..1260fe9 100644 --- a/sample_data/material_list.json +++ b/sample_data/material_list.json @@ -1,11 +1,69 @@ -2017/05/11 11:27:17 https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=RB8viLdrGw91XDjX29crjt9Dz242CWL6QqXQmyYcr2Pb012ZkdzdJR17uLwqjZApTnSVZYfofLWdVMN2wmszwk_1ACT29Xev1PwnKUuZEXpoChl8U-MteAgNBa34kLANUMNhABALDE -2017/05/11 11:27:18 news is : {"item":[{"media_id":"e2iNEiSxCX5TV1WbFd0TQMqvVrqFDbDOacdjgQ-OAuE","content":{"news_item":[{"title":"测试消息","author":"孙鹏","digest":"加入校友会","content":"

加入校友会<\/p>

<\/p>


<\/p>","content_source_url":"http:\/\/www.hitxy.org.au\/join","thumb_media_id":"SCqYVM0F3OSBIqptPWQ5ZjDYlLvKsEtHHaYnHLyXbeM","show_cover_pic":0,"url":"http:\/\/mp.weixin.qq.com\/s?__biz=MzUxMDAzNDAwMA==&mid=100000002&idx=1&sn=723bf16b52f88345e5a73ccde1c79bdb&chksm=7908683d4e7fe12bcaefa9c563809db5546ab97af7184ec648f20930fab5c1d95ee825409c0d#rd","thumb_url":"http:\/\/mmbiz.qpic.cn\/mmbiz_png\/WiaVAicTdo7zP8HtgLHegmr32SLxcGv0wjQ1pic9oePDgk6XUhDz6xfhicmiaq4ITfibtfPOsulOMD7icIfSicibd8By3Tw\/0?wx_fmt=png","need_open_comment":0,"only_fans_can_comment":0}],"create_time":1492696196,"update_time":1492696243},"update_time":1492696243}],"total_count":1,"item_count":1} -2017/05/11 11:27:18 read authtoke from /tmp/wechat_hitxy_access_token -2017/05/11 11:27:18 https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=RB8viLdrGw91XDjX29crjt9Dz242CWL6QqXQmyYcr2Pb012ZkdzdJR17uLwqjZApTnSVZYfofLWdVMN2wmszwk_1ACT29Xev1PwnKUuZEXpoChl8U-MteAgNBa34kLANUMNhABALDE -2017/05/11 11:27:18 voice is : {"item":[],"total_count":0,"item_count":0} -2017/05/11 11:27:18 read authtoke from /tmp/wechat_hitxy_access_token -2017/05/11 11:27:18 https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=RB8viLdrGw91XDjX29crjt9Dz242CWL6QqXQmyYcr2Pb012ZkdzdJR17uLwqjZApTnSVZYfofLWdVMN2wmszwk_1ACT29Xev1PwnKUuZEXpoChl8U-MteAgNBa34kLANUMNhABALDE -2017/05/11 11:27:19 video is : {"item":[{"media_id":"e2iNEiSxCX5TV1WbFd0TQPZtC5Oz_9VZmIKEyC7WW8w","name":"哈工大校歌","update_time":1494465885}],"total_count":1,"item_count":1} -2017/05/11 11:27:19 read authtoke from /tmp/wechat_hitxy_access_token -2017/05/11 11:27:19 https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=RB8viLdrGw91XDjX29crjt9Dz242CWL6QqXQmyYcr2Pb012ZkdzdJR17uLwqjZApTnSVZYfofLWdVMN2wmszwk_1ACT29Xev1PwnKUuZEXpoChl8U-MteAgNBa34kLANUMNhABALDE -2017/05/11 11:27:19 Image is : {"item":[{"media_id":"e2iNEiSxCX5TV1WbFd0TQCOZJ6FrmbKe7sjUrIZnkW0","name":"hit_logo.jpg","update_time":1494466025,"url":"http:\/\/mmbiz.qpic.cn\/mmbiz_jpg\/WiaVAicTdo7zMBVOE4QKxFFnFwbnFbyYGUs0YQBiatN97ibIgOWE4picXg49jj1k5TRibswd7DzLC1CCvJco0Kic9T90g\/0?wx_fmt=jpeg"},{"media_id":"e2iNEiSxCX5TV1WbFd0TQOo3v5NmyZKIzG6erS8Heak","name":"hit_font.jpg","update_time":1494466018,"url":"http:\/\/mmbiz.qpic.cn\/mmbiz_jpg\/WiaVAicTdo7zMBVOE4QKxFFnFwbnFbyYGUvogs2hibSk6eqlcYZdZj3d5DLYMj4xAFuD9rp4e0s3O8B46Hgb6mETw\/0?wx_fmt=jpeg"},{"media_id":"e2iNEiSxCX5TV1WbFd0TQP9e-7cyXtbHoxptztJgz68","name":"logo-gold-964x640.png","update_time":1492696182,"url":"http:\/\/mmbiz.qpic.cn\/mmbiz_png\/WiaVAicTdo7zP8HtgLHegmr32SLxcGv0wjQ1pic9oePDgk6XUhDz6xfhicmiaq4ITfibtfPOsulOMD7icIfSicibd8By3Tw\/0?wx_fmt=png"}],"total_count":3,"item_count":3} \ No newline at end of file +2017/05/11 11: 27: 17 https: //api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=RB8viLdrGw91XDjX29crjt9Dz242CWL6QqXQmyYcr2Pb012ZkdzdJR17uLwqjZApTnSVZYfofLWdVMN2wmszwk_1ACT29Xev1PwnKUuZEXpoChl8U-MteAgNBa34kLANUMNhABALDE 2017/05/11 11: 27: 18 news is: { + "item": [ + { + "media_id": "e2iNEiSxCX5TV1WbFd0TQMqvVrqFDbDOacdjgQ-OAuE", + "content": { + "news_item": [ + { + "title": "测试消息", + "author": "孙鹏", + "digest": "加入校友会", + "content": "

加入校友会<\/p>

<\/p>


<\/p>", + "content_source_url": "http:\/\/www.hitxy.org.au\/join", + "thumb_media_id": "SCqYVM0F3OSBIqptPWQ5ZjDYlLvKsEtHHaYnHLyXbeM", + "show_cover_pic": 0, + "url": "http:\/\/mp.weixin.qq.com\/s?__biz=MzUxMDAzNDAwMA==&mid=100000002&idx=1&sn=723bf16b52f88345e5a73ccde1c79bdb&chksm=7908683d4e7fe12bcaefa9c563809db5546ab97af7184ec648f20930fab5c1d95ee825409c0d#rd", + "thumb_url": "http:\/\/mmbiz.qpic.cn\/mmbiz_png\/WiaVAicTdo7zP8HtgLHegmr32SLxcGv0wjQ1pic9oePDgk6XUhDz6xfhicmiaq4ITfibtfPOsulOMD7icIfSicibd8By3Tw\/0?wx_fmt=png", + "need_open_comment": 0, + "only_fans_can_comment": 0 + } + ], + "create_time": 1492696196, + "update_time": 1492696243 + }, + "update_time": 1492696243 + } + ], + "total_count": 1, + "item_count": 1 +} +2017/05/11 11: 27: 18 read authtoke from /tmp/wechat_hitxy_access_token2017/05/11 11: 27: 18 https: //api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=RB8viLdrGw91XDjX29crjt9Dz242CWL6QqXQmyYcr2Pb012ZkdzdJR17uLwqjZApTnSVZYfofLWdVMN2wmszwk_1ACT29Xev1PwnKUuZEXpoChl8U-MteAgNBa34kLANUMNhABALDE 2017/05/11 11: 27: 18 voice is: { + "item": [], + "total_count": 0, + "item_count": 0 +} +2017/05/11 11: 27: 18 read authtoke from /tmp/wechat_hitxy_access_token2017/05/11 11: 27: 18 https: //api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=RB8viLdrGw91XDjX29crjt9Dz242CWL6QqXQmyYcr2Pb012ZkdzdJR17uLwqjZApTnSVZYfofLWdVMN2wmszwk_1ACT29Xev1PwnKUuZEXpoChl8U-MteAgNBa34kLANUMNhABALDE 2017/05/11 11: 27: 19 video is: { + "item": [ + { + "media_id": "e2iNEiSxCX5TV1WbFd0TQPZtC5Oz_9VZmIKEyC7WW8w", + "name": "哈工大校歌", + "update_time": 1494465885 + } + ], + "total_count": 1, + "item_count": 1 +} +2017/05/11 11: 27: 19 read authtoke from /tmp/wechat_hitxy_access_token2017/05/11 11: 27: 19 https: //api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=RB8viLdrGw91XDjX29crjt9Dz242CWL6QqXQmyYcr2Pb012ZkdzdJR17uLwqjZApTnSVZYfofLWdVMN2wmszwk_1ACT29Xev1PwnKUuZEXpoChl8U-MteAgNBa34kLANUMNhABALDE 2017/05/11 11: 27: 19 Image is: { + "item": [ + { + "media_id": "e2iNEiSxCX5TV1WbFd0TQCOZJ6FrmbKe7sjUrIZnkW0", + "name": "hit_logo.jpg", + "update_time": 1494466025, + "url": "http:\/\/mmbiz.qpic.cn\/mmbiz_jpg\/WiaVAicTdo7zMBVOE4QKxFFnFwbnFbyYGUs0YQBiatN97ibIgOWE4picXg49jj1k5TRibswd7DzLC1CCvJco0Kic9T90g\/0?wx_fmt=jpeg" + }, + { + "media_id": "e2iNEiSxCX5TV1WbFd0TQOo3v5NmyZKIzG6erS8Heak", + "name": "hit_font.jpg", + "update_time": 1494466018, + "url": "http:\/\/mmbiz.qpic.cn\/mmbiz_jpg\/WiaVAicTdo7zMBVOE4QKxFFnFwbnFbyYGUvogs2hibSk6eqlcYZdZj3d5DLYMj4xAFuD9rp4e0s3O8B46Hgb6mETw\/0?wx_fmt=jpeg" + }, + { + "media_id": "e2iNEiSxCX5TV1WbFd0TQP9e-7cyXtbHoxptztJgz68", + "name": "logo-gold-964x640.png", + "update_time": 1492696182, + "url": "http:\/\/mmbiz.qpic.cn\/mmbiz_png\/WiaVAicTdo7zP8HtgLHegmr32SLxcGv0wjQ1pic9oePDgk6XUhDz6xfhicmiaq4ITfibtfPOsulOMD7icIfSicibd8By3Tw\/0?wx_fmt=png" + } + ], + "total_count": 3, + "item_count": 3 +} \ No newline at end of file