// Path: src/main/java/me/hao0/wechat/model/menu/Menu.java
// public class Menu implements Serializable {
// 
//     private static final long serialVersionUID = 3569890088693211989L;
// 
//     /**
//      * 名称:
//      * 一级最多4个字，二级最多7个字
//      */
//     private String name;
// 
//     /**
//      * 类型
//      */
//     private String type;
// 
//     /**
//      * 菜单key，当type="click"时
//      */
//     private String key;
// 
//     /**
//      * 菜单url，当type="view"时
//      */
//     private String url;
// 
//     /**
//      * 最多3个一级，5个二级
//      */
//     @JsonProperty("sub_button")
//     private List<Menu> children = new ArrayList<>();
// 
//     public String getName() {
//         return name;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// 
//     public String getType() {
//         return type;
//     }
// 
//     public void setType(String type) {
//         this.type = type;
//     }
// 
//     public String getKey() {
//         return key;
//     }
// 
//     public void setKey(String key) {
//         this.key = key;
//     }
// 
//     public String getUrl() {
//         return url;
//     }
// 
//     public void setUrl(String url) {
//         this.url = url;
//     }
// 
//     public List<Menu> getChildren() {
//         return children;
//     }
// 
//     public void setChildren(List<Menu> children) {
//         this.children = children;
//     }
// 
//     @Override
//     public String toString() {
//         return "Menu{" +
//                 "name='" + name + '\'' +
//                 ", type='" + type + '\'' +
//                 ", key='" + key + '\'' +
//                 ", url='" + url + '\'' +
//                 ", children=" + children +
//                 '}';
//     }
// }


import com.fasterxml.jackson.databind.JavaType;
import me.hao0.wechat.model.menu.Menu;
import me.hao0.common.json.Jsons;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import static me.hao0.common.util.Preconditions.*;
package me.hao0.wechat.core;


/**
 * 菜单组件
 * Author: haolin
 * Email: haolin.h0@gmail.com
 * Date: 18/11/15
 * @since 1.4.0
 */
public final class Menus extends Component {

    /**
     * 查询菜单
     */
    private static final String GET = "https://api.weixin.qq.com/cgi-bin/menu/get?access_token=";

    /**
     * 创建菜单
     */
    private static final String CREATE = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=";

    /**
     * 删除菜单
     */
    private static final String DELETE = "https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=";

// Path: src/main/java/me/hao0/wechat/model/menu/Menu.java
// public class Menu implements Serializable {
// 
//     private static final long serialVersionUID = 3569890088693211989L;
// 
//     /**
//      * 名称:
//      * 一级最多4个字，二级最多7个字
//      */
//     private String name;
// 
//     /**
//      * 类型
//      */
//     private String type;
// 
//     /**
//      * 菜单key，当type="click"时
//      */
//     private String key;
// 
//     /**
//      * 菜单url，当type="view"时
//      */
//     private String url;
// 
//     /**
//      * 最多3个一级，5个二级
//      */
//     @JsonProperty("sub_button")
//     private List<Menu> children = new ArrayList<>();
// 
//     public String getName() {
//         return name;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// 
//     public String getType() {
//         return type;
//     }
// 
//     public void setType(String type) {
//         this.type = type;
//     }
// 
//     public String getKey() {
//         return key;
//     }
// 
//     public void setKey(String key) {
//         this.key = key;
//     }
// 
//     public String getUrl() {
//         return url;
//     }
// 
//     public void setUrl(String url) {
//         this.url = url;
//     }
// 
//     public List<Menu> getChildren() {
//         return children;
//     }
// 
//     public void setChildren(List<Menu> children) {
//         this.children = children;
//     }
// 
//     @Override
//     public String toString() {
//         return "Menu{" +
//                 "name='" + name + '\'' +
//                 ", type='" + type + '\'' +
//                 ", key='" + key + '\'' +
//                 ", url='" + url + '\'' +
//                 ", children=" + children +
//                 '}';
//     }
// }


// Path: src/main/java/me/hao0/wechat/core/Menus.java
import com.fasterxml.jackson.databind.JavaType;
import me.hao0.wechat.model.menu.Menu;
import me.hao0.common.json.Jsons;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import static me.hao0.common.util.Preconditions.*;

package me.hao0.wechat.core;


/**
 * 菜单组件
 * Author: haolin
 * Email: haolin.h0@gmail.com
 * Date: 18/11/15
 * @since 1.4.0
 */
public final class Menus extends Component {

    /**
     * 查询菜单
     */
    private static final String GET = "https://api.weixin.qq.com/cgi-bin/menu/get?access_token=";

    /**
     * 创建菜单
     */
    private static final String CREATE = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=";

    /**
     * 删除菜单
     */
    private static final String DELETE = "https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=";

    private static final JavaType ARRAY_LIST_MENU_TYPE = Jsons.DEFAULT.createCollectionType(ArrayList.class, Menu.class);