Code Duplication    Length = 27-29 lines in 2 locations

app/Interfaces/Gitter/UserMapper.php 1 location

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

app/Interfaces/Slack/UserMapper.php 1 location

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