io.gs2.inbox.Gs2InboxClient.java Source code

Java tutorial

Introduction

Here is the source code for io.gs2.inbox.Gs2InboxClient.java

Source

/*
 * Copyright 2016 Game Server Services, Inc. or its affiliates. All Rights
 * Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License").
 * You may not use this file except in compliance with the License.
 * A copy of the License is located at
 *
 *  http://www.apache.org/licenses/LICENSE-2.0
 *
 * or in the "license" file accompanying this file. This file 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 io.gs2.inbox;

import java.util.ArrayList;
import java.util.List;

import io.gs2.model.Region;
import io.gs2.util.EncodingUtil;
import org.apache.http.NameValuePair;
import org.apache.http.client.methods.HttpDelete;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.client.utils.URLEncodedUtils;
import org.apache.http.message.BasicNameValuePair;

import com.fasterxml.jackson.databind.node.JsonNodeFactory;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.fasterxml.jackson.databind.JsonNode;

import io.gs2.AbstractGs2Client;
import io.gs2.Gs2Constant;
import io.gs2.model.IGs2Credential;
import io.gs2.inbox.control.*;

/**
 * GS2 Inbox API 
 *
 * @author Game Server Services, Inc.
 *
 */
public class Gs2InboxClient extends AbstractGs2Client<Gs2InboxClient> {

    public static String ENDPOINT = "inbox";

    /**
     * 
     *
     * @param credential ?
     */
    public Gs2InboxClient(IGs2Credential credential) {
        super(credential);
    }

    /**
     * 
     *
     * @param credential ?
     * @param region 
     */
    public Gs2InboxClient(IGs2Credential credential, Region region) {
        super(credential, region);
    }

    /**
     * 
     *
     * @param credential ?
     * @param region 
     */
    public Gs2InboxClient(IGs2Credential credential, String region) {
        super(credential, region);

    }

    /**
     * ??????<br>
     * <br>
     *
     * @param request 
        
     * @return ?
        
     */

    public CreateInboxResult createInbox(CreateInboxRequest request) {

        ObjectNode body = JsonNodeFactory.instance.objectNode().put("name", request.getName()).put("serviceClass",
                request.getServiceClass());
        if (request.getDescription() != null)
            body.put("description", request.getDescription());
        if (request.getAutoDelete() != null)
            body.put("autoDelete", request.getAutoDelete());
        if (request.getCooperationUrl() != null)
            body.put("cooperationUrl", request.getCooperationUrl());
        if (request.getReceiveMessageTriggerScript() != null)
            body.put("receiveMessageTriggerScript", request.getReceiveMessageTriggerScript());
        if (request.getReceiveMessageDoneTriggerScript() != null)
            body.put("receiveMessageDoneTriggerScript", request.getReceiveMessageDoneTriggerScript());
        if (request.getReadMessageTriggerScript() != null)
            body.put("readMessageTriggerScript", request.getReadMessageTriggerScript());
        if (request.getReadMessageDoneTriggerScript() != null)
            body.put("readMessageDoneTriggerScript", request.getReadMessageDoneTriggerScript());
        if (request.getDeleteMessageTriggerScript() != null)
            body.put("deleteMessageTriggerScript", request.getDeleteMessageTriggerScript());
        if (request.getDeleteMessageDoneTriggerScript() != null)
            body.put("deleteMessageDoneTriggerScript", request.getDeleteMessageDoneTriggerScript());

        HttpPost post = createHttpPost(Gs2Constant.ENDPOINT_HOST + "/inbox", credential, ENDPOINT,
                CreateInboxRequest.Constant.MODULE, CreateInboxRequest.Constant.FUNCTION, body.toString());
        if (request.getRequestId() != null) {
            post.setHeader("X-GS2-REQUEST-ID", request.getRequestId());
        }

        return doRequest(post, CreateInboxResult.class);

    }

    /**
     * ????<br>
     * <br>
     *
     * @param request 
        
     */

    public void deleteInbox(DeleteInboxRequest request) {

        String url = Gs2Constant.ENDPOINT_HOST + "/inbox/"
                + (request.getInboxName() == null || request.getInboxName().equals("") ? "null"
                        : request.getInboxName())
                + "";

        HttpDelete delete = createHttpDelete(url, credential, ENDPOINT, DeleteInboxRequest.Constant.MODULE,
                DeleteInboxRequest.Constant.FUNCTION);
        if (request.getRequestId() != null) {
            delete.setHeader("X-GS2-REQUEST-ID", request.getRequestId());
        }

        doRequest(delete, null);

    }

