Skip to content

Commit 513009d

Browse files
authored
Merge pull request #510 from mapbox/json-format-osm-api
Use json format to get user data from OSM API
2 parents 734f2a0 + 1f42d89 commit 513009d

File tree

1 file changed

+14
-30
lines changed

1 file changed

+14
-30
lines changed

src/network/openstreetmap.js

+14-30
Original file line numberDiff line numberDiff line change
@@ -3,38 +3,22 @@ import { apiOSM } from '../config/constants';
33
import { API_URL } from '../config';
44

55
export function getUserDetails(uid: number, token: string): Map<'string', *> {
6-
const user = {};
7-
const fromOSM = fetch(`${apiOSM}/user/${uid}`)
8-
.then(r => r.text())
6+
const user = { uid: uid };
7+
const fromOSM = fetch(`${apiOSM}/user/${uid}.json`, {
8+
method: 'GET',
9+
headers: { 'Content-Type': 'application/json' }
10+
})
11+
.then(r => r.json())
912
.then(r => {
10-
const parser = new DOMParser();
11-
const xml = parser.parseFromString(r, 'text/xml');
12-
xml.getElementsByTagName('osm');
13-
const userXml =
14-
xml.getElementsByTagName('osm')[0] &&
15-
xml.getElementsByTagName('osm')[0].getElementsByTagName('user')[0];
16-
17-
user.count =
18-
userXml.getElementsByTagName('changesets')[0] &&
19-
userXml.getElementsByTagName('changesets')[0].getAttribute('count');
20-
21-
user.uid = userXml.getAttribute('id');
22-
23-
user.accountCreated = userXml.getAttribute('account_created');
24-
25-
user.description =
26-
userXml.getElementsByTagName('description')[0] &&
27-
userXml.getElementsByTagName('description')[0].innerHTML;
28-
29-
user.img =
30-
userXml.getElementsByTagName('img')[0] &&
31-
userXml.getElementsByTagName('img')[0].getAttribute('href');
32-
user.name = userXml.getAttribute('display_name');
33-
34-
return user;
13+
const u = r.user;
14+
user.count = u.changesets.count;
15+
user.accountCreated = u.account_created;
16+
user.description = u.description;
17+
user.img = u.img && u.img.href;
18+
user.name = u.display_name;
19+
return fromJS(user);
3520
})
36-
.catch(e => user)
37-
.then(user => fromJS(user));
21+
.catch(e => user);
3822

3923
const fromOSMCha = fetch(`${API_URL}/user-stats/${uid}/`, {
4024
method: 'GET',

0 commit comments

Comments
 (0)