meraki-analytics / cassiopeia

An all-inclusive Python framework for the Riot Games League of Legends API. Cass focuses on making the data easy and fun to work with, while providing all the tools necessary to create a website or do data analysis.
MIT License
552 stars 135 forks source link

HTTPError when getting champion_masteries from Summoner #175

Closed r000t closed 6 years ago

r000t commented 6 years ago

See title. h.id (or something else that forces the object to get fully loaded) seems to be needed, otherwise a different error occurs.

Steps to reproduce:

>>> import cassiopeia 
>>> cassiopeia.set_riot_api_key("SCRUBBED")
>>> cassiopeia.set_default_region("NA")
>>> h = cassiopeia.get_summoner(name="ekkremental")
>>> h.id
Making call: https://na1.api.riotgames.com/lol/summoner/v3/summoners/by-name/ekkremental
88100039
>>> h.champion_masteries
Making call: https://na1.api.riotgames.com/lol/champion-mastery/v3/champion-masteries/by-summoner/88100039
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/site-packages/cassiopeia/datastores/riotapi/common.py", line 243, in __call__
    connection=self.connection)
  File "/usr/local/lib/python3.6/site-packages/cassiopeia/datastores/common.py", line 133, in get
    raise HTTPError(message, status_code, response_headers)
cassiopeia.datastores.common.HTTPError: Bad request - Invalid routing value na1

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.6/site-packages/cassiopeia/core/summoner.py", line 192, in champion_masteries
    return ChampionMasteries(summoner=self, region=self.region)
  File "/usr/local/lib/python3.6/site-packages/cassiopeia/core/common.py", line 44, in default_region_wrapper
    return method(self, *args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/cassiopeia/core/common.py", line 192, in __call__
    return pipeline.get(cls, query=query)
  File "/usr/local/lib/python3.6/site-packages/datapipelines/pipelines.py", line 460, in get
    return handler.get(query, context)
  File "/usr/local/lib/python3.6/site-packages/datapipelines/pipelines.py", line 186, in get
    result = self._source.get(self._source_type, deepcopy(query), context)
  File "/usr/local/lib/python3.6/site-packages/datapipelines/sources.py", line 120, in get
    return source.get(type, deepcopy(query), context)
  File "/usr/local/lib/python3.6/site-packages/datapipelines/sources.py", line 69, in wrapper
    return call(self, query, context=context)
  File "/usr/local/lib/python3.6/site-packages/datapipelines/queries.py", line 323, in wrapped
    return method(self, query, context)
  File "/usr/local/lib/python3.6/site-packages/cassiopeia/datastores/riotapi/championmastery.py", line 79, in get_champion_mastery_list
    data = self._get(url, {}, self._get_rate_limiter(query["platform"], "champion-masteries/by-summoner/summonerId"))
  File "/usr/local/lib/python3.6/site-packages/cassiopeia/datastores/riotapi/common.py", line 200, in _get
    return request()
  File "/usr/local/lib/python3.6/site-packages/cassiopeia/datastores/riotapi/common.py", line 247, in __call__
    return self._retry_request_by_handling_error(error)
  File "/usr/local/lib/python3.6/site-packages/cassiopeia/datastores/riotapi/common.py", line 269, in _retry_request_by_handling_error
    new_handler = self.service._handlers[error.code]()
KeyError: 400
jjmaldonis commented 6 years ago

This is probably just because the champion mastery endpoint is down right now (on Riot's servers).