diff --git a/src/main/java/com/pokegoapi/api/inventory/Bag.java b/src/main/java/com/pokegoapi/api/inventory/Bag.java index 83c2d3546..62a64eb07 100644 --- a/src/main/java/com/pokegoapi/api/inventory/Bag.java +++ b/src/main/java/com/pokegoapi/api/inventory/Bag.java @@ -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; @@ -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); } } diff --git a/src/main/java/com/pokegoapi/api/inventory/Item.java b/src/main/java/com/pokegoapi/api/inventory/Item.java index af40a9c6d..52b9c7c14 100644 --- a/src/main/java/com/pokegoapi/api/inventory/Item.java +++ b/src/main/java/com/pokegoapi/api/inventory/Item.java @@ -5,9 +5,11 @@ 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() { @@ -15,7 +17,11 @@ public ItemId getItemId() { } public int getCount() { - return proto.getCount(); + return count; + } + + public void setCount(int count) { + this.count = count; } public boolean isUnseen() { diff --git a/src/main/java/com/pokegoapi/api/inventory/EvolutionResult.java b/src/main/java/com/pokegoapi/api/map/Pokemon/EvolutionResult.java similarity index 95% rename from src/main/java/com/pokegoapi/api/inventory/EvolutionResult.java rename to src/main/java/com/pokegoapi/api/map/Pokemon/EvolutionResult.java index 6b00729ee..52be8397b 100644 --- a/src/main/java/com/pokegoapi/api/inventory/EvolutionResult.java +++ b/src/main/java/com/pokegoapi/api/map/Pokemon/EvolutionResult.java @@ -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; diff --git a/src/main/java/com/pokegoapi/api/pokemon/Pokemon.java b/src/main/java/com/pokegoapi/api/pokemon/Pokemon.java index d4744874c..8940c7233 100644 --- a/src/main/java/com/pokegoapi/api/pokemon/Pokemon.java +++ b/src/main/java/com/pokegoapi/api/pokemon/Pokemon.java @@ -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; diff --git a/src/main/java/com/pokegoapi/api/pokemon/PokemonFamilyMap.java b/src/main/java/com/pokegoapi/api/pokemon/PokemonFamilyMap.java index 59c297d1d..1d317c93d 100644 --- a/src/main/java/com/pokegoapi/api/pokemon/PokemonFamilyMap.java +++ b/src/main/java/com/pokegoapi/api/pokemon/PokemonFamilyMap.java @@ -1,173 +1,267 @@ package com.pokegoapi.api.pokemon; - import POGOProtos.Enums.PokemonFamilyIdOuterClass.PokemonFamilyId; import POGOProtos.Enums.PokemonIdOuterClass.PokemonId; import java.util.EnumMap; public class PokemonFamilyMap { - - private static EnumMap map = new EnumMap(PokemonId.class); + + private static EnumMap familys = new EnumMap(PokemonId.class); + private static EnumMap highestForFamily = new EnumMap(PokemonFamilyId.class); static { - map.put(PokemonId.BULBASAUR, PokemonFamilyId.FAMILY_BULBASAUR); - map.put(PokemonId.IVYSAUR, PokemonFamilyId.FAMILY_BULBASAUR); - map.put(PokemonId.VENUSAUR, PokemonFamilyId.FAMILY_BULBASAUR); - map.put(PokemonId.CHARMENDER, PokemonFamilyId.FAMILY_CHARMANDER); - map.put(PokemonId.CHARMELEON, PokemonFamilyId.FAMILY_CHARMANDER); - map.put(PokemonId.CHARIZARD, PokemonFamilyId.FAMILY_CHARMANDER); - map.put(PokemonId.SQUIRTLE, PokemonFamilyId.FAMILY_SQUIRTLE); - map.put(PokemonId.WARTORTLE, PokemonFamilyId.FAMILY_SQUIRTLE); - map.put(PokemonId.BLASTOISE, PokemonFamilyId.FAMILY_SQUIRTLE); - map.put(PokemonId.CATERPIE, PokemonFamilyId.FAMILY_CATERPIE); - map.put(PokemonId.METAPOD, PokemonFamilyId.FAMILY_SQUIRTLE); - map.put(PokemonId.BUTTERFREE, PokemonFamilyId.FAMILY_SQUIRTLE); - map.put(PokemonId.WEEDLE, PokemonFamilyId.FAMILY_WEEDLE); - map.put(PokemonId.KAKUNA, PokemonFamilyId.FAMILY_WEEDLE); - map.put(PokemonId.BEEDRILL, PokemonFamilyId.FAMILY_WEEDLE); - map.put(PokemonId.PIDGEY, PokemonFamilyId.FAMILY_PIDGEY); - map.put(PokemonId.PIDGEOTTO, PokemonFamilyId.FAMILY_PIDGEY); - map.put(PokemonId.PIDGEOT, PokemonFamilyId.FAMILY_PIDGEY); - map.put(PokemonId.RATTATA, PokemonFamilyId.FAMILY_RATTATA); - map.put(PokemonId.RATICATE, PokemonFamilyId.FAMILY_RATTATA); - map.put(PokemonId.SPEAROW, PokemonFamilyId.FAMILY_SPEAROW); - map.put(PokemonId.FEAROW, PokemonFamilyId.FAMILY_SPEAROW); - map.put(PokemonId.EKANS, PokemonFamilyId.FAMILY_EKANS); - map.put(PokemonId.ARBOK, PokemonFamilyId.FAMILY_EKANS); - map.put(PokemonId.PIKACHU, PokemonFamilyId.FAMILY_PIKACHU); - map.put(PokemonId.RAICHU, PokemonFamilyId.FAMILY_PIKACHU); - map.put(PokemonId.SANDSHREW, PokemonFamilyId.FAMILY_SANDSHREW); - map.put(PokemonId.SANDLASH, PokemonFamilyId.FAMILY_SANDSHREW); - map.put(PokemonId.NIDORAN_FEMALE, PokemonFamilyId.FAMILY_NIDORAN); - map.put(PokemonId.NIDORINA, PokemonFamilyId.FAMILY_NIDORAN); - map.put(PokemonId.NIDOQUEEN, PokemonFamilyId.FAMILY_NIDORAN); - map.put(PokemonId.NIDORAN_MALE, PokemonFamilyId.FAMILY_NIDORAN2); - map.put(PokemonId.NIDORINO, PokemonFamilyId.FAMILY_NIDORAN2); - map.put(PokemonId.NIDOKING, PokemonFamilyId.FAMILY_NIDORAN2); - map.put(PokemonId.CLEFARY, PokemonFamilyId.FAMILY_CLEFAIRY); - map.put(PokemonId.CLEFABLE, PokemonFamilyId.FAMILY_CLEFAIRY); - map.put(PokemonId.VULPIX, PokemonFamilyId.FAMILY_VULPIX); - map.put(PokemonId.NINETALES, PokemonFamilyId.FAMILY_VULPIX); - map.put(PokemonId.JIGGLYPUFF, PokemonFamilyId.FAMILY_JIGGLYPUFF); - map.put(PokemonId.WIGGLYTUFF, PokemonFamilyId.FAMILY_JIGGLYPUFF); - map.put(PokemonId.ZUBAT, PokemonFamilyId.FAMILY_ZUBAT); - map.put(PokemonId.GOLBAT, PokemonFamilyId.FAMILY_ZUBAT); - map.put(PokemonId.ODDISH, PokemonFamilyId.FAMILY_ODDISH); - map.put(PokemonId.GLOOM, PokemonFamilyId.FAMILY_ODDISH); - map.put(PokemonId.VILEPLUME, PokemonFamilyId.FAMILY_ODDISH); - map.put(PokemonId.PARAS, PokemonFamilyId.FAMILY_PARAS); - map.put(PokemonId.PARASECT, PokemonFamilyId.FAMILY_PARAS); - map.put(PokemonId.VENONAT, PokemonFamilyId.FAMILY_VENONAT); - map.put(PokemonId.VENOMOTH, PokemonFamilyId.FAMILY_VENONAT); - map.put(PokemonId.DIGLETT, PokemonFamilyId.FAMILY_DIGLETT); - map.put(PokemonId.DUGTRIO, PokemonFamilyId.FAMILY_DIGLETT); - map.put(PokemonId.MEOWTH, PokemonFamilyId.FAMILY_MEOWTH); - map.put(PokemonId.PERSIAN, PokemonFamilyId.FAMILY_MEOWTH); - map.put(PokemonId.PSYDUCK, PokemonFamilyId.FAMILY_PSYDUCK); - map.put(PokemonId.GOLDUCK, PokemonFamilyId.FAMILY_PSYDUCK); - map.put(PokemonId.MANKEY, PokemonFamilyId.FAMILY_MANKEY); - map.put(PokemonId.PRIMEAPE, PokemonFamilyId.FAMILY_MANKEY); - map.put(PokemonId.GROWLITHE, PokemonFamilyId.FAMILY_GROWLITHE); - map.put(PokemonId.ARCANINE, PokemonFamilyId.FAMILY_GROWLITHE); - map.put(PokemonId.POLIWAG, PokemonFamilyId.FAMILY_POLIWAG); - map.put(PokemonId.POLIWHIRL, PokemonFamilyId.FAMILY_POLIWAG); - map.put(PokemonId.POLIWRATH, PokemonFamilyId.FAMILY_POLIWAG); - map.put(PokemonId.ABRA, PokemonFamilyId.FAMILY_ABRA); - map.put(PokemonId.KADABRA, PokemonFamilyId.FAMILY_ABRA); - map.put(PokemonId.ALAKHAZAM, PokemonFamilyId.FAMILY_ABRA); - map.put(PokemonId.MACHOP, PokemonFamilyId.FAMILY_MACHOP); - map.put(PokemonId.MACHOKE, PokemonFamilyId.FAMILY_MACHOP); - map.put(PokemonId.MACHAMP, PokemonFamilyId.FAMILY_MACHOP); - map.put(PokemonId.BELLSPROUT, PokemonFamilyId.FAMILY_BELLSPROUT); - map.put(PokemonId.WEEPINBELL, PokemonFamilyId.FAMILY_BELLSPROUT); - map.put(PokemonId.VICTREEBELL, PokemonFamilyId.FAMILY_BELLSPROUT); - map.put(PokemonId.TENTACOOL, PokemonFamilyId.FAMILY_TENTACOOL); - map.put(PokemonId.TENTACRUEL, PokemonFamilyId.FAMILY_TENTACOOL); - map.put(PokemonId.GEODUGE, PokemonFamilyId.FAMILY_GEODUDE); - map.put(PokemonId.GRAVELER, PokemonFamilyId.FAMILY_GEODUDE); - map.put(PokemonId.GOLEM, PokemonFamilyId.FAMILY_GEODUDE); - map.put(PokemonId.PONYTA, PokemonFamilyId.FAMILY_PONYTA); - map.put(PokemonId.RAPIDASH, PokemonFamilyId.FAMILY_PONYTA); - map.put(PokemonId.SLOWPOKE, PokemonFamilyId.FAMILY_SLOWPOKE); - map.put(PokemonId.SLOWBRO, PokemonFamilyId.FAMILY_SLOWPOKE); - map.put(PokemonId.MAGNEMITE, PokemonFamilyId.FAMILY_MAGNEMITE); - map.put(PokemonId.MAGNETON, PokemonFamilyId.FAMILY_MAGNEMITE); - map.put(PokemonId.FARFETCHD, PokemonFamilyId.FAMILY_FARFETCHD); - map.put(PokemonId.DODUO, PokemonFamilyId.FAMILY_DODUO); - map.put(PokemonId.DODRIO, PokemonFamilyId.FAMILY_DODUO); - map.put(PokemonId.SEEL, PokemonFamilyId.FAMILY_SEEL); - map.put(PokemonId.DEWGONG, PokemonFamilyId.FAMILY_SEEL); - map.put(PokemonId.GRIMER, PokemonFamilyId.FAMILY_GRIMER); - map.put(PokemonId.MUK, PokemonFamilyId.FAMILY_GRIMER); - map.put(PokemonId.SHELLDER, PokemonFamilyId.FAMILY_SHELLDER); - map.put(PokemonId.CLOYSTER, PokemonFamilyId.FAMILY_SHELLDER); - map.put(PokemonId.GASTLY, PokemonFamilyId.FAMILY_GASTLY); - map.put(PokemonId.HAUNTER, PokemonFamilyId.FAMILY_GASTLY); - map.put(PokemonId.GENGAR, PokemonFamilyId.FAMILY_GASTLY); - map.put(PokemonId.ONIX, PokemonFamilyId.FAMILY_ONIX); - map.put(PokemonId.DROWZEE, PokemonFamilyId.FAMILY_DROWZEE); + familys.put(PokemonId.BULBASAUR, PokemonFamilyId.FAMILY_BULBASAUR); + familys.put(PokemonId.IVYSAUR, PokemonFamilyId.FAMILY_BULBASAUR); + familys.put(PokemonId.VENUSAUR, PokemonFamilyId.FAMILY_BULBASAUR); + highestForFamily.put(PokemonFamilyId.FAMILY_BULBASAUR, PokemonId.VENUSAUR); + familys.put(PokemonId.CHARMENDER, PokemonFamilyId.FAMILY_CHARMANDER); + familys.put(PokemonId.CHARMELEON, PokemonFamilyId.FAMILY_CHARMANDER); + familys.put(PokemonId.CHARIZARD, PokemonFamilyId.FAMILY_CHARMANDER); + highestForFamily.put(PokemonFamilyId.FAMILY_CHARMANDER, PokemonId.CHARIZARD); + familys.put(PokemonId.SQUIRTLE, PokemonFamilyId.FAMILY_SQUIRTLE); + familys.put(PokemonId.WARTORTLE, PokemonFamilyId.FAMILY_SQUIRTLE); + familys.put(PokemonId.BLASTOISE, PokemonFamilyId.FAMILY_SQUIRTLE); + highestForFamily.put(PokemonFamilyId.FAMILY_SQUIRTLE, PokemonId.BLASTOISE); + familys.put(PokemonId.CATERPIE, PokemonFamilyId.FAMILY_CATERPIE); + familys.put(PokemonId.METAPOD, PokemonFamilyId.FAMILY_CATERPIE); + familys.put(PokemonId.BUTTERFREE, PokemonFamilyId.FAMILY_CATERPIE); + highestForFamily.put(PokemonFamilyId.FAMILY_CATERPIE, PokemonId.BUTTERFREE); + familys.put(PokemonId.WEEDLE, PokemonFamilyId.FAMILY_WEEDLE); + familys.put(PokemonId.KAKUNA, PokemonFamilyId.FAMILY_WEEDLE); + familys.put(PokemonId.BEEDRILL, PokemonFamilyId.FAMILY_WEEDLE); + highestForFamily.put(PokemonFamilyId.FAMILY_WEEDLE, PokemonId.BEEDRILL); + familys.put(PokemonId.PIDGEY, PokemonFamilyId.FAMILY_PIDGEY); + familys.put(PokemonId.PIDGEOTTO, PokemonFamilyId.FAMILY_PIDGEY); + familys.put(PokemonId.PIDGEOT, PokemonFamilyId.FAMILY_PIDGEY); + highestForFamily.put(PokemonFamilyId.FAMILY_PIDGEY, PokemonId.PIDGEOT); + familys.put(PokemonId.RATTATA, PokemonFamilyId.FAMILY_RATTATA); + familys.put(PokemonId.RATICATE, PokemonFamilyId.FAMILY_RATTATA); + highestForFamily.put(PokemonFamilyId.FAMILY_RATTATA, PokemonId.RATICATE); + familys.put(PokemonId.SPEAROW, PokemonFamilyId.FAMILY_SPEAROW); + familys.put(PokemonId.FEAROW, PokemonFamilyId.FAMILY_SPEAROW); + highestForFamily.put(PokemonFamilyId.FAMILY_SPEAROW, PokemonId.FEAROW); + familys.put(PokemonId.EKANS, PokemonFamilyId.FAMILY_EKANS); + familys.put(PokemonId.ARBOK, PokemonFamilyId.FAMILY_EKANS); + highestForFamily.put(PokemonFamilyId.FAMILY_EKANS, PokemonId.ARBOK); + familys.put(PokemonId.PIKACHU, PokemonFamilyId.FAMILY_PIKACHU); + familys.put(PokemonId.RAICHU, PokemonFamilyId.FAMILY_PIKACHU); + highestForFamily.put(PokemonFamilyId.FAMILY_PIKACHU, PokemonId.RAICHU); + familys.put(PokemonId.SANDSHREW, PokemonFamilyId.FAMILY_SANDSHREW); + familys.put(PokemonId.SANDLASH, PokemonFamilyId.FAMILY_SANDSHREW); + highestForFamily.put(PokemonFamilyId.FAMILY_SANDSHREW, PokemonId.SANDLASH); + familys.put(PokemonId.NIDORAN_FEMALE, PokemonFamilyId.FAMILY_NIDORAN); + familys.put(PokemonId.NIDORINA, PokemonFamilyId.FAMILY_NIDORAN); + familys.put(PokemonId.NIDOQUEEN, PokemonFamilyId.FAMILY_NIDORAN); + highestForFamily.put(PokemonFamilyId.FAMILY_NIDORAN, PokemonId.NIDOQUEEN); + familys.put(PokemonId.NIDORAN_MALE, PokemonFamilyId.FAMILY_NIDORAN2); + familys.put(PokemonId.NIDORINO, PokemonFamilyId.FAMILY_NIDORAN2); + familys.put(PokemonId.NIDOKING, PokemonFamilyId.FAMILY_NIDORAN2); + highestForFamily.put(PokemonFamilyId.FAMILY_NIDORAN2, PokemonId.NIDOKING); + familys.put(PokemonId.CLEFARY, PokemonFamilyId.FAMILY_CLEFAIRY); + familys.put(PokemonId.CLEFABLE, PokemonFamilyId.FAMILY_CLEFAIRY); + highestForFamily.put(PokemonFamilyId.FAMILY_CLEFAIRY, PokemonId.CLEFABLE); + familys.put(PokemonId.VULPIX, PokemonFamilyId.FAMILY_VULPIX); + familys.put(PokemonId.NINETALES, PokemonFamilyId.FAMILY_VULPIX); + highestForFamily.put(PokemonFamilyId.FAMILY_VULPIX, PokemonId.NINETALES); + familys.put(PokemonId.JIGGLYPUFF, PokemonFamilyId.FAMILY_JIGGLYPUFF); + familys.put(PokemonId.WIGGLYTUFF, PokemonFamilyId.FAMILY_JIGGLYPUFF); + highestForFamily.put(PokemonFamilyId.FAMILY_JIGGLYPUFF, PokemonId.WIGGLYTUFF); + familys.put(PokemonId.ZUBAT, PokemonFamilyId.FAMILY_ZUBAT); + familys.put(PokemonId.GOLBAT, PokemonFamilyId.FAMILY_ZUBAT); + highestForFamily.put(PokemonFamilyId.FAMILY_ZUBAT, PokemonId.GOLBAT); + familys.put(PokemonId.ODDISH, PokemonFamilyId.FAMILY_ODDISH); + familys.put(PokemonId.GLOOM, PokemonFamilyId.FAMILY_ODDISH); + familys.put(PokemonId.VILEPLUME, PokemonFamilyId.FAMILY_ODDISH); + highestForFamily.put(PokemonFamilyId.FAMILY_ODDISH, PokemonId.VILEPLUME); + familys.put(PokemonId.PARAS, PokemonFamilyId.FAMILY_PARAS); + familys.put(PokemonId.PARASECT, PokemonFamilyId.FAMILY_PARAS); + highestForFamily.put(PokemonFamilyId.FAMILY_PARAS, PokemonId.PARASECT); + familys.put(PokemonId.VENONAT, PokemonFamilyId.FAMILY_VENONAT); + familys.put(PokemonId.VENOMOTH, PokemonFamilyId.FAMILY_VENONAT); + highestForFamily.put(PokemonFamilyId.FAMILY_VENONAT, PokemonId.VENOMOTH); + familys.put(PokemonId.DIGLETT, PokemonFamilyId.FAMILY_DIGLETT); + familys.put(PokemonId.DUGTRIO, PokemonFamilyId.FAMILY_DIGLETT); + highestForFamily.put(PokemonFamilyId.FAMILY_DIGLETT, PokemonId.DUGTRIO); + familys.put(PokemonId.MEOWTH, PokemonFamilyId.FAMILY_MEOWTH); + familys.put(PokemonId.PERSIAN, PokemonFamilyId.FAMILY_MEOWTH); + highestForFamily.put(PokemonFamilyId.FAMILY_MEOWTH, PokemonId.PERSIAN); + familys.put(PokemonId.PSYDUCK, PokemonFamilyId.FAMILY_PSYDUCK); + familys.put(PokemonId.GOLDUCK, PokemonFamilyId.FAMILY_PSYDUCK); + highestForFamily.put(PokemonFamilyId.FAMILY_PSYDUCK, PokemonId.GOLDUCK); + familys.put(PokemonId.MANKEY, PokemonFamilyId.FAMILY_MANKEY); + familys.put(PokemonId.PRIMEAPE, PokemonFamilyId.FAMILY_MANKEY); + highestForFamily.put(PokemonFamilyId.FAMILY_MANKEY, PokemonId.PRIMEAPE); + familys.put(PokemonId.GROWLITHE, PokemonFamilyId.FAMILY_GROWLITHE); + familys.put(PokemonId.ARCANINE, PokemonFamilyId.FAMILY_GROWLITHE); + highestForFamily.put(PokemonFamilyId.FAMILY_GROWLITHE, PokemonId.ARCANINE); + familys.put(PokemonId.POLIWAG, PokemonFamilyId.FAMILY_POLIWAG); + familys.put(PokemonId.POLIWHIRL, PokemonFamilyId.FAMILY_POLIWAG); + familys.put(PokemonId.POLIWRATH, PokemonFamilyId.FAMILY_POLIWAG); + highestForFamily.put(PokemonFamilyId.FAMILY_POLIWAG, PokemonId.POLIWRATH); + familys.put(PokemonId.ABRA, PokemonFamilyId.FAMILY_ABRA); + familys.put(PokemonId.KADABRA, PokemonFamilyId.FAMILY_ABRA); + familys.put(PokemonId.ALAKHAZAM, PokemonFamilyId.FAMILY_ABRA); + highestForFamily.put(PokemonFamilyId.FAMILY_ABRA, PokemonId.ALAKHAZAM); + familys.put(PokemonId.MACHOP, PokemonFamilyId.FAMILY_MACHOP); + familys.put(PokemonId.MACHOKE, PokemonFamilyId.FAMILY_MACHOP); + familys.put(PokemonId.MACHAMP, PokemonFamilyId.FAMILY_MACHOP); + highestForFamily.put(PokemonFamilyId.FAMILY_MACHOP, PokemonId.MACHAMP); + familys.put(PokemonId.BELLSPROUT, PokemonFamilyId.FAMILY_BELLSPROUT); + familys.put(PokemonId.WEEPINBELL, PokemonFamilyId.FAMILY_BELLSPROUT); + familys.put(PokemonId.VICTREEBELL, PokemonFamilyId.FAMILY_BELLSPROUT); + highestForFamily.put(PokemonFamilyId.FAMILY_BELLSPROUT, PokemonId.VICTREEBELL); + familys.put(PokemonId.TENTACOOL, PokemonFamilyId.FAMILY_TENTACOOL); + familys.put(PokemonId.TENTACRUEL, PokemonFamilyId.FAMILY_TENTACOOL); + highestForFamily.put(PokemonFamilyId.FAMILY_TENTACOOL, PokemonId.TENTACRUEL); + familys.put(PokemonId.GEODUGE, PokemonFamilyId.FAMILY_GEODUDE); + familys.put(PokemonId.GRAVELER, PokemonFamilyId.FAMILY_GEODUDE); + familys.put(PokemonId.GOLEM, PokemonFamilyId.FAMILY_GEODUDE); + highestForFamily.put(PokemonFamilyId.FAMILY_GEODUDE, PokemonId.GOLEM); + familys.put(PokemonId.PONYTA, PokemonFamilyId.FAMILY_PONYTA); + familys.put(PokemonId.RAPIDASH, PokemonFamilyId.FAMILY_PONYTA); + highestForFamily.put(PokemonFamilyId.FAMILY_PONYTA, PokemonId.RAPIDASH); + familys.put(PokemonId.SLOWPOKE, PokemonFamilyId.FAMILY_SLOWPOKE); + familys.put(PokemonId.SLOWBRO, PokemonFamilyId.FAMILY_SLOWPOKE); + highestForFamily.put(PokemonFamilyId.FAMILY_SLOWPOKE, PokemonId.SLOWBRO); + familys.put(PokemonId.MAGNEMITE, PokemonFamilyId.FAMILY_MAGNEMITE); + familys.put(PokemonId.MAGNETON, PokemonFamilyId.FAMILY_MAGNEMITE); + highestForFamily.put(PokemonFamilyId.FAMILY_MAGNEMITE, PokemonId.MAGNETON); + familys.put(PokemonId.FARFETCHD, PokemonFamilyId.FAMILY_FARFETCHD); + highestForFamily.put(PokemonFamilyId.FAMILY_FARFETCHD, PokemonId.FARFETCHD); + familys.put(PokemonId.DODUO, PokemonFamilyId.FAMILY_DODUO); + familys.put(PokemonId.DODRIO, PokemonFamilyId.FAMILY_DODUO); + highestForFamily.put(PokemonFamilyId.FAMILY_DODUO, PokemonId.DODRIO); + familys.put(PokemonId.SEEL, PokemonFamilyId.FAMILY_SEEL); + familys.put(PokemonId.DEWGONG, PokemonFamilyId.FAMILY_SEEL); + highestForFamily.put(PokemonFamilyId.FAMILY_SEEL, PokemonId.DEWGONG); + familys.put(PokemonId.GRIMER, PokemonFamilyId.FAMILY_GRIMER); + familys.put(PokemonId.MUK, PokemonFamilyId.FAMILY_GRIMER); + highestForFamily.put(PokemonFamilyId.FAMILY_GRIMER, PokemonId.MUK); + familys.put(PokemonId.SHELLDER, PokemonFamilyId.FAMILY_SHELLDER); + familys.put(PokemonId.CLOYSTER, PokemonFamilyId.FAMILY_SHELLDER); + highestForFamily.put(PokemonFamilyId.FAMILY_SHELLDER, PokemonId.CLOYSTER); + familys.put(PokemonId.GASTLY, PokemonFamilyId.FAMILY_GASTLY); + familys.put(PokemonId.HAUNTER, PokemonFamilyId.FAMILY_GASTLY); + familys.put(PokemonId.GENGAR, PokemonFamilyId.FAMILY_GASTLY); + highestForFamily.put(PokemonFamilyId.FAMILY_GASTLY, PokemonId.GENGAR); + familys.put(PokemonId.ONIX, PokemonFamilyId.FAMILY_ONIX); + highestForFamily.put(PokemonFamilyId.FAMILY_ONIX, PokemonId.ONIX); + familys.put(PokemonId.DROWZEE, PokemonFamilyId.FAMILY_DROWZEE); + highestForFamily.put(PokemonFamilyId.FAMILY_DROWZEE, PokemonId.DROWZEE); // MISSING ENUM IN PROTO - //map.put(PokemonId.HYPNO,PokemonFamilyId.FAMILY_HYPNO); - map.put(PokemonId.KRABBY, PokemonFamilyId.FAMILY_KRABBY); - map.put(PokemonId.KINGLER, PokemonFamilyId.FAMILY_KRABBY); - map.put(PokemonId.VOLTORB, PokemonFamilyId.FAMILY_VOLTORB); - map.put(PokemonId.ELECTRODE, PokemonFamilyId.FAMILY_VOLTORB); - map.put(PokemonId.EXEGGCUTE, PokemonFamilyId.FAMILY_EXEGGCUTE); - map.put(PokemonId.EXEGGUTOR, PokemonFamilyId.FAMILY_EXEGGCUTE); - map.put(PokemonId.CUBONE, PokemonFamilyId.FAMILY_CUBONE); - map.put(PokemonId.MAROWAK, PokemonFamilyId.FAMILY_CUBONE); - map.put(PokemonId.HITMONLEE, PokemonFamilyId.FAMILY_HITMONLEE); - map.put(PokemonId.HITMONCHAN, PokemonFamilyId.FAMILY_HITMONCHAN); - map.put(PokemonId.LICKITUNG, PokemonFamilyId.FAMILY_LICKITUNG); - map.put(PokemonId.KOFFING, PokemonFamilyId.FAMILY_KOFFING); - map.put(PokemonId.WEEZING, PokemonFamilyId.FAMILY_KOFFING); - map.put(PokemonId.RHYHORN, PokemonFamilyId.FAMILY_RHYHORN); - map.put(PokemonId.RHYDON, PokemonFamilyId.FAMILY_RHYHORN); - map.put(PokemonId.CHANSEY, PokemonFamilyId.FAMILY_CHANSEY); - map.put(PokemonId.TANGELA, PokemonFamilyId.FAMILY_TANGELA); - map.put(PokemonId.KANGASKHAN, PokemonFamilyId.FAMILY_KANGASKHAN); - map.put(PokemonId.HORSEA, PokemonFamilyId.FAMILY_HORSEA); - map.put(PokemonId.SEADRA, PokemonFamilyId.FAMILY_HORSEA); - map.put(PokemonId.GOLDEEN, PokemonFamilyId.FAMILY_GOLDEEN); - map.put(PokemonId.SEAKING, PokemonFamilyId.FAMILY_GOLDEEN); - map.put(PokemonId.STARYU, PokemonFamilyId.FAMILY_STARYU); - map.put(PokemonId.STARMIE, PokemonFamilyId.FAMILY_STARYU); - map.put(PokemonId.MR_MIME, PokemonFamilyId.FAMILY_MR_MIME); - map.put(PokemonId.SCYTHER, PokemonFamilyId.FAMILY_SCYTHER); - map.put(PokemonId.JYNX, PokemonFamilyId.FAMILY_JYNX); - map.put(PokemonId.ELECTABUZZ, PokemonFamilyId.FAMILY_ELECTABUZZ); - map.put(PokemonId.MAGMAR, PokemonFamilyId.FAMILY_MAGMAR); - map.put(PokemonId.PINSIR, PokemonFamilyId.FAMILY_PINSIR); - map.put(PokemonId.TAUROS, PokemonFamilyId.FAMILY_TAUROS); - map.put(PokemonId.MAGIKARP, PokemonFamilyId.FAMILY_MAGIKARP); - map.put(PokemonId.GYARADOS, PokemonFamilyId.FAMILY_MAGIKARP); - map.put(PokemonId.LAPRAS, PokemonFamilyId.FAMILY_LAPRAS); - map.put(PokemonId.DITTO, PokemonFamilyId.FAMILY_DITTO); - map.put(PokemonId.EEVEE, PokemonFamilyId.FAMILY_EEVEE); - map.put(PokemonId.JOLTEON, PokemonFamilyId.FAMILY_EEVEE); - map.put(PokemonId.VAPOREON, PokemonFamilyId.FAMILY_EEVEE); - map.put(PokemonId.FLAREON, PokemonFamilyId.FAMILY_EEVEE); - map.put(PokemonId.PORYGON, PokemonFamilyId.FAMILY_PORYGON); - map.put(PokemonId.OMANYTE, PokemonFamilyId.FAMILY_OMANYTE); - map.put(PokemonId.OMASTAR, PokemonFamilyId.FAMILY_OMANYTE); - map.put(PokemonId.KABUTO, PokemonFamilyId.FAMILY_KABUTO); - map.put(PokemonId.KABUTOPS, PokemonFamilyId.FAMILY_KABUTO); - map.put(PokemonId.AERODACTYL, PokemonFamilyId.FAMILY_AERODACTYL); - map.put(PokemonId.SNORLAX, PokemonFamilyId.FAMILY_SNORLAX); - map.put(PokemonId.ARTICUNO, PokemonFamilyId.FAMILY_ARTICUNO); - map.put(PokemonId.ZAPDOS, PokemonFamilyId.FAMILY_ZAPDOS); - map.put(PokemonId.MOLTRES, PokemonFamilyId.FAMILY_MOLTRES); - map.put(PokemonId.DRATINI, PokemonFamilyId.FAMILY_DRATINI); - map.put(PokemonId.DRAGONAIR, PokemonFamilyId.FAMILY_DRATINI); - map.put(PokemonId.DRAGONITE, PokemonFamilyId.FAMILY_DRATINI); - map.put(PokemonId.MEWTWO, PokemonFamilyId.FAMILY_MEWTWO); - map.put(PokemonId.MEW, PokemonFamilyId.FAMILY_MEW); - + //familys.put(PokemonId.HYPNO,PokemonFamilyId.FAMILY_HYPNO); + familys.put(PokemonId.KRABBY, PokemonFamilyId.FAMILY_KRABBY); + familys.put(PokemonId.KINGLER, PokemonFamilyId.FAMILY_KRABBY); + highestForFamily.put(PokemonFamilyId.FAMILY_KRABBY, PokemonId.KINGLER); + familys.put(PokemonId.VOLTORB, PokemonFamilyId.FAMILY_VOLTORB); + familys.put(PokemonId.ELECTRODE, PokemonFamilyId.FAMILY_VOLTORB); + highestForFamily.put(PokemonFamilyId.FAMILY_VOLTORB, PokemonId.ELECTRODE); + familys.put(PokemonId.EXEGGCUTE, PokemonFamilyId.FAMILY_EXEGGCUTE); + familys.put(PokemonId.EXEGGUTOR, PokemonFamilyId.FAMILY_EXEGGCUTE); + highestForFamily.put(PokemonFamilyId.FAMILY_EXEGGCUTE, PokemonId.EXEGGUTOR); + familys.put(PokemonId.CUBONE, PokemonFamilyId.FAMILY_CUBONE); + familys.put(PokemonId.MAROWAK, PokemonFamilyId.FAMILY_CUBONE); + highestForFamily.put(PokemonFamilyId.FAMILY_CUBONE, PokemonId.MAROWAK); + familys.put(PokemonId.HITMONLEE, PokemonFamilyId.FAMILY_HITMONLEE); + highestForFamily.put(PokemonFamilyId.FAMILY_HITMONLEE, PokemonId.HITMONLEE); + familys.put(PokemonId.HITMONCHAN, PokemonFamilyId.FAMILY_HITMONCHAN); + highestForFamily.put(PokemonFamilyId.FAMILY_HITMONCHAN, PokemonId.HITMONCHAN); + familys.put(PokemonId.LICKITUNG, PokemonFamilyId.FAMILY_LICKITUNG); + highestForFamily.put(PokemonFamilyId.FAMILY_LICKITUNG, PokemonId.LICKITUNG); + familys.put(PokemonId.KOFFING, PokemonFamilyId.FAMILY_KOFFING); + familys.put(PokemonId.WEEZING, PokemonFamilyId.FAMILY_KOFFING); + highestForFamily.put(PokemonFamilyId.FAMILY_KOFFING, PokemonId.WEEZING); + familys.put(PokemonId.RHYHORN, PokemonFamilyId.FAMILY_RHYHORN); + familys.put(PokemonId.RHYDON, PokemonFamilyId.FAMILY_RHYHORN); + highestForFamily.put(PokemonFamilyId.FAMILY_RHYHORN, PokemonId.RHYDON); + familys.put(PokemonId.CHANSEY, PokemonFamilyId.FAMILY_CHANSEY); + highestForFamily.put(PokemonFamilyId.FAMILY_CHANSEY, PokemonId.CHANSEY); + familys.put(PokemonId.TANGELA, PokemonFamilyId.FAMILY_TANGELA); + highestForFamily.put(PokemonFamilyId.FAMILY_TANGELA, PokemonId.TANGELA); + familys.put(PokemonId.KANGASKHAN, PokemonFamilyId.FAMILY_KANGASKHAN); + highestForFamily.put(PokemonFamilyId.FAMILY_KANGASKHAN, PokemonId.KANGASKHAN); + familys.put(PokemonId.HORSEA, PokemonFamilyId.FAMILY_HORSEA); + familys.put(PokemonId.SEADRA, PokemonFamilyId.FAMILY_HORSEA); + highestForFamily.put(PokemonFamilyId.FAMILY_HORSEA, PokemonId.SEADRA); + familys.put(PokemonId.GOLDEEN, PokemonFamilyId.FAMILY_GOLDEEN); + familys.put(PokemonId.SEAKING, PokemonFamilyId.FAMILY_GOLDEEN); + highestForFamily.put(PokemonFamilyId.FAMILY_GOLDEEN, PokemonId.SEAKING); + familys.put(PokemonId.STARYU, PokemonFamilyId.FAMILY_STARYU); + familys.put(PokemonId.STARMIE, PokemonFamilyId.FAMILY_STARYU); + highestForFamily.put(PokemonFamilyId.FAMILY_STARYU, PokemonId.STARMIE); + familys.put(PokemonId.MR_MIME, PokemonFamilyId.FAMILY_MR_MIME); + highestForFamily.put(PokemonFamilyId.FAMILY_MR_MIME, PokemonId.MR_MIME); + familys.put(PokemonId.SCYTHER, PokemonFamilyId.FAMILY_SCYTHER); + highestForFamily.put(PokemonFamilyId.FAMILY_SCYTHER, PokemonId.SCYTHER); + familys.put(PokemonId.JYNX, PokemonFamilyId.FAMILY_JYNX); + highestForFamily.put(PokemonFamilyId.FAMILY_JYNX, PokemonId.JYNX); + familys.put(PokemonId.ELECTABUZZ, PokemonFamilyId.FAMILY_ELECTABUZZ); + highestForFamily.put(PokemonFamilyId.FAMILY_ELECTABUZZ, PokemonId.ELECTABUZZ); + familys.put(PokemonId.MAGMAR, PokemonFamilyId.FAMILY_MAGMAR); + highestForFamily.put(PokemonFamilyId.FAMILY_MAGMAR, PokemonId.MAGMAR); + familys.put(PokemonId.PINSIR, PokemonFamilyId.FAMILY_PINSIR); + highestForFamily.put(PokemonFamilyId.FAMILY_PINSIR, PokemonId.PINSIR); + familys.put(PokemonId.TAUROS, PokemonFamilyId.FAMILY_TAUROS); + highestForFamily.put(PokemonFamilyId.FAMILY_TAUROS, PokemonId.TAUROS); + familys.put(PokemonId.MAGIKARP, PokemonFamilyId.FAMILY_MAGIKARP); + familys.put(PokemonId.GYARADOS, PokemonFamilyId.FAMILY_MAGIKARP); + highestForFamily.put(PokemonFamilyId.FAMILY_MAGIKARP, PokemonId.GYARADOS); + familys.put(PokemonId.LAPRAS, PokemonFamilyId.FAMILY_LAPRAS); + highestForFamily.put(PokemonFamilyId.FAMILY_LAPRAS, PokemonId.LAPRAS); + familys.put(PokemonId.DITTO, PokemonFamilyId.FAMILY_DITTO); + highestForFamily.put(PokemonFamilyId.FAMILY_DITTO, PokemonId.DITTO); + familys.put(PokemonId.EEVEE, PokemonFamilyId.FAMILY_EEVEE); + familys.put(PokemonId.JOLTEON, PokemonFamilyId.FAMILY_EEVEE); + familys.put(PokemonId.VAPOREON, PokemonFamilyId.FAMILY_EEVEE); + familys.put(PokemonId.FLAREON, PokemonFamilyId.FAMILY_EEVEE); + highestForFamily.put(PokemonFamilyId.FAMILY_EEVEE, PokemonId.EEVEE); + familys.put(PokemonId.PORYGON, PokemonFamilyId.FAMILY_PORYGON); + highestForFamily.put(PokemonFamilyId.FAMILY_PORYGON, PokemonId.PORYGON); + familys.put(PokemonId.OMANYTE, PokemonFamilyId.FAMILY_OMANYTE); + familys.put(PokemonId.OMASTAR, PokemonFamilyId.FAMILY_OMANYTE); + highestForFamily.put(PokemonFamilyId.FAMILY_OMANYTE, PokemonId.OMASTAR); + familys.put(PokemonId.KABUTO, PokemonFamilyId.FAMILY_KABUTO); + familys.put(PokemonId.KABUTOPS, PokemonFamilyId.FAMILY_KABUTO); + highestForFamily.put(PokemonFamilyId.FAMILY_KABUTO, PokemonId.KABUTOPS); + familys.put(PokemonId.AERODACTYL, PokemonFamilyId.FAMILY_AERODACTYL); + highestForFamily.put(PokemonFamilyId.FAMILY_AERODACTYL, PokemonId.AERODACTYL); + familys.put(PokemonId.SNORLAX, PokemonFamilyId.FAMILY_SNORLAX); + highestForFamily.put(PokemonFamilyId.FAMILY_SNORLAX, PokemonId.SNORLAX); + familys.put(PokemonId.ARTICUNO, PokemonFamilyId.FAMILY_ARTICUNO); + highestForFamily.put(PokemonFamilyId.FAMILY_ARTICUNO, PokemonId.ARTICUNO); + familys.put(PokemonId.ZAPDOS, PokemonFamilyId.FAMILY_ZAPDOS); + highestForFamily.put(PokemonFamilyId.FAMILY_ZAPDOS, PokemonId.ZAPDOS); + familys.put(PokemonId.MOLTRES, PokemonFamilyId.FAMILY_MOLTRES); + highestForFamily.put(PokemonFamilyId.FAMILY_MOLTRES, PokemonId.MOLTRES); + familys.put(PokemonId.DRATINI, PokemonFamilyId.FAMILY_DRATINI); + familys.put(PokemonId.DRAGONAIR, PokemonFamilyId.FAMILY_DRATINI); + familys.put(PokemonId.DRAGONITE, PokemonFamilyId.FAMILY_DRATINI); + highestForFamily.put(PokemonFamilyId.FAMILY_DRATINI, PokemonId.DRAGONITE); + familys.put(PokemonId.MEWTWO, PokemonFamilyId.FAMILY_MEWTWO); + highestForFamily.put(PokemonFamilyId.FAMILY_MEWTWO, PokemonId.MEWTWO); + familys.put(PokemonId.MEW, PokemonFamilyId.FAMILY_MEW); + highestForFamily.put(PokemonFamilyId.FAMILY_MEW, PokemonId.MEW); } + /** + * Return the FamilyId for the given PokemonId + * @param PokemonId + * @return PokemonFamilyId + */ public static PokemonFamilyId getFamily(PokemonId id) { - return map.get(id); + return familys.get(id); + } + + /** + * Return the highest evolution for given family ID. + * !!! CARE TO EVEE THAT DOESNT HAVE BETTER EVOLUTION !!! + * + * @param PokemonFamilyId + * @return PokemonId + */ + public static PokemonId getHightestForFamily(PokemonFamilyId family) { + return highestForFamily.get(family); } diff --git a/src/main/java/com/pokegoapi/exceptions/InvalidCurrencyException.java b/src/main/java/com/pokegoapi/exceptions/InvalidCurrencyException.java index fe08b3e8e..ea36d259c 100644 --- a/src/main/java/com/pokegoapi/exceptions/InvalidCurrencyException.java +++ b/src/main/java/com/pokegoapi/exceptions/InvalidCurrencyException.java @@ -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); + } } diff --git a/src/main/java/com/pokegoapi/exceptions/LoginFailedException.java b/src/main/java/com/pokegoapi/exceptions/LoginFailedException.java index ed9d143ec..f311281fe 100644 --- a/src/main/java/com/pokegoapi/exceptions/LoginFailedException.java +++ b/src/main/java/com/pokegoapi/exceptions/LoginFailedException.java @@ -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); + } } diff --git a/src/main/java/com/pokegoapi/exceptions/NoSuchItemException.java b/src/main/java/com/pokegoapi/exceptions/NoSuchItemException.java index 19ea4a269..00a9eca2c 100644 --- a/src/main/java/com/pokegoapi/exceptions/NoSuchItemException.java +++ b/src/main/java/com/pokegoapi/exceptions/NoSuchItemException.java @@ -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); + } } diff --git a/src/main/java/com/pokegoapi/main/RequestHandler.java b/src/main/java/com/pokegoapi/main/RequestHandler.java index 5030a24ca..4d4a0f5e1 100644 --- a/src/main/java/com/pokegoapi/main/RequestHandler.java +++ b/src/main/java/com/pokegoapi/main/RequestHandler.java @@ -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; @@ -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) { @@ -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);