/* * Copyright (C) 2010-2013 The SINA WEIBO Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.sina.weibo.sdk.openapi.legacy; import android.content.Context; import com.sina.weibo.sdk.auth.Oauth2AccessToken; import com.sina.weibo.sdk.net.RequestListener; import com.sina.weibo.sdk.net.WeiboParameters; import com.sina.weibo.sdk.openapi.AbsOpenAPI; /** * 该类封装了微博的短链接接口。 * 详情请参考<a href="http://t.cn/8F3g1mY">短链接接口</a> * * @author SINA * @date 2014-03-03 */ public class ShortUrlAPI extends AbsOpenAPI { public ShortUrlAPI(Context context, String appKey, Oauth2AccessToken accessToken) { super(context, appKey, accessToken); } private static final String SERVER_URL_PRIX = API_SERVER + "/short_url"; /** * 将一个或多个长链接转换成短链接 * * @param url_long 需要转换的长链接,最多不超过20个 * @param listener 异步请求回调接口 */ public void shorten(String[] url_long, RequestListener listener) { WeiboParameters params = buildURLRequest(url_long, "url_long"); requestAsync(SERVER_URL_PRIX + "/shorten.json", params, HTTPMETHOD_GET, listener); } /** * 将一个或多个短链接还原成原始的长链接。 * * @param url_short 需要还原的短链接,最多不超过20个 * @param listener 异步请求回调接口 */ public void expand(String[] url_short, RequestListener listener) { WeiboParameters params = buildURLRequest(url_short, "url_short"); requestAsync(SERVER_URL_PRIX + "/expand.json", params, HTTPMETHOD_GET, listener); } public String expandSync(String[] url_short) { WeiboParameters params = buildURLRequest(url_short, "url_short"); return requestSync(SERVER_URL_PRIX + "/expand.json", params, HTTPMETHOD_GET); } /** * 获取短链接的总点击数。 * * @param url_short 需要取得点击数的短链接,最多不超过20个 * @param listener 异步请求回调接口 */ public void clicks(String[] url_short, RequestListener listener) { WeiboParameters params = buildURLRequest(url_short, "url_short"); requestAsync(SERVER_URL_PRIX + "/clicks.json", params, HTTPMETHOD_GET, listener); } /** * 获取一个短链接点击的referer来源和数量。 * * @param url_short 需要取得点击来源的短链接 * @param listener 异步请求回调接口 */ public void referers(String url_short, RequestListener listener) { WeiboParameters params = new WeiboParameters(mAppKey); params.put("url_short", url_short); requestAsync(SERVER_URL_PRIX + "/referers.json", params, HTTPMETHOD_GET, listener); } /** * 获取一个短链接点击的地区来源和数量。 * * @param url_short 需要取得点击来源的短链接 * @param listener 异步请求回调接口 */ public void locations(String url_short, RequestListener listener) { WeiboParameters params = new WeiboParameters(mAppKey); params.put("url_short", url_short); requestAsync(SERVER_URL_PRIX + "/locations.json", params, HTTPMETHOD_GET, listener); } /** * 获取短链接在微博上的微博分享数。 * * @param url_short 需要取得分享数的短链接,最多不超过20个 * @param listener 异步请求回调接口 */ public void shareCounts(String[] url_short, RequestListener listener) { WeiboParameters params = buildURLRequest(url_short, "url_short"); requestAsync(SERVER_URL_PRIX + "/share/counts.json", params, HTTPMETHOD_GET, listener); } /** * 获取包含指定单个短链接的最新微博内容。 * * @param url_short 需要取得关联微博内容的短链接 * @param since_id 若指定此参数,则返回ID比since_id大的微博(即比since_id时间晚的微博),默认为0 * @param max_id 若指定此参数,则返回ID小于或等于max_id的微博,默认为0 * @param count 单页返回的记录条数,默认为50,最多不超过200 * @param page 返回结果的页码,默认为1 * @param listener 异步请求回调接口 */ public void shareStatuses(String url_short, long since_id, long max_id, int count, int page, RequestListener listener) { WeiboParameters params = buildRequestParams(url_short, since_id, max_id, count, page); requestAsync(SERVER_URL_PRIX + "/share/statuses.json", params, HTTPMETHOD_GET, listener); } /** * 获取短链接在微博上的微博评论数 * * @param url_short 需要取得分享数的短链接,最多不超过20个 * @param listener 异步请求回调接口 */ public void commentCounts(String[] url_short, RequestListener listener) { WeiboParameters params = buildURLRequest(url_short, "url_short"); requestAsync(SERVER_URL_PRIX + "/comment/counts.json", params, HTTPMETHOD_GET, listener); } /** * 获取包含指定单个短链接的最新微博评论。 * * @param url_short 需要取得关联微博评论内容的短链接 * @param since_id 若指定此参数,则返回ID比since_id大的评论(即比since_id时间晚的评论),默认为0 * @param max_id 若指定此参数,则返回ID小于或等于max_id的评论,默认为0 * @param count 单页返回的记录条数,默认为50,最多不超过200 * @param page 返回结果的页码,默认为1 * @param listener 异步请求回调接口 */ public void comments(String url_short, long since_id, long max_id, int count, int page, RequestListener listener) { WeiboParameters params = buildRequestParams(url_short, since_id, max_id, count, page); requestAsync(SERVER_URL_PRIX + "/comment/comments.json", params, HTTPMETHOD_GET, listener); } // 组装URL参数 private WeiboParameters buildRequestParams(String url_short, long since_id, long max_id, int count, int page) { WeiboParameters params = new WeiboParameters(mAppKey); params.put("url_short", url_short); params.put("since_id", since_id); params.put("max_id", max_id); params.put("count", count); params.put("page", page); return params; } // 组装URL参数 private WeiboParameters buildURLRequest(String[] url, String type) { WeiboParameters params = new WeiboParameters(mAppKey); if (url != null) { int length = url.length; for (int i = 0; i < length; i++) { params.put(type, url[i]); } } return params; } }