Caver-java-ext-kas 코드에 대한 문의 드립니다

안녕하세요
caver-java-ext-kas 를 사용하면서 몇가지 문의사항이 생겨 글 남기게 되었습니다.

  1. CaverExtKAS.class

처음 initKASAPI() method를 호출할 때, 각 apiUrl을 set해주는 내용이 있는데요.

initKIP17API() method로 set할 때, 코드 288-308 lines을 보면,

public void initKIP17API(int chainId, String accessKeyId, String secretAccessKey) {
    initTokenHistoryAPI(chainId, accessKeyId, secretAccessKey, URL_KIP17_API);
}

위 와 같이, initKIP17API()를 호출할 때, 내부적으로 initTokenHistoryAPI()를 호출하면서 URL_KIP17_API를 set하고 있는데, 이것은 의도된 부분인가요?

  1. TokenHistoryQueryOptions.KIND.getAllKind() method

TransactionList for Account(EOA)를 구현하기 위해서, TokenHistoryAPI의 getTransfersByEoa()(혹은 getTransfersByEoaWithHttpInfo() 등) method를 사용하려합니다.

getTransfersByEoa()의 3번째 param인 kind를 넣을 때,
TokenHistoryQueryOptions.KIND.getAllKind() method를 직접 호출하여 받아쓰고 싶은데요.

getTransfersByEoa(xChainId, address, TokenHistoryQueryOptions.KIND.getAllKind(), ...null);

TokenHistoryQueryOptions.KIND.getAllKind()에서 String을 출력하는 로직이 각 value를 single quote로 감싸도록 구현되어 있습니다.
(출력 : “‘klay’, ‘mt’, ‘nft’, ‘ft’”)

getTransfersByEoa 등의 method 호출에 필요한 requestParams를 넣어서 내부적으로 get method request를 만드는 과정에서 아래와 같이 url을 encoding하는데,

이 method를 그대로 사용하게 되면 api(th-api.klaytnapi.com/v2/transfer)에서는 encode된 single quote와 comma뒤의 space때문에 get method의 query param 형식 오류가 발생합니다.

아래는 postman으로 호출 시 반환되는 오류 코드

{
“code”: 1040010,
“message”: “[InvalidQueryParameterValue]invalid query value”,
“requestId”: “d334d1ca-987a-4ca8-909e-feb53b1f4df6”
}

이 부분은 single quote(및 space)가 없는 getAllKind()를 직접 구현해서 써야하는 부분일지요.

**
github 이슈로 남길려다 contributor가 많이 계시지 않아 일단 포럼에 먼저 문의드리게 되었습니다.

사용하고 있는 버전은 Release v1.1.0 입니다.

감사합니다.

안녕하세요.

  1. 제보 감사합니다. 수정하도록 하겠습니다.

  2. SDK를 통해 KAS에서 API를 호출할 때는 xyz.groundx.kas.xxx package의 클래스들을 사용하는 것을 생각하고 설계했습니다. 그렇기 때문에 각 API의 Options class들은 각 xyz.groundx.kas.xxx api package에 존재하는 class에 맞게 구현되어있습니다.
    아래 코드와 같이 TokenHistory class의getTransferHistoryByAccount()를 사용하시면 됩니다.

    TokenHistoryQueryOptions options = new TokenHistoryQueryOptions();
    options.setKind(TokenHistoryQueryOptions.KIND.KLAY);

    PageableTransfers transfers = caver.kas.tokenHistory.getTransferHistoryByAccount(account, options);