Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 39 additions & 5 deletions src/main/java/com/pokegoapi/api/inventory/Bag.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,17 @@

import POGOProtos.Inventory.ItemIdOuterClass.ItemId;
import POGOProtos.Inventory.ItemOuterClass;
import POGOProtos.Networking.Requests.RequestTypeOuterClass;
import POGOProtos.Networking.Requests.Messages.RecycleInventoryItemMessageOuterClass;
import POGOProtos.Networking.Responses.FortDetailsResponseOuterClass;
import POGOProtos.Networking.Responses.RecycleInventoryItemResponseOuterClass;
import POGOProtos.Networking.Responses.RecycleInventoryItemResponseOuterClass.RecycleInventoryItemResponse.Result;

import com.google.protobuf.InvalidProtocolBufferException;
import com.pokegoapi.api.PokemonGo;
import com.pokegoapi.exceptions.LoginFailedException;
import com.pokegoapi.exceptions.RemoteServerException;
import com.pokegoapi.main.ServerRequest;

import java.util.HashMap;

Expand All @@ -18,15 +28,39 @@ public Bag(PokemonGo pgo) {
public void addItem(Item item) {
items.put(item.getItemId(), item);
}

public Result removeItem(ItemId id, int quantity) throws RemoteServerException, LoginFailedException {
Item item = getItem(id);
if (item.getCount() < quantity)
throw new IllegalArgumentException("You cannont remove more quantity than you have");

RecycleInventoryItemMessageOuterClass.RecycleInventoryItemMessage msg = RecycleInventoryItemMessageOuterClass.RecycleInventoryItemMessage.newBuilder()
.setItemId(id).setCount(quantity).build();

ServerRequest serverRequest = new ServerRequest(RequestTypeOuterClass.RequestType.RECYCLE_INVENTORY_ITEM, msg);
pgo.getRequestHandler().request(serverRequest);
pgo.getRequestHandler().sendServerRequests();

RecycleInventoryItemResponseOuterClass.RecycleInventoryItemResponse response = null;
try {
response = RecycleInventoryItemResponseOuterClass.RecycleInventoryItemResponse.parseFrom(serverRequest.getData());
} catch (InvalidProtocolBufferException e) {
throw new RemoteServerException(e);
}

if (response.getResult() == RecycleInventoryItemResponseOuterClass.RecycleInventoryItemResponse.Result.SUCCESS)
item.setCount(response.getNewCount());
return response.getResult();
}

public Item getItem(ItemId type) {
if (type == ItemId.UNRECOGNIZED) {
if (type == ItemId.UNRECOGNIZED)
throw new IllegalArgumentException("You cannot get item for UNRECOGNIZED");
}
if (!items.containsKey(type)) {
// prevent returning null

// prevent returning null
if (!items.containsKey(type))
return new Item(ItemOuterClass.Item.newBuilder().setCount(0).setItemId(type).build());
}

return items.get(type);
}
}
8 changes: 7 additions & 1 deletion src/main/java/com/pokegoapi/api/inventory/Item.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,23 @@

public class Item {
private POGOProtos.Inventory.ItemOuterClass.Item proto;
private int count;

public Item(POGOProtos.Inventory.ItemOuterClass.Item proto) {
this.proto = proto;
this.count = proto.getCount();
}

public ItemId getItemId() {
return proto.getItemId();
}

public int getCount() {
return proto.getCount();
return count;
}

public void setCount(int count) {
this.count = count;
}

public boolean isUnseen() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.pokegoapi.api.inventory;
package com.pokegoapi.api.map.Pokemon;

import POGOProtos.Networking.Responses.EvolvePokemonResponseOuterClass;
import com.pokegoapi.api.pokemon.Pokemon;
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/com/pokegoapi/api/pokemon/Pokemon.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
import POGOProtos.Networking.Responses.ReleasePokemonResponseOuterClass.ReleasePokemonResponse.Result;
import com.google.protobuf.InvalidProtocolBufferException;
import com.pokegoapi.api.PokemonGo;
import com.pokegoapi.api.inventory.EvolutionResult;
import com.pokegoapi.api.map.Pokemon.EvolutionResult;
import com.pokegoapi.exceptions.LoginFailedException;
import com.pokegoapi.exceptions.RemoteServerException;
import com.pokegoapi.main.ServerRequest;
Expand Down
406 changes: 250 additions & 156 deletions src/main/java/com/pokegoapi/api/pokemon/PokemonFamilyMap.java

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1,5 +1,15 @@
package com.pokegoapi.exceptions;

public class InvalidCurrencyException extends Exception {
public InvalidCurrencyException() {
super();
}

public InvalidCurrencyException(String reason) {
super(reason);
}

public InvalidCurrencyException(Exception e) {
super(e);
}
}
10 changes: 10 additions & 0 deletions src/main/java/com/pokegoapi/exceptions/LoginFailedException.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,15 @@
package com.pokegoapi.exceptions;

public class LoginFailedException extends Exception {
public LoginFailedException() {
super();
}

public LoginFailedException(String reason) {
super(reason);
}

public LoginFailedException(Exception e) {
super(e);
}
}
10 changes: 10 additions & 0 deletions src/main/java/com/pokegoapi/exceptions/NoSuchItemException.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,15 @@
package com.pokegoapi.exceptions;

public class NoSuchItemException extends Exception {
public NoSuchItemException() {
super();
}

public NoSuchItemException(String reason) {
super(reason);
}

public NoSuchItemException(Exception e) {
super(e);
}
}
11 changes: 10 additions & 1 deletion src/main/java/com/pokegoapi/main/RequestHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import POGOProtos.Networking.Envelopes.AuthTicketOuterClass;
import POGOProtos.Networking.Envelopes.RequestEnvelopeOuterClass;
import POGOProtos.Networking.Envelopes.RequestEnvelopeOuterClass.RequestEnvelope.AuthInfo;
import POGOProtos.Networking.Envelopes.ResponseEnvelopeOuterClass;
import com.google.protobuf.ByteString;
import com.pokegoapi.api.PokemonGo;
Expand Down Expand Up @@ -70,12 +71,15 @@ public void sendServerRequests() throws RemoteServerException, LoginFailedExcept
throw new RemoteServerException(e);
}

if (response.code() != 200)
throw new RemoteServerException("Got a unexcepted http code : " + response.code());

ResponseEnvelopeOuterClass.ResponseEnvelope responseEnvelop = null;
try (InputStream content = response.body().byteStream()) {
responseEnvelop = ResponseEnvelopeOuterClass.ResponseEnvelope.parseFrom(content);
} catch (IOException e) {
// retrieved garbage from the server
throw new RemoteServerException("Received malformed response");
throw new RemoteServerException("Received malformed response : " + e);
}

if (responseEnvelop.getApiUrl() != null && responseEnvelop.getApiUrl().length() > 0) {
Expand Down Expand Up @@ -127,6 +131,11 @@ public RequestEnvelopeOuterClass.RequestEnvelope build() {
throw new IllegalStateException("Attempting to send request envelop with no requests");
return builder.build();
}

public void setAuthInfo(AuthInfo auth) {
this.auth = auth;
this.lastAuth = null;
}

public void setLatitude(double latitude) {
builder.setLatitude(latitude);
Expand Down