    /**
     * ??????<br>
     * <br>
     *
     * @param request 
        
     * @return ?
        
     */

    public DescribeInboxResult describeInbox(DescribeInboxRequest request) {

        String url = Gs2Constant.ENDPOINT_HOST + "/inbox";

        List<NameValuePair> queryString = new ArrayList<>();
        if (request.getPageToken() != null)
            queryString.add(new BasicNameValuePair("pageToken", String.valueOf(request.getPageToken())));
        if (request.getLimit() != null)
            queryString.add(new BasicNameValuePair("limit", String.valueOf(request.getLimit())));

        if (queryString.size() > 0) {
            url += "?" + URLEncodedUtils.format(queryString, "UTF-8");
        }
        HttpGet get = createHttpGet(url, credential, ENDPOINT, DescribeInboxRequest.Constant.MODULE,
                DescribeInboxRequest.Constant.FUNCTION);
        if (request.getRequestId() != null) {
            get.setHeader("X-GS2-REQUEST-ID", request.getRequestId());
        }

        return doRequest(get, DescribeInboxResult.class);

    }

    /**
     * ?????<br>
     * <br>
     *
     * @param request 
        
     * @return ?
        
     */

    public DescribeServiceClassResult describeServiceClass(DescribeServiceClassRequest request) {

        String url = Gs2Constant.ENDPOINT_HOST + "/inbox/serviceClass";

        HttpGet get = createHttpGet(url, credential, ENDPOINT, DescribeServiceClassRequest.Constant.MODULE,
                DescribeServiceClassRequest.Constant.FUNCTION);
        if (request.getRequestId() != null) {
            get.setHeader("X-GS2-REQUEST-ID", request.getRequestId());
        }

        return doRequest(get, DescribeServiceClassResult.class);

    }

    /**
     * ?????<br>
     * <br>
     *
     * @param request 
        
     * @return ?
        
     */

    public GetInboxResult getInbox(GetInboxRequest request) {

        String url = Gs2Constant.ENDPOINT_HOST + "/inbox/"
                + (request.getInboxName() == null || request.getInboxName().equals("") ? "null"
                        : request.getInboxName())
                + "";

        HttpGet get = createHttpGet(url, credential, ENDPOINT, GetInboxRequest.Constant.MODULE,
                GetInboxRequest.Constant.FUNCTION);
        if (request.getRequestId() != null) {
            get.setHeader("X-GS2-REQUEST-ID", request.getRequestId());
        }

        return doRequest(get, GetInboxResult.class);

    }

    /**
     * ??????<br>
     * <br>
     *
     * @param request 
        
     * @return ?
        
     */

    public GetInboxStatusResult getInboxStatus(GetInboxStatusRequest request) {

        String url = Gs2Constant.ENDPOINT_HOST + "/inbox/"
                + (request.getInboxName() == null || request.getInboxName().equals("") ? "null"
                        : request.getInboxName())
                + "/status";

        HttpGet get = createHttpGet(url, credential, ENDPOINT, GetInboxStatusRequest.Constant.MODULE,
                GetInboxStatusRequest.Constant.FUNCTION);
        if (request.getRequestId() != null) {
            get.setHeader("X-GS2-REQUEST-ID", request.getRequestId());
        }

        return doRequest(get, GetInboxStatusResult.class);

    }

    /**
     * ????<br>
     * <br>
     *
     * @param request 
        
     * @return ?
        
     */

    public UpdateInboxResult updateInbox(UpdateInboxRequest request) {

        ObjectNode body = JsonNodeFactory.instance.objectNode();
        if (request.getDescription() != null)
            body.put("description", request.getDescription());
        if (request.getServiceClass() != null)
            body.put("serviceClass", request.getServiceClass());
        if (request.getCooperationUrl() != null)
            body.put("cooperationUrl", request.getCooperationUrl());
        if (request.getReceiveMessageTriggerScript() != null)
            body.put("receiveMessageTriggerScript", request.getReceiveMessageTriggerScript());
        if (request.getReceiveMessageDoneTriggerScript() != null)
            body.put("receiveMessageDoneTriggerScript", request.getReceiveMessageDoneTriggerScript());
        if (request.getReadMessageTriggerScript() != null)
            body.put("readMessageTriggerScript", request.getReadMessageTriggerScript());
        if (request.getReadMessageDoneTriggerScript() != null)
            body.put("readMessageDoneTriggerScript", request.getReadMessageDoneTriggerScript());
        if (request.getDeleteMessageTriggerScript() != null)
            body.put("deleteMessageTriggerScript", request.getDeleteMessageTriggerScript());
        if (request.getDeleteMessageDoneTriggerScript() != null)
            body.put("deleteMessageDoneTriggerScript", request.getDeleteMessageDoneTriggerScript());
        HttpPut put = createHttpPut(
                Gs2Constant.ENDPOINT_HOST + "/inbox/"
                        + (request.getInboxName() == null || request.getInboxName().equals("") ? "null"
                                : request.getInboxName())
                        + "",
                credential, ENDPOINT, UpdateInboxRequest.Constant.MODULE, UpdateInboxRequest.Constant.FUNCTION,
                body.toString());
        if (request.getRequestId() != null) {
            put.setHeader("X-GS2-REQUEST-ID", request.getRequestId());
        }

        return doRequest(put, UpdateInboxResult.class);

    }

