~ubuntu-branches/debian/sid/social-auth-core/sid

« back to all changes in this revision

Viewing changes to social_core/backends/steam.py

  • Committer: Package Import Robot
  • Author(s): Andre Bianchi
  • Date: 2018-02-22 19:49:12 UTC
  • Revision ID: package-import@ubuntu.com-20180222194912-4lqv8mlhnqc4ncd3
Tags: upstream-1.7.0
ImportĀ upstreamĀ versionĀ 1.7.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
"""
 
2
Steam OpenId backend, docs at:
 
3
    https://python-social-auth.readthedocs.io/en/latest/backends/steam.html
 
4
"""
 
5
from .open_id import OpenIdAuth
 
6
from ..exceptions import AuthFailed
 
7
 
 
8
 
 
9
USER_INFO = 'http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?'
 
10
 
 
11
 
 
12
class SteamOpenId(OpenIdAuth):
 
13
    name = 'steam'
 
14
    URL = 'https://steamcommunity.com/openid'
 
15
 
 
16
    def get_user_id(self, details, response):
 
17
        """Return user unique id provided by service"""
 
18
        return self._user_id(response)
 
19
 
 
20
    def get_user_details(self, response):
 
21
        player = self.get_json(USER_INFO, params={
 
22
            'key': self.setting('API_KEY'),
 
23
            'steamids': self._user_id(response)
 
24
        })
 
25
        if len(player['response']['players']) > 0:
 
26
            player = player['response']['players'][0]
 
27
            details = {'username': player.get('personaname'),
 
28
                       'email': '',
 
29
                       'fullname': '',
 
30
                       'first_name': '',
 
31
                       'last_name': '',
 
32
                       'player': player}
 
33
        else:
 
34
            details = {}
 
35
        return details
 
36
 
 
37
    def consumer(self):
 
38
        # Steam seems to support stateless mode only, ignore store
 
39
        if not hasattr(self, '_consumer'):
 
40
            self._consumer = self.create_consumer()
 
41
        return self._consumer
 
42
 
 
43
    def _user_id(self, response):
 
44
        user_id = response.identity_url.rsplit('/', 1)[-1]
 
45
        if not user_id.isdigit():
 
46
            raise AuthFailed(self, 'Missing Steam Id')
 
47
        return user_id