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.ranking; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; 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 io.gs2.AbstractGs2Client; import io.gs2.Gs2Constant; import io.gs2.model.IGs2Credential; import io.gs2.ranking.control.*; /** * GS2 Ranking API * * @author Game Server Services, Inc. * */ public class Gs2RankingClient extends AbstractGs2Client<Gs2RankingClient> { public static String ENDPOINT = "ranking"; /** * * * @param credential ? */ public Gs2RankingClient(IGs2Credential credential) { super(credential); } /** * * * @param credential ? * @param region */ public Gs2RankingClient(IGs2Credential credential, Region region) { super(credential, region); } /** * * * @param credential ? * @param region */ public Gs2RankingClient(IGs2Credential credential, String region) { super(credential, region); } /** * ????<br> * <br> * * @param request * @return ? */ public CreateGameModeResult createGameMode(CreateGameModeRequest request) { ObjectNode body = JsonNodeFactory.instance.objectNode().put("gameMode", request.getGameMode()) .put("asc", request.getAsc()).put("calcInterval", request.getCalcInterval()); if (request.getPutScoreTriggerScript() != null) body.put("putScoreTriggerScript", request.getPutScoreTriggerScript()); if (request.getPutScoreDoneTriggerScript() != null) body.put("putScoreDoneTriggerScript", request.getPutScoreDoneTriggerScript()); if (request.getCalculateRankingDoneTriggerScript() != null) body.put("calculateRankingDoneTriggerScript", request.getCalculateRankingDoneTriggerScript()); HttpPost post = createHttpPost(Gs2Constant.ENDPOINT_HOST + "/ranking/" + (request.getRankingTableName() == null || request.getRankingTableName().equals("") ? "null" : request.getRankingTableName()) + "/mode", credential, ENDPOINT, CreateGameModeRequest.Constant.MODULE, CreateGameModeRequest.Constant.FUNCTION, body.toString()); if (request.getRequestId() != null) { post.setHeader("X-GS2-REQUEST-ID", request.getRequestId()); } return doRequest(post, CreateGameModeResult.class); } /** * ???<br> * <br> * * @param request */ public void deleteGameMode(DeleteGameModeRequest request) { String url = Gs2Constant.ENDPOINT_HOST + "/ranking/" + (request.getRankingTableName() == null || request.getRankingTableName().equals("") ? "null" : request.getRankingTableName()) + "/mode/" + (request.getGameMode() == null || request.getGameMode().equals("") ? "null" : request.getGameMode()) + ""; HttpDelete delete = createHttpDelete(url, credential, ENDPOINT, DeleteGameModeRequest.Constant.MODULE, DeleteGameModeRequest.Constant.FUNCTION); if (request.getRequestId() != null) { delete.setHeader("X-GS2-REQUEST-ID", request.getRequestId()); } doRequest(delete, null); } /** * ?????<br> * <br> * * @param request * @return ? */ public DescribeGameModeResult describeGameMode(DescribeGameModeRequest request) { String url = Gs2Constant.ENDPOINT_HOST + "/ranking/" + (request.getRankingTableName() == null || request.getRankingTableName().equals("") ? "null" : request.getRankingTableName()) + "/mode"; 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, DescribeGameModeRequest.Constant.MODULE, DescribeGameModeRequest.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, DescribeGameModeResult.class); } /** * ????<br> * <br> * * @param request * @return ? */ public GetGameModeResult getGameMode(GetGameModeRequest request) { String url = Gs2Constant.ENDPOINT_HOST + "/ranking/" + (request.getRankingTableName() == null || request.getRankingTableName().equals("") ? "null" : request.getRankingTableName()) + "/mode/" + (request.getGameMode() == null || request.getGameMode().equals("") ? "null" : request.getGameMode()) + ""; HttpGet get = createHttpGet(url, credential, ENDPOINT, GetGameModeRequest.Constant.MODULE, GetGameModeRequest.Constant.FUNCTION); if (request.getRequestId() != null) { get.setHeader("X-GS2-REQUEST-ID", request.getRequestId()); } return doRequest(get, GetGameModeResult.class); } /** * ????<br> * <br> * * @param request * @return ? */ public UpdateGameModeResult updateGameMode(UpdateGameModeRequest request) { ObjectNode body = JsonNodeFactory.instance.objectNode().put("calcInterval", request.getCalcInterval()); if (request.getPutScoreTriggerScript() != null) body.put("putScoreTriggerScript", request.getPutScoreTriggerScript()); if (request.getPutScoreDoneTriggerScript() != null) body.put("putScoreDoneTriggerScript", request.getPutScoreDoneTriggerScript()); if (request.getCalculateRankingDoneTriggerScript() != null) body.put("calculateRankingDoneTriggerScript", request.getCalculateRankingDoneTriggerScript()); HttpPut put = createHttpPut(Gs2Constant.ENDPOINT_HOST + "/ranking/" + (request.getRankingTableName() == null || request.getRankingTableName().equals("") ? "null" : request.getRankingTableName()) + "/mode/" + (request.getGameMode() == null || request.getGameMode().equals("") ? "null" : request.getGameMode()) + "", credential, ENDPOINT, UpdateGameModeRequest.Constant.MODULE, UpdateGameModeRequest.Constant.FUNCTION, body.toString()); if (request.getRequestId() != null) { put.setHeader("X-GS2-REQUEST-ID", request.getRequestId()); } return doRequest(put, UpdateGameModeResult.class); } /** * ?????<br> * <br> * * @param request * @return ? */ public CreateRankingTableResult createRankingTable(CreateRankingTableRequest request) { ObjectNode body = JsonNodeFactory.instance.objectNode().put("name", request.getName()); if (request.getDescription() != null) body.put("description", request.getDescription()); if (request.getPutScoreTriggerScript() != null) body.put("putScoreTriggerScript", request.getPutScoreTriggerScript()); if (request.getPutScoreDoneTriggerScript() != null) body.put("putScoreDoneTriggerScript", request.getPutScoreDoneTriggerScript()); if (request.getCalculateRankingDoneTriggerScript() != null) body.put("calculateRankingDoneTriggerScript", request.getCalculateRankingDoneTriggerScript()); HttpPost post = createHttpPost(Gs2Constant.ENDPOINT_HOST + "/ranking", credential, ENDPOINT, CreateRankingTableRequest.Constant.MODULE, CreateRankingTableRequest.Constant.FUNCTION, body.toString()); if (request.getRequestId() != null) { post.setHeader("X-GS2-REQUEST-ID", request.getRequestId()); } return doRequest(post, CreateRankingTableResult.class); } /** * ???<br> * <br> * * @param request */ public void deleteRankingTable(DeleteRankingTableRequest request) { String url = Gs2Constant.ENDPOINT_HOST + "/ranking/" + (request.getRankingTableName() == null || request.getRankingTableName().equals("") ? "null" : request.getRankingTableName()) + ""; HttpDelete delete = createHttpDelete(url, credential, ENDPOINT, DeleteRankingTableRequest.Constant.MODULE, DeleteRankingTableRequest.Constant.FUNCTION); if (request.getRequestId() != null) { delete.setHeader("X-GS2-REQUEST-ID", request.getRequestId()); } doRequest(delete, null); } /** * ?????<br> * <br> * * @param request * @return ? */ public DescribeRankingTableResult describeRankingTable(DescribeRankingTableRequest request) { String url = Gs2Constant.ENDPOINT_HOST + "/ranking"; 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, DescribeRankingTableRequest.Constant.MODULE, DescribeRankingTableRequest.Constant.FUNCTION); if (request.getRequestId() != null) { get.setHeader("X-GS2-REQUEST-ID", request.getRequestId()); } return doRequest(get, DescribeRankingTableResult.class); } /** * ????<br> * <br> * * @param request * @return ? */ public GetRankingTableResult getRankingTable(GetRankingTableRequest request) { String url = Gs2Constant.ENDPOINT_HOST + "/ranking/" + (request.getRankingTableName() == null || request.getRankingTableName().equals("") ? "null" : request.getRankingTableName()) + ""; HttpGet get = createHttpGet(url, credential, ENDPOINT, GetRankingTableRequest.Constant.MODULE, GetRankingTableRequest.Constant.FUNCTION); if (request.getRequestId() != null) { get.setHeader("X-GS2-REQUEST-ID", request.getRequestId()); } return doRequest(get, GetRankingTableResult.class); } /** * ???<br> * <br> * * @param request * @return ? */ public UpdateRankingTableResult updateRankingTable(UpdateRankingTableRequest request) { ObjectNode body = JsonNodeFactory.instance.objectNode(); if (request.getDescription() != null) body.put("description", request.getDescription()); if (request.getPutScoreTriggerScript() != null) body.put("putScoreTriggerScript", request.getPutScoreTriggerScript()); if (request.getPutScoreDoneTriggerScript() != null) body.put("putScoreDoneTriggerScript", request.getPutScoreDoneTriggerScript()); if (request.getCalculateRankingDoneTriggerScript() != null) body.put("calculateRankingDoneTriggerScript", request.getCalculateRankingDoneTriggerScript()); HttpPut put = createHttpPut(Gs2Constant.ENDPOINT_HOST + "/ranking/" + (request.getRankingTableName() == null || request.getRankingTableName().equals("") ? "null" : request.getRankingTableName()) + "", credential, ENDPOINT, UpdateRankingTableRequest.Constant.MODULE, UpdateRankingTableRequest.Constant.FUNCTION, body.toString()); if (request.getRequestId() != null) { put.setHeader("X-GS2-REQUEST-ID", request.getRequestId()); } return doRequest(put, UpdateRankingTableResult.class); } /** * ????????????????<br> * <br> * * @param request * @return ? */ public GetEstimateRankResult getEstimateRank(GetEstimateRankRequest request) { String url = Gs2Constant.ENDPOINT_HOST + "/ranking/" + (request.getRankingTableName() == null || request.getRankingTableName().equals("") ? "null" : request.getRankingTableName()) + "/mode/" + (request.getGameMode() == null || request.getGameMode().equals("") ? "null" : request.getGameMode()) + "/ranking/estimate"; List<NameValuePair> queryString = new ArrayList<>(); if (request.getScore() != null) queryString.add(new BasicNameValuePair("score", String.valueOf(request.getScore()))); if (queryString.size() > 0) { url += "?" + URLEncodedUtils.format(queryString, "UTF-8"); } HttpGet get = createHttpGet(url, credential, ENDPOINT, GetEstimateRankRequest.Constant.MODULE, GetEstimateRankRequest.Constant.FUNCTION); if (request.getRequestId() != null) { get.setHeader("X-GS2-REQUEST-ID", request.getRequestId()); } return doRequest(get, GetEstimateRankResult.class); } /** * ???????<br> * <br> * * @param request * @return ? */ public GetMyRankResult getMyRank(GetMyRankRequest request) { String url = Gs2Constant.ENDPOINT_HOST + "/ranking/" + (request.getRankingTableName() == null || request.getRankingTableName().equals("") ? "null" : request.getRankingTableName()) + "/mode/" + (request.getGameMode() == null || request.getGameMode().equals("") ? "null" : request.getGameMode()) + "/ranking/rank"; HttpGet get = createHttpGet(url, credential, ENDPOINT, GetMyRankRequest.Constant.MODULE, GetMyRankRequest.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, GetMyRankResult.class); } /** * ????<br> * <br> * * @param request * @return ? */ public GetRankingResult getRanking(GetRankingRequest request) { String url = Gs2Constant.ENDPOINT_HOST + "/ranking/" + (request.getRankingTableName() == null || request.getRankingTableName().equals("") ? "null" : request.getRankingTableName()) + "/mode/" + (request.getGameMode() == null || request.getGameMode().equals("") ? "null" : request.getGameMode()) + "/ranking"; List<NameValuePair> queryString = new ArrayList<>(); if (request.getOffset() != null) queryString.add(new BasicNameValuePair("offset", String.valueOf(request.getOffset()))); 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, GetRankingRequest.Constant.MODULE, GetRankingRequest.Constant.FUNCTION); if (request.getRequestId() != null) { get.setHeader("X-GS2-REQUEST-ID", request.getRequestId()); } return doRequest(get, GetRankingResult.class); } /** * ???<br> * <br> * * @param request * @return ? */ public PutScoreResult putScore(PutScoreRequest request) { ObjectNode body = JsonNodeFactory.instance.objectNode().put("score", request.getScore()); if (request.getMeta() != null) body.put("meta", request.getMeta()); HttpPost post = createHttpPost(Gs2Constant.ENDPOINT_HOST + "/ranking/" + (request.getRankingTableName() == null || request.getRankingTableName().equals("") ? "null" : request.getRankingTableName()) + "/mode/" + (request.getGameMode() == null || request.getGameMode().equals("") ? "null" : request.getGameMode()) + "/ranking", credential, ENDPOINT, PutScoreRequest.Constant.MODULE, PutScoreRequest.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, PutScoreResult.class); } }