    /**
     * ???<br>
     * <br>
     * - : 10<br>
     * <br>
     *
     * @param request 
        
     */

    public void deleteMessage(DeleteMessageRequest request) {

        String url = Gs2Constant.ENDPOINT_HOST + "/inbox/"
                + (request.getInboxName() == null || request.getInboxName().equals("") ? "null"
                        : request.getInboxName())
                + "/message/" + (request.getMessageId() == null || request.getMessageId().equals("") ? "null"
                        : request.getMessageId())
                + "";

        HttpDelete delete = createHttpDelete(url, credential, ENDPOINT, DeleteMessageRequest.Constant.MODULE,
                DeleteMessageRequest.Constant.FUNCTION);
        if (request.getRequestId() != null) {
            delete.setHeader("X-GS2-REQUEST-ID", request.getRequestId());
        }

        doRequest(delete, null);

    }

    /**
     * ????????<br>
     * <br>
     * - : ?? * 10<br>
     * <br>
     *
     * @param request 
        
     */

    public void deleteMessages(DeleteMessagesRequest request) {

        String url = Gs2Constant.ENDPOINT_HOST + "/inbox/"
                + (request.getInboxName() == null || request.getInboxName().equals("") ? "null"
                        : request.getInboxName())
                + "/message/multiple";

        List<NameValuePair> queryString = new ArrayList<>();
        if (request.getMessageIds() != null)
            queryString.add(new BasicNameValuePair("messageIds", toString(request.getMessageIds())));

        if (queryString.size() > 0) {
            url += "?" + URLEncodedUtils.format(queryString, "UTF-8");
        }
        HttpDelete delete = createHttpDelete(url, credential, ENDPOINT, DeleteMessagesRequest.Constant.MODULE,
                DeleteMessagesRequest.Constant.FUNCTION);
        if (request.getRequestId() != null) {
            delete.setHeader("X-GS2-REQUEST-ID", request.getRequestId());
        }

        doRequest(delete, null);

    }

    /**
     * ??????<br>
     * <br>
     * - : 50??5<br>
     * <br>
     *
     * @param request 
        
     * @return ?
        
     */

    public DescribeMessageResult describeMessage(DescribeMessageRequest request) {

        String url = Gs2Constant.ENDPOINT_HOST + "/inbox/"
                + (request.getInboxName() == null || request.getInboxName().equals("") ? "null"
                        : request.getInboxName())
                + "/message";

        List<NameValuePair> queryString = new ArrayList<>();
        if (request.getPageToken() != null)
            queryString.add(new BasicNameValuePair("pageToken", String.valueOf(request.getPageToken())));
        if (request.getLimit() != null)
            queryString.add(new BasicNameValuePair("limit", String.valueOf(request.getLimit())));

        if (queryString.size() > 0) {
            url += "?" + URLEncodedUtils.format(queryString, "UTF-8");
        }
        HttpGet get = createHttpGet(url, credential, ENDPOINT, DescribeMessageRequest.Constant.MODULE,
                DescribeMessageRequest.Constant.FUNCTION);
        if (request.getRequestId() != null) {
            get.setHeader("X-GS2-REQUEST-ID", request.getRequestId());
        }

        get.setHeader("X-GS2-ACCESS-TOKEN", request.getAccessToken());

        return doRequest(get, DescribeMessageResult.class);

    }

    /**
     * ????<br>
     * <br>
     * - : 5<br>
     * <br>
     *
     * @param request 
        
     * @return ?
        
     */

