Skip to content

Commit

Permalink
Implement request GetPlayerSummaries.
Browse files Browse the repository at this point in the history
  • Loading branch information
lpradel committed Apr 12, 2015
1 parent e65bddb commit 913247f
Show file tree
Hide file tree
Showing 5 changed files with 192 additions and 0 deletions.
@@ -0,0 +1,84 @@
package com.lukaspradel.steamapi.webapi.request;

import java.util.List;

import com.lukaspradel.steamapi.webapi.core.SteamWebApiInterface;
import com.lukaspradel.steamapi.webapi.core.SteamWebApiInterfaceMethod;
import com.lukaspradel.steamapi.webapi.core.SteamWebApiVersion;
import com.lukaspradel.steamapi.webapi.request.builders.AbstractSteamWebApiRequestBuilder;

/**
* Steam Web API Request GetPlayerSummaries
*
* @see <a href=
* "https://developer.valvesoftware.com/wiki/Steam_Web_API#GetPlayerSummaries_.28v0002.29"
* >https://developer.valvesoftware.com/wiki/Steam_Web_API#GetPlayerSummaries_.28v0002.29</a>
* @author lpradel
*
*/
public class GetPlayerSummariesRequest extends SteamWebApiRequest {

private GetPlayerSummariesRequest(SteamWebApiRequestBuilder builder) {
super(builder);
}

/**
* Builder object to create instances of {@link SteamWebApiRequest} for
* request type {@link GetPlayerSummariesRequest}.
*
* @author lpradel
*
*/
public static class GetPlayerSummariesRequestBuilder extends
AbstractSteamWebApiRequestBuilder {

private final List<String> steamIds;

public static final String REQUEST_PARAM_STEAM_IDS = "steamids";

public GetPlayerSummariesRequestBuilder(List<String> steamIds) {

if (steamIds.isEmpty()) {
throw new IllegalArgumentException(
"You must supply at least 1 Steam ID!");
}

this.steamIds = steamIds;
}

@Override
protected SteamWebApiInterface getInterface() {

return SteamWebApiInterface.I_STEAM_USER;
}

@Override
protected SteamWebApiInterfaceMethod getInterfaceMethod() {

return SteamWebApiInterfaceMethod.GET_PLAYER_SUMMARIES;
}

@Override
protected SteamWebApiVersion getVersion() {

return SteamWebApiVersion.VERSION_TWO;
}

@Override
public GetPlayerSummariesRequest buildRequest() {

StringBuilder steamIdsParam = new StringBuilder();

// Steam IDs are transmitted as comma-separated list
for (String steamId : steamIds) {
steamIdsParam.append(steamId);
steamIdsParam.append(",");
}
steamIdsParam.setLength(steamIdsParam.length() - 1);

addParameter(REQUEST_PARAM_STEAM_IDS, steamIdsParam.toString());

return new GetPlayerSummariesRequest(this);
}
}
}
@@ -1,9 +1,13 @@
package com.lukaspradel.steamapi.webapi.request.builders;

import java.util.List;

import com.lukaspradel.steamapi.webapi.request.GetGlobalAchievementPercentagesForAppRequest;
import com.lukaspradel.steamapi.webapi.request.GetGlobalAchievementPercentagesForAppRequest.GetGlobalAchievementPercentagesForAppRequestBuilder;
import com.lukaspradel.steamapi.webapi.request.GetNewsForAppRequest;
import com.lukaspradel.steamapi.webapi.request.GetNewsForAppRequest.GetNewsForAppRequestBuilder;
import com.lukaspradel.steamapi.webapi.request.GetPlayerSummariesRequest;
import com.lukaspradel.steamapi.webapi.request.GetPlayerSummariesRequest.GetPlayerSummariesRequestBuilder;
import com.lukaspradel.steamapi.webapi.request.SteamWebApiRequest;

