def test_use_trailing_slash(self): url_builder = UrlBuilder(use_trailing_slash=True) url = url_builder.add('hello') \ .add('world') \ .add('2') \ .build() assert url == 'hello/world/2/'
def test_use_initial_and_trailing_slash(self): url_builder = UrlBuilder(use_initial_slash=True, use_trailing_slash=True) url = url_builder.add('hello') \ .add('world') \ .add('90') \ .add('1') \ .build() assert url == '/hello/world/90/1/'
def get_data_pet_types(self): pet_types_path = UrlBuilder() \ .add(ENDPOINT_DATA_RESOURCES) \ .add('pet') \ .add('types') \ .build() return self._get_pickled_response_generic(pet_types_path)
def get_data_item_classes(self): item_classes_path = UrlBuilder() \ .add(ENDPOINT_DATA_RESOURCES) \ .add('item') \ .add('classes') \ .build() return self._get_pickled_response_generic(item_classes_path)
def get_data_guild_achievements(self): guild_perks_path = UrlBuilder() \ .add(ENDPOINT_DATA_RESOURCES) \ .add('guild') \ .add('achievements') \ .build() return self._get_pickled_response_generic(guild_perks_path)
def get_data_guild_rewards(self): guild_rewards_path = UrlBuilder() \ .add(ENDPOINT_DATA_RESOURCES) \ .add('guild') \ .add('rewards') \ .build() return self._get_pickled_response_generic(guild_rewards_path)
def get_data_character_achievements(self): character_achievements_path = UrlBuilder() \ .add(ENDPOINT_DATA_RESOURCES) \ .add('character') \ .add('achievements') \ .build() return self._get_pickled_response_generic(character_achievements_path)
def get_item_data(self, item_identifier): item_data_path = UrlBuilder() \ .add(ENDPOINT_DATA) \ .add('item') \ .add(item_identifier) \ .build() return self._get_pickled_response_generic(item_data_path)
def get_pet_stats_by_species(self, pet_species_id): pet_species_path = UrlBuilder() \ .add(ENDPOINT_PET) \ .add('stats') \ .add(pet_species_id) \ .build() return self._get_pickled_response_generic(pet_species_path)
def get_pet_ability(self, pet_ability_id): pet_ability_path = UrlBuilder() \ .add(ENDPOINT_PET) \ .add('ability') \ .add(pet_ability_id) \ .build() return self._get_pickled_response_generic(pet_ability_path)
def get_item_set(self, item_set_id): item_path = UrlBuilder() \ .add(ENDPOINT_ITEM) \ .add('set') \ .add(item_set_id) \ .build() return self._get_pickled_response_generic(item_path)
def get_follower_data(self, follower): follower_path = UrlBuilder() \ .add(ENDPOINT_DATA) \ .add('follower') \ .add(follower.value) \ .build() return self._get_pickled_response_generic(follower_path)
def get_realm_status(self, limit_to_realms=None): if limit_to_realms: self._params['realms'] = ' '.join(limit_to_realms) realms_path = UrlBuilder() \ .add(ENDPOINT_REALM_STATUS) \ .add('status') \ .build() return self._get_pickled_response_generic(realms_path)
def _get_pickled_response_generic(self, path): full_path = UrlBuilder() \ .add(self._base_game_api_path) \ .add(path) \ .build() response = requests.get(full_path, params=self._params, timeout=self._timeout) self._init_params() return jsonpickle.decode(response.text)
def get_artisan_data(self, artisan): print(artisan) artisan_path = UrlBuilder() \ .add(ENDPOINT_DATA) \ .add('artisan') \ .add(artisan.value) \ .build() return self._get_pickled_response_generic(artisan_path)
def get_hero_profile(self, battle_tag, hero_id): hero_profile_path = UrlBuilder() \ .add(ENDPOINT_PROFILE) \ .add(battle_tag) \ .add('hero') \ .add(hero_id) \ .build() return self._get_pickled_response_generic(hero_profile_path)
def get_profile(self, profile_id, profile_name): profile_path = UrlBuilder(use_trailing_slash=True) \ .add(ENDPOINT_PROFILE) \ .add(profile_id) \ .add(self._starcraft2_region) \ .add(profile_name) \ .build() return self._get_pickled_response_generic(profile_path)
def get_profile_match_history(self, profile_id, profile_name): profile_match_history_path = UrlBuilder() \ .add(ENDPOINT_PROFILE) \ .add(profile_id) \ .add(self._starcraft2_region) \ .add(profile_name) \ .add('matches') \ .build() return self._get_pickled_response_generic(profile_match_history_path)
def get_pvp_leaderboard_for_bracket(self, pvp_bracket): if not isinstance(pvp_bracket, PvpBracket): print('Must be an instance of PvpBracket!') return else: pvp_leaderboard_path = UrlBuilder() \ .add(ENDPOINT_PVP) \ .add(pvp_bracket.value) \ .build() return self._get_pickled_response_generic(pvp_leaderboard_path)
def get_guild_profile(self, realm, guild_name, *args): if not args: fields = util.get_delimited_enum_value_str(list(GuildProfileField), ' ') else: fields = util.get_delimited_enum_value_str(args, ' ') self._params['fields'] = fields guild_profile_path = UrlBuilder() \ .add(ENDPOINT_GUILD_PROFILE) \ .add(realm) \ .add(guild_name) \ .build() return self._get_pickled_response_generic(guild_profile_path)
def get_character_profile(self, realm, character_name, *args): if not args: fields = util.get_delimited_enum_value_str( list(CharacterProfileField), ' ') else: fields = util.get_delimited_enum_value_str(args, ' ') self._params['fields'] = fields character_profile_path = UrlBuilder() \ .add(ENDPOINT_CHARACTER_PROFILE) \ .add(realm) \ .add(character_name) \ .build() return self._get_pickled_response_generic(character_profile_path)
def get_auction_data(self, realm): """Checks if there is a recent auction house data dump for this realm. If so, it returns the most recent one. THIS MAY TAKE A VERY LONG TIME DEPENDING ON THE AMOUNT OF DATA STORED.""" auction_path = UrlBuilder() \ .add(ENDPOINT_AUCTION) \ .add('data') \ .add(realm) \ .build() auction_initial_result = self._get_pickled_response_generic( auction_path) print(auction_initial_result) auction_initial_result_files = auction_initial_result['files'] if auction_initial_result_files and len( auction_initial_result_files) > 0: auction_result_two = requests.get( auction_initial_result_files[0]['url']) return jsonpickle.decode(auction_result_two.text) else: return {}
def get_career_profile(self, battle_tag): career_profile_path = UrlBuilder(use_trailing_slash=True) \ .add(ENDPOINT_PROFILE) \ .add(battle_tag) \ .build() return self._get_pickled_response_generic(career_profile_path)
def get_rewards_data(self): rewards_path = UrlBuilder() \ .add(ENDPOINT_DATA) \ .add('rewards') \ .build() return self._get_pickled_response_generic(rewards_path)
def get_achievements_data(self): achievements_path = UrlBuilder() \ .add(ENDPOINT_DATA) \ .add('achievements') \ .build() return self._get_pickled_response_generic(achievements_path)
def get_ladder(self, ladder_id): ladder_path = UrlBuilder() \ .add(ENDPOINT_LADDER) \ .add(ladder_id) \ .build() return self._get_pickled_response_generic(ladder_path)
def get_region_challenge_leaderboard(self): realm_leaderboard_path = UrlBuilder() \ .add(ENDPOINT_CHALLENGE) \ .add('region') \ .build() return self._get_pickled_response_generic(realm_leaderboard_path)
def get_boss(self, boss_id): boss_path = UrlBuilder() \ .add(ENDPOINT_BOSS) \ .add(boss_id) \ .build() return self._get_pickled_response_generic(boss_path)
def get_bosses(self): bosses_path = UrlBuilder(use_trailing_slash=True) \ .add(ENDPOINT_BOSS) \ .build() return self._get_pickled_response_generic(bosses_path)
def get_achievement(self, achievement_id): achievement_path = UrlBuilder() \ .add(ENDPOINT_ACHIEVEMENT) \ .add(achievement_id) \ .build() return self._get_pickled_response_generic(achievement_path)