File tree 3 files changed +57
-30
lines changed
allauth/socialaccount/providers/openstreetmap
3 files changed +57
-30
lines changed Original file line number Diff line number Diff line change @@ -13,7 +13,13 @@ def get_profile_url(self):
13
13
)
14
14
15
15
def get_avatar_url (self ):
16
- return self .account .extra_data .get ("avatar" )
16
+ ret = None
17
+ if img := self .account .extra_data .get ("img" ):
18
+ ret = img .get ("href" )
19
+ if not ret :
20
+ # Backwards compatible (OSM provider data originating from XML)
21
+ ret = self .account .extra_data .get ("avatar" )
22
+ return ret
17
23
18
24
def get_username (self ):
19
25
return self .account .extra_data ["display_name" ]
@@ -26,7 +32,7 @@ class OpenStreetMapProvider(OAuthProvider):
26
32
oauth_adapter_class = OpenStreetMapOAuthAdapter
27
33
28
34
def extract_uid (self , data ):
29
- return data ["id" ]
35
+ return str ( data ["id" ])
30
36
31
37
def extract_common_fields (self , data ):
32
38
return dict (username = data ["display_name" ])
Original file line number Diff line number Diff line change @@ -12,21 +12,53 @@ def get_mocked_response(self):
12
12
return [
13
13
MockedResponse (
14
14
200 ,
15
- r"""<?xml version="1.0" encoding="UTF-8"?>
16
- <osm version="0.6" generator="OpenStreetMap server" copyright="OpenStreetMap and contributors" attribution="http://www.openstreetmap.org/copyright" license="http://opendatacommons.org/licenses/odbl/1-0/">
17
- <user id="1" display_name="Steve" account_created="2005-09-13T15:32:57Z">
18
- <description></description>
19
- <contributor-terms agreed="true"/>
20
- <img href="https://secure.gravatar.com/avatar.jpg"/>
21
- <roles>
22
- </roles>
23
- <changesets count="899"/>
24
- <traces count="21"/>
25
- <blocks>
26
- <received count="0" active="0"/>
27
- </blocks>
28
- </user>
29
- </osm>
15
+ r"""
16
+ {
17
+ "version": "0.6",
18
+ "generator": "OpenStreetMap server",
19
+ "copyright": "OpenStreetMap and contributors",
20
+ "attribution": "http://www.openstreetmap.org/copyright",
21
+ "license": "http://opendatacommons.org/licenses/odbl/1-0/",
22
+ "user": {
23
+ "id": 1,
24
+ "display_name": "Steve",
25
+ "account_created": "2024-11-06T20:11:01Z",
26
+ "description": "",
27
+ "contributor_terms": {
28
+ "agreed": true,
29
+ "pd": true
30
+ },
31
+ "img": {
32
+ "href": "https://secure.gravatar.com/avatar.jpg"
33
+ },
34
+ "roles": [],
35
+ "changesets": {
36
+ "count": 0
37
+ },
38
+ "traces": {
39
+ "count": 0
40
+ },
41
+ "blocks": {
42
+ "received": {
43
+ "count": 0,
44
+ "active": 0
45
+ }
46
+ },
47
+ "languages": [
48
+ "en-US",
49
+ "en"
50
+ ],
51
+ "messages": {
52
+ "received": {
53
+ "count": 0,
54
+ "unread": 0
55
+ },
56
+ "sent": {
57
+ "count": 0
58
+ }
59
+ }
60
+ }
61
+ }
30
62
""" ,
31
63
)
32
64
] # noqa
Original file line number Diff line number Diff line change 1
- from xml .etree import ElementTree
2
- from xml .parsers .expat import ExpatError
3
-
4
1
from allauth .socialaccount .providers .oauth .client import OAuth
5
2
from allauth .socialaccount .providers .oauth .views import (
6
3
OAuthAdapter ,
@@ -13,16 +10,8 @@ class OpenStreetMapAPI(OAuth):
13
10
url = "https://api.openstreetmap.org/api/0.6/user/details.json"
14
11
15
12
def get_user_info (self ):
16
- raw_xml = self .query (self .url ).text
17
- try :
18
- user_element = ElementTree .fromstring (raw_xml ).find ("user" )
19
- user_info = user_element .attrib
20
- user_avatar = user_element .find ("img" )
21
- if user_avatar is not None :
22
- user_info .update ({"avatar" : user_avatar .attrib .get ("href" )})
23
- return user_info
24
- except (ExpatError , KeyError , IndexError ):
25
- return None
13
+ data = self .query (self .url ).json ()
14
+ return data ["user" ]
26
15
27
16
28
17
class OpenStreetMapOAuthAdapter (OAuthAdapter ):
You can’t perform that action at this time.
0 commit comments