@@ 20-46 (lines=27) @@ | ||
17 | /** |
|
18 | * Class UserMapper |
|
19 | */ |
|
20 | class UserMapper |
|
21 | { |
|
22 | /** |
|
23 | * @param array|\StdClass $attributes |
|
24 | * @return User |
|
25 | * @throws InvalidArgumentException |
|
26 | */ |
|
27 | public static function fromGitterObject($attributes) |
|
28 | { |
|
29 | $values = (new AttributeMapper((array) $attributes)) |
|
30 | ->rename('id', 'gitter_id') |
|
31 | ->rename('username', 'login') |
|
32 | ->rename('displayName', 'name') |
|
33 | ->rename('avatarUrlMedium', 'avatar') |
|
34 | ->only(['gitter_id', 'login', 'name', 'avatar', 'url']) |
|
35 | ->toArray(); |
|
36 | ||
37 | $user = User::where('gitter_id', $values['gitter_id'])->first(); |
|
38 | if (!$user) { |
|
39 | $user = User::unguarded(function () use ($values) { |
|
40 | return User::create($values); |
|
41 | }); |
|
42 | } |
|
43 | ||
44 | return $user; |
|
45 | } |
|
46 | } |
|
47 |
@@ 20-48 (lines=29) @@ | ||
17 | /** |
|
18 | * Class UserMapper |
|
19 | */ |
|
20 | class UserMapper |
|
21 | { |
|
22 | /** |
|
23 | * @param array|\StdClass $attributes |
|
24 | * @return User |
|
25 | * @throws InvalidArgumentException |
|
26 | */ |
|
27 | public static function fromSlackObject(\Slack\User $user) |
|
28 | { |
|
29 | $values = (new AttributeMapper((array) $user->data)) |
|
30 | ->rename('id', 'gitter_id') |
|
31 | ->rename('name', 'login') |
|
32 | ->rename('real_name', 'name') |
|
33 | ->value('profile', function($profile) { |
|
34 | return $profile['image_48']; |
|
35 | }, 'avatar') |
|
36 | ->only(['gitter_id', 'login', 'name', 'avatar']) |
|
37 | ->toArray(); |
|
38 | ||
39 | $user = User::where('gitter_id', $values['gitter_id'])->first(); |
|
40 | if (!$user) { |
|
41 | $user = User::unguarded(function () use ($values) { |
|
42 | return User::create($values); |
|
43 | }); |
|
44 | } |
|
45 | ||
46 | return $user; |
|
47 | } |
|
48 | } |
|
49 |