1 package com.foxinmy.weixin4j.wxa.api;
2
3 import java.util.Properties;
4
5 import com.alibaba.fastjson.JSON;
6 import com.alibaba.fastjson.TypeReference;
7 import com.foxinmy.weixin4j.exception.WeixinException;
8 import com.foxinmy.weixin4j.http.weixin.WeixinResponse;
9 import com.foxinmy.weixin4j.token.TokenManager;
10
11 abstract class TokenManagerApi extends WxaApi {
12
13 private final TokenManager tokenManager;
14
15 public TokenManagerApi(final TokenManager tokenManager) {
16 this(tokenManager, null);
17 }
18
19 public TokenManagerApi(final TokenManager tokenManager, final Properties properties) {
20 super(properties);
21 this.tokenManager = tokenManager;
22 }
23
24 <T> T post(String key, Object params, TypeReference<T> typeReference) throws WeixinException {
25 final String uri = this.getAccessTokenRequestUri(key);
26 final String body = JSON.toJSONString(params);
27 final WeixinResponse response = this.weixinExecutor.post(uri, body);
28 return response.getAsObject(typeReference);
29 }
30
31 String getAccessTokenRequestUri(String key) throws WeixinException {
32 final String accessToken = tokenManager.getAccessToken();
33 final String uri = this.getRequestUri(key, accessToken);
34 return uri;
35 }
36
37 }