    public GetMessageResult getMessage(GetMessageRequest request) {

        String url = Gs2Constant.ENDPOINT_HOST + "/inbox/"
                + (request.getInboxName() == null || request.getInboxName().equals("") ? "null"
                        : request.getInboxName())
                + "/message/" + (request.getMessageId() == null || request.getMessageId().equals("") ? "null"
                        : request.getMessageId())
                + "";

        HttpGet get = createHttpGet(url, credential, ENDPOINT, GetMessageRequest.Constant.MODULE,
                GetMessageRequest.Constant.FUNCTION);
        if (request.getRequestId() != null) {
            get.setHeader("X-GS2-REQUEST-ID", request.getRequestId());
        }

        return doRequest(get, GetMessageResult.class);

    }

    /**
     * ????<br>
     * <br>
     * - : 10<br>
     * <br>
     *
     * @param request 
        
     * @return ?
        
     */

    public ReadMessageResult readMessage(ReadMessageRequest request) {

        ObjectNode body = JsonNodeFactory.instance.objectNode();

        HttpPost post = createHttpPost(
                Gs2Constant.ENDPOINT_HOST + "/inbox/"
                        + (request.getInboxName() == null || request.getInboxName().equals("") ? "null"
                                : request.getInboxName())
                        + "/message/"
                        + (request.getMessageId() == null || request.getMessageId().equals("") ? "null"
                                : request.getMessageId())
                        + "",
                credential, ENDPOINT, ReadMessageRequest.Constant.MODULE, ReadMessageRequest.Constant.FUNCTION,
                body.toString());
        if (request.getRequestId() != null) {
            post.setHeader("X-GS2-REQUEST-ID", request.getRequestId());
        }

        post.setHeader("X-GS2-ACCESS-TOKEN", request.getAccessToken());

        return doRequest(post, ReadMessageResult.class);

    }

    /**
     * ?????????<br>
     * <br>
     * ?URL??????????200????GS2??????????????????<br>
     * <br>
     * 200 ??????JSON???<br>
     * "success" ?????????ID???????<br>
     * success ???ID???????BadGateway(502)???<br>
     * <br>
     * BadGateway(502) ???????????????????<br>
     * ?????????????????????????????????<br>
     * success ??????ID????reason ????????????<br>
     * ID hoge ????????????????????????????????<br>
     * <br>
     * - : ??? * 10<br>
     * <br>
     *
     * @param request 
        
     * @return ?
        
     */

    public ReadMessagesResult readMessages(ReadMessagesRequest request) {

        ObjectNode body = JsonNodeFactory.instance.objectNode();
        if (request.getMessageIds() != null) {
            List<JsonNode> node = new ArrayList<>();
            for (String item : request.getMessageIds()) {
                node.add(JsonNodeFactory.instance.textNode(item));
            }
            body.set("messageIds", JsonNodeFactory.instance.arrayNode().addAll(node));
        }

        HttpPost post = createHttpPost(
                Gs2Constant.ENDPOINT_HOST + "/inbox/"
                        + (request.getInboxName() == null || request.getInboxName().equals("") ? "null"
                                : request.getInboxName())
                        + "/message/multiple",
                credential, ENDPOINT, ReadMessagesRequest.Constant.MODULE, ReadMessagesRequest.Constant.FUNCTION,
                body.toString());
        if (request.getRequestId() != null) {
            post.setHeader("X-GS2-REQUEST-ID", request.getRequestId());
        }

        post.setHeader("X-GS2-ACCESS-TOKEN", request.getAccessToken());

        return doRequest(post, ReadMessagesResult.class);

    }

    /**
     * ????<br>
     * <br>
     * - : 10<br>
     * <br>
     *
     * @param request 
        
     * @return ?
        
     */

    public SendMessageResult sendMessage(SendMessageRequest request) {

        ObjectNode body = JsonNodeFactory.instance.objectNode().put("userId", request.getUserId()).put("message",
                request.getMessage());
        if (request.getCooperation() != null)
            body.put("cooperation", request.getCooperation());

        HttpPost post = createHttpPost(
                Gs2Constant.ENDPOINT_HOST + "/inbox/"
                        + (request.getInboxName() == null || request.getInboxName().equals("") ? "null"
                                : request.getInboxName())
                        + "/message",
                credential, ENDPOINT, SendMessageRequest.Constant.MODULE, SendMessageRequest.Constant.FUNCTION,
                body.toString());
        if (request.getRequestId() != null) {
            post.setHeader("X-GS2-REQUEST-ID", request.getRequestId());
        }

        return doRequest(post, SendMessageResult.class);

    }

}