io.gs2.stamina.Gs2StaminaClient.java Source code

Java tutorial

Introduction

Here is the source code for io.gs2.stamina.Gs2StaminaClient.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.stamina;

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.stamina.control.*;

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

    public static String ENDPOINT = "stamina";

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

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

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

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

    public CreateStaminaPoolResult createStaminaPool(CreateStaminaPoolRequest request) {

        ObjectNode body = JsonNodeFactory.instance.objectNode().put("name", request.getName())
                .put("serviceClass", request.getServiceClass())
                .put("increaseInterval", request.getIncreaseInterval());
        if (request.getDescription() != null)
            body.put("description", request.getDescription());
        if (request.getConsumeStaminaTriggerScript() != null)
            body.put("consumeStaminaTriggerScript", request.getConsumeStaminaTriggerScript());
        if (request.getConsumeStaminaDoneTriggerScript() != null)
            body.put("consumeStaminaDoneTriggerScript", request.getConsumeStaminaDoneTriggerScript());
        if (request.getAddStaminaTriggerScript() != null)
            body.put("addStaminaTriggerScript", request.getAddStaminaTriggerScript());
        if (request.getAddStaminaDoneTriggerScript() != null)
            body.put("addStaminaDoneTriggerScript", request.getAddStaminaDoneTriggerScript());
        if (request.getGetMaxStaminaTriggerScript() != null)
            body.put("getMaxStaminaTriggerScript", request.getGetMaxStaminaTriggerScript());

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

        return doRequest(post, CreateStaminaPoolResult.class);

    }

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

    public void deleteStaminaPool(DeleteStaminaPoolRequest request) {

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

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

        doRequest(delete, null);

    }

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

    public DescribeServiceClassResult describeServiceClass(DescribeServiceClassRequest request) {

        String url = Gs2Constant.ENDPOINT_HOST + "/staminaPool/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 DescribeStaminaPoolResult describeStaminaPool(DescribeStaminaPoolRequest request) {

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

        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, DescribeStaminaPoolRequest.Constant.MODULE,
                DescribeStaminaPoolRequest.Constant.FUNCTION);
        if (request.getRequestId() != null) {
            get.setHeader("X-GS2-REQUEST-ID", request.getRequestId());
        }

        return doRequest(get, DescribeStaminaPoolResult.class);

    }

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

    public GetStaminaPoolResult getStaminaPool(GetStaminaPoolRequest request) {

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

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

        return doRequest(get, GetStaminaPoolResult.class);

    }

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

    public GetStaminaPoolStatusResult getStaminaPoolStatus(GetStaminaPoolStatusRequest request) {

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

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

        return doRequest(get, GetStaminaPoolStatusResult.class);

    }

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

    public UpdateStaminaPoolResult updateStaminaPool(UpdateStaminaPoolRequest request) {

        ObjectNode body = JsonNodeFactory.instance.objectNode().put("serviceClass", request.getServiceClass())
                .put("increaseInterval", request.getIncreaseInterval());
        if (request.getDescription() != null)
            body.put("description", request.getDescription());
        if (request.getConsumeStaminaTriggerScript() != null)
            body.put("consumeStaminaTriggerScript", request.getConsumeStaminaTriggerScript());
        if (request.getConsumeStaminaDoneTriggerScript() != null)
            body.put("consumeStaminaDoneTriggerScript", request.getConsumeStaminaDoneTriggerScript());
        if (request.getAddStaminaTriggerScript() != null)
            body.put("addStaminaTriggerScript", request.getAddStaminaTriggerScript());
        if (request.getAddStaminaDoneTriggerScript() != null)
            body.put("addStaminaDoneTriggerScript", request.getAddStaminaDoneTriggerScript());
        if (request.getGetMaxStaminaTriggerScript() != null)
            body.put("getMaxStaminaTriggerScript", request.getGetMaxStaminaTriggerScript());
        HttpPut put = createHttpPut(
                Gs2Constant.ENDPOINT_HOST + "/staminaPool/"
                        + (request.getStaminaPoolName() == null || request.getStaminaPoolName().equals("") ? "null"
                                : request.getStaminaPoolName())
                        + "",
                credential, ENDPOINT, UpdateStaminaPoolRequest.Constant.MODULE,
                UpdateStaminaPoolRequest.Constant.FUNCTION, body.toString());
        if (request.getRequestId() != null) {
            put.setHeader("X-GS2-REQUEST-ID", request.getRequestId());
        }

        return doRequest(put, UpdateStaminaPoolResult.class);

    }

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

    public ChangeStaminaResult changeStamina(ChangeStaminaRequest request) {

        ObjectNode body = JsonNodeFactory.instance.objectNode().put("variation", request.getVariation())
                .put("maxValue", request.getMaxValue());
        if (request.getOverflow() != null)
            body.put("overflow", request.getOverflow());

        HttpPost post = createHttpPost(
                Gs2Constant.ENDPOINT_HOST + "/staminaPool/"
                        + (request.getStaminaPoolName() == null || request.getStaminaPoolName().equals("") ? "null"
                                : request.getStaminaPoolName())
                        + "/stamina",
                credential, ENDPOINT, ChangeStaminaRequest.Constant.MODULE, ChangeStaminaRequest.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, ChangeStaminaResult.class);

    }

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

    public ChangeStaminaByStampSheetResult changeStaminaByStampSheet(ChangeStaminaByStampSheetRequest request) {

        ObjectNode body = JsonNodeFactory.instance.objectNode().put("sheet", request.getSheet()).put("keyName",
                request.getKeyName());
        if (request.getMaxValue() != null)
            body.put("maxValue", request.getMaxValue());

        HttpPost post = createHttpPost(Gs2Constant.ENDPOINT_HOST + "/stamina", credential, ENDPOINT,
                ChangeStaminaByStampSheetRequest.Constant.MODULE,
                ChangeStaminaByStampSheetRequest.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, ChangeStaminaByStampSheetResult.class);

    }

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

    public ConsumeStaminaResult consumeStamina(ConsumeStaminaRequest request) {

        ObjectNode body = JsonNodeFactory.instance.objectNode().put("variation", request.getVariation())
                .put("maxValue", request.getMaxValue());

        HttpPost post = createHttpPost(
                Gs2Constant.ENDPOINT_HOST + "/staminaPool/"
                        + (request.getStaminaPoolName() == null || request.getStaminaPoolName().equals("") ? "null"
                                : request.getStaminaPoolName())
                        + "/stamina/consume",
                credential, ENDPOINT, ConsumeStaminaRequest.Constant.MODULE,
                ConsumeStaminaRequest.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, ConsumeStaminaResult.class);

    }

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

    public ConsumeStaminaByStampTaskResult consumeStaminaByStampTask(ConsumeStaminaByStampTaskRequest request) {

        ObjectNode body = JsonNodeFactory.instance.objectNode().put("task", request.getTask())
                .put("keyName", request.getKeyName()).put("transactionId", request.getTransactionId())
                .put("maxValue", request.getMaxValue());

        HttpPost post = createHttpPost(Gs2Constant.ENDPOINT_HOST + "/stamina/consume", credential, ENDPOINT,
                ConsumeStaminaByStampTaskRequest.Constant.MODULE,
                ConsumeStaminaByStampTaskRequest.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, ConsumeStaminaByStampTaskResult.class);

    }

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

    public GetStaminaResult getStamina(GetStaminaRequest request) {

        String url = Gs2Constant.ENDPOINT_HOST + "/staminaPool/"
                + (request.getStaminaPoolName() == null || request.getStaminaPoolName().equals("") ? "null"
                        : request.getStaminaPoolName())
                + "/stamina";

        List<NameValuePair> queryString = new ArrayList<>();
        if (request.getMaxValue() != null)
            queryString.add(new BasicNameValuePair("maxValue", String.valueOf(request.getMaxValue())));

        if (queryString.size() > 0) {
            url += "?" + URLEncodedUtils.format(queryString, "UTF-8");
        }
        HttpGet get = createHttpGet(url, credential, ENDPOINT, GetStaminaRequest.Constant.MODULE,
                GetStaminaRequest.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, GetStaminaResult.class);

    }

}