| @@ 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 | ||