/**
Expand Down Expand Up @@ -33,4 +37,10 @@ public static GetGlobalAchievementPercentagesForAppRequest createGetGlobalAchiev
return new GetGlobalAchievementPercentagesForAppRequestBuilder(gameId)
.buildRequest();
}

public static GetPlayerSummariesRequest createGetPlayerSummariesRequest(
List<String> steamIds) {

return new GetPlayerSummariesRequestBuilder(steamIds).buildRequest();
}
}
Expand Up @@ -7,6 +7,8 @@
import static org.testng.Assert.fail;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.mockito.Mock;
import org.powermock.reflect.Whitebox;
Expand All @@ -17,8 +19,10 @@
import com.lukaspradel.steamapi.core.exception.SteamApiException;
import com.lukaspradel.steamapi.data.json.achievementpercentages.GetGlobalAchievementPercentagesForApp;
import com.lukaspradel.steamapi.data.json.appnews.GetNewsForApp;
import com.lukaspradel.steamapi.data.json.playersummaries.GetPlayerSummaries;
import com.lukaspradel.steamapi.webapi.request.GetGlobalAchievementPercentagesForAppRequest;
import com.lukaspradel.steamapi.webapi.request.GetNewsForAppRequest;
import com.lukaspradel.steamapi.webapi.request.GetPlayerSummariesRequest;
import com.lukaspradel.steamapi.webapi.request.SteamWebApiRequest;
import com.lukaspradel.steamapi.webapi.request.SteamWebApiRequestHandler;
import com.lukaspradel.steamapi.webapi.request.builders.SteamWebApiRequestFactory;
Expand Down Expand Up @@ -174,4 +178,33 @@ public void testProcessGetGlobalAchievementPercentagesForAppRequest()
assertEquals(getGlobalAchievementPercentagesForApp
.getAchievementpercentages().getAchievements().size(), 316);
}

@Test
public void testProcessGetPlayerSummariesRequest()
throws SteamApiException, IOException {

List<String> steamIds = new ArrayList<String>();
steamIds.add("123");
steamIds.add("456");
steamIds.add("789");

GetPlayerSummariesRequest getPlayerSummariesRequest = SteamWebApiRequestFactory
.createGetPlayerSummariesRequest(steamIds);

String mockAnswer = readResourceAsString("GetPlayerSummaries.json");

when(requestHandlerMock.getWebApiResponse(getPlayerSummariesRequest))
.thenReturn(mockAnswer);

GetPlayerSummaries getPlayerSummaries = client
.<GetPlayerSummaries> processRequest(getPlayerSummariesRequest);

assertNotNull(getPlayerSummaries);
assertTrue(getPlayerSummaries.getAdditionalProperties().isEmpty());
assertNotNull(getPlayerSummaries.getResponse());
assertNotNull(getPlayerSummaries.getResponse().getPlayers());
assertEquals(getPlayerSummaries.getResponse().getPlayers().size(), 1);
assertEquals(getPlayerSummaries.getResponse().getPlayers().get(0)
.getSteamid(), "76561197960435530");
}
}
Expand Up @@ -4,6 +4,9 @@
import static org.testng.Assert.assertNotNull;
import static org.testng.Assert.assertNull;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;

import org.testng.annotations.Test;
Expand All @@ -15,6 +18,8 @@
import com.lukaspradel.steamapi.webapi.request.GetGlobalAchievementPercentagesForAppRequest.GetGlobalAchievementPercentagesForAppRequestBuilder;
import com.lukaspradel.steamapi.webapi.request.GetNewsForAppRequest;
import com.lukaspradel.steamapi.webapi.request.GetNewsForAppRequest.GetNewsForAppRequestBuilder;
import com.lukaspradel.steamapi.webapi.request.GetPlayerSummariesRequest;
import com.lukaspradel.steamapi.webapi.request.GetPlayerSummariesRequest.GetPlayerSummariesRequestBuilder;

public class SteamWebApiRequestFactoryTest {

Expand Down Expand Up @@ -101,4 +106,38 @@ public void testCreateGetGlobalAchievementPercentagesForAppRequest() {
.get(GetGlobalAchievementPercentagesForAppRequestBuilder.REQUEST_PARAM_GAME_ID),
String.valueOf(gameId));
}

@Test(expectedExceptions = IllegalArgumentException.class)
public void testCreateGetPlayerSummariesRequestMissingSteamIds() {

SteamWebApiRequestFactory.createGetPlayerSummariesRequest(Collections
.<String> emptyList());
}

@Test
public void testCreateGetPlayerSummariesRequest() {

List<String> steamIds = new ArrayList<String>();
steamIds.add("123");
steamIds.add("456");
steamIds.add("789");

GetPlayerSummariesRequest request = SteamWebApiRequestFactory
.createGetPlayerSummariesRequest(steamIds);

assertNotNull(request);

assertEquals(request.getApiInterface(),
SteamWebApiInterface.I_STEAM_USER);
assertEquals(request.getInterfaceMethod(),
SteamWebApiInterfaceMethod.GET_PLAYER_SUMMARIES);
assertEquals(request.getVersion(), SteamWebApiVersion.VERSION_TWO);

Map<String, String> parameters = request.getParameters();
assertNotNull(parameters);
assertEquals(
parameters
.get(GetPlayerSummariesRequestBuilder.REQUEST_PARAM_STEAM_IDS),
String.valueOf("123,456,789"));
}
}
@@ -0,0 +1,26 @@
{
"response": {
"players": [
{
"steamid": "76561197960435530",
"communityvisibilitystate": 3,
"profilestate": 1,
"personaname": "Robin",
"lastlogoff": 1428786231,
"profileurl": "http://steamcommunity.com/id/robinwalker/",
"avatar": "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/f1/f1dd60a188883caf82d0cbfccfe6aba0af1732d4.jpg",
"avatarmedium": "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/f1/f1dd60a188883caf82d0cbfccfe6aba0af1732d4_medium.jpg",
"avatarfull": "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/f1/f1dd60a188883caf82d0cbfccfe6aba0af1732d4_full.jpg",
"personastate": 0,
"realname": "Robin Walker",
"primaryclanid": "103582791429521412",
"timecreated": 1063407589,
"personastateflags": 0,
"loccountrycode": "US",
"locstatecode": "WA",
"loccityid": 3961
}
]

}
}

0 comments on commit 913247f

Please sign in to comment.