Java tutorial
/* * 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); } }