com.weibo.api.Statuses.java Source code

Java tutorial

Introduction

Here is the source code for com.weibo.api.Statuses.java

Source

/*
 * @(#)Statuses.java $version 2013122
 *
 * Copyright 2013 NHN ST. All rights Reserved.
 * DaLian Software  PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 */

package com.weibo.api;

import java.net.URLEncoder;

import javax.annotation.Resource;

import org.apache.commons.lang.StringUtils;
import org.springframework.core.io.ClassPathResource;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Component;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;

import com.weibo.enums.IsComment;
import com.weibo.enums.Visible;
import com.weibo.http.client.WeiboHttpClient;
import com.weibo.model.Result;
import com.weibo.model.Status;
import com.weibo.model.StatusCount;

/**
 * weibo-api
 * com.weibo.api.Statuses.java
 * @author st13902
 * @date 2013122
 */
@Component
public class Statuses {

    private static final String STATUSES_REPORT_URL = "https://api.weibo.com/2/statuses/repost.json";
    private static final String STATUSES_DESTROY_URL = "https://api.weibo.com/2/statuses/destroy.json";
    private static final String STATUSES_UPDATE_URL = "https://api.weibo.com/2/statuses/update.json";
    private static final String STATUSES_UPLOAD_URL = "https://api.weibo.com/2/statuses/upload.json";
    private static final String STATUSES_UPLOAD_URL_TEXT_URL = "https://api.weibo.com/2/statuses/upload_url_text.json";
    private static final String STATUSES_FILTER_CREATE_URL = "https://api.weibo.com/2/statuses/filter/create.json";
    private static final String STATUSES_MENTIONS_SHIELD_URL = "https://api.weibo.com/2/statuses/mentions/shield.json";
    private static final String STATUSES_COUNT_URL = "https://api.weibo.com/2/statuses/count.json";

    @Resource
    private WeiboHttpClient weiboHttpClient;

    /**
     * http://open.weibo.com/wiki/2/statuses/repost
     * @param id
     * @param status
     * @param isComment
     * @param rip
     * @param accessToken
     * @return
     */
    public Status repost(String id, String status, IsComment isComment, String rip, String accessToken) {
        MultiValueMap<String, Object> map = new LinkedMultiValueMap<String, Object>();
        map.add("id", id);
        if (StringUtils.isNotBlank(status)) {
            map.add("status", status);
        }
        if (isComment == null) {
            isComment = IsComment.NO;
        }
        map.add("isComment", isComment.getCode());
        if (StringUtils.isNotBlank(rip)) {
            map.add("rip", rip);
        }
        map.add("access_token", accessToken);
        return weiboHttpClient.postForm(STATUSES_REPORT_URL, map, Status.class);
    }

    /**
     * http://open.weibo.com/wiki/2/statuses/destroy
     * @param id
     * @param accessToken
     * @return
     */
    public Status destroy(String id, String accessToken) {
        MultiValueMap<String, String> map = new LinkedMultiValueMap<String, String>();
        map.add("id", id);
        map.add("access_token", accessToken);
        return weiboHttpClient.postForm(STATUSES_DESTROY_URL, map, Status.class);
    }

    /**
     * http://open.weibo.com/wiki/2/statuses/update
     * @param status
     * @param accessToken
     * @return
     */
    public Status update(String status, String accessToken) {
        return update(status, null, null, accessToken);
    }

    /**
     * http://open.weibo.com/wiki/2/statuses/update
     * @param status
     * @param visible
     * @param listId
     * @param accessToken
     * @return
     */
    public Status update(String status, Visible visible, String listId, String accessToken) {
        MultiValueMap<String, Object> map = new LinkedMultiValueMap<String, Object>();
        map.add("status", status);
        if (visible != null) {
            map.add("visible", visible.getCode());
            if (visible == Visible.GROUP) {
                map.add("list_id", listId);
            }
        }
        map.add("access_token", accessToken);
        return weiboHttpClient.postForm(STATUSES_UPDATE_URL, map, Status.class);
    }

    /**
     * http://open.weibo.com/wiki/2/statuses/upload
     * @param status
     * @param pic
     * @param accessToken
     * @return
     */
    @SuppressWarnings("deprecation")
    public Status upload(String status, String pic, String accessToken) {
        return upload(URLEncoder.encode(status), null, null, pic, accessToken);
    }

    /**
     * http://open.weibo.com/wiki/2/statuses/upload
     * @param status
     * @param visible
     * @param listId
     * @param pic
     * @param accessToken
     * @return
     */
    public Status upload(String status, Visible visible, String listId, String pic, String accessToken) {
        MultiValueMap<String, Object> map = new LinkedMultiValueMap<String, Object>();
        map.add("status", status);
        if (visible != null) {
            map.add("visible", visible.getCode());
            if (visible == Visible.GROUP) {
                map.add("list_id", listId);
            }
        }
        map.add("pic", new ClassPathResource(pic));
        map.add("access_token", accessToken);
        return weiboHttpClient.post(STATUSES_UPLOAD_URL, map, Status.class, MediaType.MULTIPART_FORM_DATA);
    }

    /**
     * http://open.weibo.com/wiki/2/statuses/upload_url_text
     * @deprecated TODO: need to added testcase.
     * @param status
     * @param visible
     * @param listId
     * @param url
     * @param accessToken
     * @return
     */
    public Status uploadUrlText(String status, Visible visible, String listId, String url, String accessToken) {
        MultiValueMap<String, Object> map = new LinkedMultiValueMap<String, Object>();
        map.add("status", status);
        if (visible != null) {
            map.add("visible", visible.getCode());
            if (visible == Visible.GROUP) {
                map.add("list_id", listId);
            }
        }
        map.add("url", url);
        map.add("access_token", accessToken);
        return weiboHttpClient.postForm(STATUSES_UPLOAD_URL_TEXT_URL, map, Status.class);
    }

    /**
     * http://open.weibo.com/wiki/2/statuses/filter/create
     * @deprecated TODO: need to added testcase.
     * @param id
     * @param accessToken
     * @return
     */
    public Status filterCreate(String id, String accessToken) {
        MultiValueMap<String, Object> map = new LinkedMultiValueMap<String, Object>();
        map.add("id", id);
        map.add("access_token", accessToken);
        return weiboHttpClient.postForm(STATUSES_FILTER_CREATE_URL, map, Status.class);
    }

    /**
     * http://open.weibo.com/wiki/2/statuses/mentions/shield
     * @deprecated TODO: need to added testcase.
     * @param id
     * @param followUp
     * @param accessToken
     * @return
     */
    public Result mentionsShield(String id, String followUp, String accessToken) {
        MultiValueMap<String, Object> map = new LinkedMultiValueMap<String, Object>();
        map.add("id", id);
        map.add("follow_up", followUp);
        map.add("access_token", accessToken);
        return weiboHttpClient.postForm(STATUSES_MENTIONS_SHIELD_URL, map, Result.class);
    }

    /**
     * http://open.weibo.com/wiki/2/statuses/count
     * @param ids
     * @param accessToken
     * @return
     */
    public StatusCount[] count(String ids, String accessToken) {
        String url = new StringBuffer().append(STATUSES_COUNT_URL).append("?ids=").append(ids)
                .append("&access_token=").append(accessToken).toString();
        return weiboHttpClient.get(url, StatusCount[].class);
    }

}