Skip to content

Commit ea43387

Browse files
authored
0.67.2 (#925)
* 0.67.1 update (#35) * Update to 0.67.2 * Fix gyms with raids not being added to MapObjects
1 parent 32262fd commit ea43387

File tree

19 files changed

+273
-198
lines changed

19 files changed

+273
-198
lines changed

library/src/main/java/com/pokegoapi/api/PokemonGo.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
import POGOProtos.Enums.TutorialStateOuterClass.TutorialState;
1919
import POGOProtos.Networking.Envelopes.RequestEnvelopeOuterClass.RequestEnvelope.AuthInfo;
2020
import POGOProtos.Networking.Envelopes.SignatureOuterClass;
21+
import POGOProtos.Networking.Platform.PlatformRequestTypeOuterClass.PlatformRequestType;
22+
import POGOProtos.Networking.Platform.Requests.GetStoreItemsRequestOuterClass.GetStoreItemsRequest;
2123
import POGOProtos.Networking.Requests.Messages.CheckChallengeMessageOuterClass.CheckChallengeMessage;
2224
import POGOProtos.Networking.Requests.Messages.GetAssetDigestMessageOuterClass.GetAssetDigestMessage;
2325
import POGOProtos.Networking.Requests.Messages.LevelUpRewardsMessageOuterClass.LevelUpRewardsMessage;
@@ -50,6 +52,7 @@
5052
import com.pokegoapi.main.CommonRequests;
5153
import com.pokegoapi.main.Heartbeat;
5254
import com.pokegoapi.main.RequestHandler;
55+
import com.pokegoapi.main.ServerPlatformRequest;
5356
import com.pokegoapi.main.ServerRequest;
5457
import com.pokegoapi.main.ServerRequestEnvelope;
5558
import com.pokegoapi.util.ClientInterceptor;
@@ -288,6 +291,12 @@ private void initialize() throws RequestFailedException {
288291
throw new RequestFailedException(e);
289292
}
290293

294+
ByteString getStoreItems = GetStoreItemsRequest.newBuilder().build().toByteString();
295+
ServerRequestEnvelope envelope = ServerRequestEnvelope.create();
296+
envelope.addPlatform(new ServerPlatformRequest(PlatformRequestType.GET_STORE_ITEMS, getStoreItems));
297+
298+
getRequestHandler().sendServerRequests(envelope);
299+
291300
List<LoginListener> loginListeners = getListeners(LoginListener.class);
292301

293302
for (LoginListener listener : loginListeners) {

library/src/main/java/com/pokegoapi/api/gym/Battle.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ private void beginDefenderBattle(final BattleHandler handler)
219219
StartGymBattleMessage message = builder.build();
220220
ServerRequest request = new ServerRequest(RequestType.START_GYM_BATTLE, message);
221221

222-
api.getRequestHandler().sendServerRequests(request);
222+
api.getRequestHandler().sendServerRequests(request, true);
223223
StartGymBattleResponse response = StartGymBattleResponse.parseFrom(request.getData());
224224

225225
if (response.getResult() == StartGymBattleResponse.Result.SUCCESS) {

library/src/main/java/com/pokegoapi/api/gym/Gym.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import POGOProtos.Data.PokemonDataOuterClass.PokemonData;
2121
import POGOProtos.Enums.PokemonIdOuterClass;
2222
import POGOProtos.Enums.TeamColorOuterClass;
23+
import POGOProtos.Enums.TutorialStateOuterClass.TutorialState;
2324
import POGOProtos.Map.Fort.FortDataOuterClass.FortData;
2425
import POGOProtos.Networking.Requests.Messages.FortDeployPokemonMessageOuterClass.FortDeployPokemonMessage;
2526
import POGOProtos.Networking.Requests.Messages.GetGymDetailsMessageOuterClass.GetGymDetailsMessage;
@@ -124,6 +125,11 @@ public void clearDetails() {
124125
}
125126

126127
private GetGymDetailsResponse details() throws RequestFailedException {
128+
List<TutorialState> tutorialStates = api.getPlayerProfile().getTutorialState().getTutorialStates();
129+
if (!tutorialStates.contains(TutorialState.GYM_TUTORIAL)) {
130+
api.getPlayerProfile().visitGymComplete();
131+
}
132+
127133
if (details == null) {
128134
GetGymDetailsMessage reqMsg = GetGymDetailsMessage
129135
.newBuilder()
@@ -134,7 +140,6 @@ private GetGymDetailsResponse details() throws RequestFailedException {
134140
.setPlayerLongitude(api.getLongitude())
135141
.build();
136142

137-
138143
ServerRequest serverRequest = new ServerRequest(RequestType.GET_GYM_DETAILS, reqMsg);
139144
api.getRequestHandler().sendServerRequests(serverRequest, true);
140145

@@ -143,7 +148,6 @@ private GetGymDetailsResponse details() throws RequestFailedException {
143148
} catch (InvalidProtocolBufferException e) {
144149
throw new RequestFailedException();
145150
}
146-
147151
}
148152

149153
return details;

library/src/main/java/com/pokegoapi/api/inventory/Hatchery.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ public List<HatchedEgg> queryHatchedEggs()
133133
throws RequestFailedException {
134134
GetHatchedEggsMessage msg = GetHatchedEggsMessage.newBuilder().build();
135135
ServerRequest serverRequest = new ServerRequest(RequestType.GET_HATCHED_EGGS, msg);
136-
api.getRequestHandler().sendServerRequests(serverRequest);
136+
api.getRequestHandler().sendServerRequests(serverRequest, false);
137137

138138
GetHatchedEggsResponse response;
139139
try {

library/src/main/java/com/pokegoapi/api/inventory/Inventories.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
import POGOProtos.Inventory.Item.ItemDataOuterClass.ItemData;
2929
import POGOProtos.Inventory.Item.ItemIdOuterClass.ItemId;
3030
import POGOProtos.Networking.Requests.Messages.GetInventoryMessageOuterClass.GetInventoryMessage;
31-
import POGOProtos.Networking.Requests.RequestTypeOuterClass;
31+
import POGOProtos.Networking.Requests.RequestTypeOuterClass.RequestType;
3232
import POGOProtos.Networking.Responses.GetInventoryResponseOuterClass.GetInventoryResponse;
3333
import com.google.protobuf.InvalidProtocolBufferException;
3434
import com.pokegoapi.api.PokemonGo;
@@ -100,7 +100,9 @@ public GetInventoryResponse updateInventories() throws RequestFailedException {
100100
* @param forceUpdate For a full update if true
101101
* @return the response to the update message
102102
* @throws RequestFailedException if an exception occurred while sending requests
103+
* @deprecated Inventory is updated as a common request
103104
*/
105+
@Deprecated
104106
public GetInventoryResponse updateInventories(boolean forceUpdate)
105107
throws RequestFailedException {
106108
if (forceUpdate) {
@@ -117,8 +119,8 @@ public GetInventoryResponse updateInventories(boolean forceUpdate)
117119
GetInventoryMessage invReqMsg = GetInventoryMessage.newBuilder()
118120
.setLastTimestampMs(lastInventoryUpdate)
119121
.build();
120-
ServerRequest inventoryRequest = new ServerRequest(RequestTypeOuterClass.RequestType.GET_INVENTORY, invReqMsg);
121-
api.getRequestHandler().sendServerRequests(inventoryRequest);
122+
ServerRequest inventoryRequest = new ServerRequest(RequestType.GET_INVENTORY, invReqMsg);
123+
api.getRequestHandler().sendServerRequests(inventoryRequest, false);
122124

123125
GetInventoryResponse response;
124126
try {

library/src/main/java/com/pokegoapi/api/inventory/ItemBag.java

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
import POGOProtos.Networking.Requests.Messages.UseItemXpBoostMessageOuterClass.UseItemXpBoostMessage;
2424
import POGOProtos.Networking.Requests.RequestTypeOuterClass.RequestType;
2525
import POGOProtos.Networking.Responses.LevelUpRewardsResponseOuterClass.LevelUpRewardsResponse;
26-
import POGOProtos.Networking.Responses.RecycleInventoryItemResponseOuterClass;
26+
import POGOProtos.Networking.Responses.RecycleInventoryItemResponseOuterClass.RecycleInventoryItemResponse;
2727
import POGOProtos.Networking.Responses.RecycleInventoryItemResponseOuterClass.RecycleInventoryItemResponse.Result;
2828
import POGOProtos.Networking.Responses.UseIncenseResponseOuterClass.UseIncenseResponse;
2929
import POGOProtos.Networking.Responses.UseItemXpBoostResponseOuterClass.UseItemXpBoostResponse;
@@ -91,18 +91,16 @@ public Result removeItem(ItemId id, int quantity) throws RequestFailedException
9191
.build();
9292

9393
ServerRequest serverRequest = new ServerRequest(RequestType.RECYCLE_INVENTORY_ITEM, msg);
94-
api.getRequestHandler().sendServerRequests(serverRequest);
94+
api.getRequestHandler().sendServerRequests(serverRequest, true);
9595

96-
RecycleInventoryItemResponseOuterClass.RecycleInventoryItemResponse response;
96+
RecycleInventoryItemResponse response;
9797
try {
98-
response = RecycleInventoryItemResponseOuterClass.RecycleInventoryItemResponse
99-
.parseFrom(serverRequest.getData());
98+
response = RecycleInventoryItemResponse.parseFrom(serverRequest.getData());
10099
} catch (InvalidProtocolBufferException e) {
101100
throw new RequestFailedException(e);
102101
}
103102

104-
if (response
105-
.getResult() == RecycleInventoryItemResponseOuterClass.RecycleInventoryItemResponse.Result.SUCCESS) {
103+
if (response.getResult() == RecycleInventoryItemResponse.Result.SUCCESS) {
106104
item.setCount(response.getNewCount());
107105
if (item.getCount() <= 0) {
108106
removeItem(item.getItemId());

library/src/main/java/com/pokegoapi/api/map/MapObjects.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import com.pokegoapi.api.PokemonGo;
2727
import com.pokegoapi.api.gym.Gym;
2828
import com.pokegoapi.api.map.fort.Pokestop;
29+
import com.pokegoapi.api.map.fort.Raid;
2930
import com.pokegoapi.api.map.pokemon.CatchablePokemon;
3031
import com.pokegoapi.api.map.pokemon.NearbyPokemon;
3132
import lombok.Getter;
@@ -57,6 +58,8 @@ public MapObjects(PokemonGo api) {
5758
private Set<Pokestop> pokestops = new HashSet<>();
5859
@Getter
5960
private Set<Gym> gyms = new HashSet<>();
61+
@Getter
62+
private Set<Raid> raids = new HashSet<>();
6063

6164
/**
6265
* Adds the given nearby pokemon to this object
@@ -125,7 +128,11 @@ public void addForts(List<FortData> forts) {
125128
this.pokestops.add(new Pokestop(api, fortData));
126129
break;
127130
case GYM:
128-
this.gyms.add(new Gym(api, fortData));
131+
Gym gym = new Gym(api, fortData);
132+
if (fortData.hasRaidInfo()) {
133+
this.raids.add(new Raid(api, gym, fortData.getRaidInfo()));
134+
}
135+
this.gyms.add(gym);
129136
break;
130137
default:
131138
break;

library/src/main/java/com/pokegoapi/api/map/fort/Pokestop.java

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
package com.pokegoapi.api.map.fort;
1717

18+
import POGOProtos.Enums.TutorialStateOuterClass.TutorialState;
1819
import POGOProtos.Inventory.Item.ItemIdOuterClass;
1920
import POGOProtos.Inventory.Item.ItemIdOuterClass.ItemId;
2021
import POGOProtos.Map.Fort.FortDataOuterClass;
@@ -23,7 +24,9 @@
2324
import POGOProtos.Networking.Requests.Messages.FortDetailsMessageOuterClass.FortDetailsMessage;
2425
import POGOProtos.Networking.Requests.Messages.FortSearchMessageOuterClass.FortSearchMessage;
2526
import POGOProtos.Networking.Requests.RequestTypeOuterClass;
26-
import POGOProtos.Networking.Responses.AddFortModifierResponseOuterClass;
27+
import POGOProtos.Networking.Requests.RequestTypeOuterClass.RequestType;
28+
import POGOProtos.Networking.Responses.AddFortModifierResponseOuterClass.AddFortModifierResponse;
29+
import POGOProtos.Networking.Responses.AddFortModifierResponseOuterClass.AddFortModifierResponse.Result;
2730
import POGOProtos.Networking.Responses.FortDetailsResponseOuterClass;
2831
import POGOProtos.Networking.Responses.FortSearchResponseOuterClass;
2932
import com.google.protobuf.ByteString;
@@ -190,19 +193,16 @@ public Observable<Boolean> addModifierAsync(ItemId item) {
190193
.setPlayerLatitude(api.getLatitude())
191194
.setPlayerLongitude(api.getLongitude())
192195
.build();
193-
ServerRequest serverRequest = new ServerRequest(RequestTypeOuterClass.RequestType.ADD_FORT_MODIFIER,
194-
msg);
196+
ServerRequest serverRequest = new ServerRequest(RequestType.ADD_FORT_MODIFIER, msg);
195197
return api.getRequestHandler().sendAsyncServerRequests(serverRequest).map(new Func1<ByteString, Boolean>() {
196198
@Override
197199
public Boolean call(ByteString result) {
198200
try {
199-
//sadly the server response does not contain any information to verify if the request was
200-
// successful
201-
AddFortModifierResponseOuterClass.AddFortModifierResponse.parseFrom(result);
201+
AddFortModifierResponse response = AddFortModifierResponse.parseFrom(result);
202+
return response.getResult() == Result.SUCCESS;
202203
} catch (InvalidProtocolBufferException e) {
203204
throw Exceptions.propagate(e);
204205
}
205-
return Boolean.TRUE;
206206
}
207207
});
208208
}
@@ -254,6 +254,11 @@ public FortDetails call(ByteString result) {
254254
* @throws RequestFailedException if an exception occurred while sending requests
255255
*/
256256
public FortDetails getDetails() throws RequestFailedException {
257+
List<TutorialState> tutorialStates = api.getPlayerProfile().getTutorialState().getTutorialStates();
258+
if (!tutorialStates.contains(TutorialState.POKESTOP_TUTORIAL)) {
259+
api.getPlayerProfile().visitPokestopComplete();
260+
}
261+
257262
return AsyncHelper.toBlocking(getDetailsAsync());
258263
}
259264

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
/*
2+
* This program is free software: you can redistribute it and/or modify
3+
* it under the terms of the GNU General Public License as published by
4+
* the Free Software Foundation, either version 3 of the License, or
5+
* (at your option) any later version.
6+
*
7+
* This program is distributed in the hope that it will be useful,
8+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
9+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10+
* GNU General Public License for more details.
11+
*
12+
* You should have received a copy of the GNU General Public License
13+
* along with this program. If not, see <http://www.gnu.org/licenses/>.
14+
*/
15+
16+
package com.pokegoapi.api.map.fort;
17+
18+
import POGOProtos.Data.PokemonDataOuterClass.PokemonData;
19+
import POGOProtos.Data.Raid.RaidInfoOuterClass.RaidInfo;
20+
import POGOProtos.Enums.RaidLevelOuterClass.RaidLevel;
21+
import com.pokegoapi.api.PokemonGo;
22+
import com.pokegoapi.api.gym.Gym;
23+
import lombok.Getter;
24+
25+
public class Raid {
26+
private final PokemonGo api;
27+
@Getter
28+
private final Gym gym;
29+
@Getter
30+
private final RaidInfo raidInfo;
31+
32+
public Raid(PokemonGo api, Gym gym, RaidInfo raidInfo) {
33+
this.api = api;
34+
this.gym = gym;
35+
this.raidInfo = raidInfo;
36+
}
37+
38+
public long getRaidSeed() {
39+
return raidInfo.getRaidSeed();
40+
}
41+
42+
public long getRaidSpawnMs() {
43+
return raidInfo.getRaidSpawnMs();
44+
}
45+
46+
public long getRaidBattleMs() {
47+
return raidInfo.getRaidBattleMs();
48+
}
49+
50+
public long getRaidEndMs() {
51+
return raidInfo.getRaidEndMs();
52+
}
53+
54+
public boolean hasRaidPokemon() {
55+
return raidInfo.hasRaidPokemon();
56+
}
57+
58+
public PokemonData getRaidPokemon() {
59+
return raidInfo.getRaidPokemon();
60+
}
61+
62+
public RaidLevel getRaidLevel() {
63+
return raidInfo.getRaidLevel();
64+
}
65+
66+
public boolean getComplete() {
67+
return raidInfo.getComplete();
68+
}
69+
70+
public boolean getIsExclusive() {
71+
return raidInfo.getIsExclusive();
72+
}
73+
74+
public String getId() {
75+
return gym.getId();
76+
}
77+
78+
public double getLatitude() {
79+
return gym.getLatitude();
80+
}
81+
82+
public double getLongitude() {
83+
return gym.getLongitude();
84+
}
85+
86+
@Override
87+
public int hashCode() {
88+
return getId().hashCode();
89+
}
90+
91+
@Override
92+
public boolean equals(Object obj) {
93+
return obj instanceof Raid && ((Raid) obj).getId().equals(getId());
94+
}
95+
}

0 commit comments

Comments
 (0)