Completed
Pull Request — master (#19)
by Sergey
03:19
created

Pins   A

Complexity

Total Complexity 10

Size/Duplication

Total Lines 148
Duplicated Lines 22.97 %

Coupling/Cohesion

Components 1
Dependencies 5

Importance

Changes 2
Bugs 1 Features 0
Metric Value
wmc 10
c 2
b 1
f 0
lcom 1
cbo 5
dl 34
loc 148
rs 10

10 Methods

Rating   Name   Duplication   Size   Complexity  
A like() 0 4 1
A unLike() 0 4 1
A likePinMethodCall() 0 9 1
A comment() 8 8 1
A deleteComment() 9 9 1
A create() 0 9 1
A repin() 0 10 1
A delete() 9 9 1
A info() 8 8 1
A getScope() 0 4 1

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

1
<?php
2
3
namespace seregazhuk\PinterestBot\Api\Providers;
4
5
use seregazhuk\PinterestBot\Helpers\UrlHelper;
6
use seregazhuk\PinterestBot\Helpers\SearchHelper;
7
use seregazhuk\PinterestBot\Helpers\Requests\PinHelper;
8
9
class Pins extends SearchProvider
10
{
11
    /**
12
     * Likes pin with current ID
13
     *
14
     * @param integer $pinId
15
     * @return bool
16
     */
17
    public function like($pinId)
18
    {
19
        return $this->likePinMethodCall($pinId, UrlHelper::RESOURCE_LIKE_PIN);
20
    }
21
22
    /**
23
     * Removes your like from pin with current ID
24
     *
25
     * @param integer $pinId
26
     * @return bool
27
     */
28
    public function unLike($pinId)
29
    {
30
        return $this->likePinMethodCall($pinId, UrlHelper::RESOURCE_UNLIKE_PIN);
31
    }
32
33
    /**
34
     * Calls pinterest API to like or unlike Pin by ID
35
     *
36
     * @param $pinId
37
     * @param $url
38
     * @return bool
39
     */
40
    protected function likePinMethodCall($pinId, $url)
41
    {
42
        $this->request->checkLoggedIn();
43
        $data = PinHelper::createPinIdRequest($pinId);
44
        $post = PinHelper::createPinRequestData($data);
45
        $postString = URlHelper::buildRequestString($post);
46
        $response = $this->request->exec($url, $postString);
47
        return $this->response->checkErrorInResponse($response);
48
    }
49
50
    /**
51
     * Writes comment for pin with current id
52
     *
53
     * @param integer $pinId
54
     * @param string  $text Comment
55
     * @return array
56
     */
57 View Code Duplication
    public function comment($pinId, $text)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
58
    {
59
        $this->request->checkLoggedIn();
60
        $post = PinHelper::createCommentRequest($pinId, $text);
61
        $postString = UrlHelper::buildRequestString($post);
62
        $response = $this->request->exec(UrlHelper::RESOURCE_COMMENT_PIN, $postString);
63
        return $this->response->getData($response);
64
    }
65
66
    /**
67
     * Writes comment for pin with current id
68
     *
69
     * @param integer $pinId
70
     * @param integer $commentId
71
     * @return bool
72
     */
73 View Code Duplication
    public function deleteComment($pinId, $commentId)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
74
    {
75
        $this->request->checkLoggedIn();
76
        $post = PinHelper::createCommentDeleteRequest($pinId, $commentId);
77
        $postString = UrlHelper::buildRequestString($post);
78
        $response = $this->request->exec(UrlHelper::RESOURCE_COMMENT_DELETE_PIN, $postString);
79
80
        return $this->response->checkErrorInResponse($response);
81
    }
82
83
    /**
84
     * Create pin. Returns created pin ID
85
     *
86
     * @param string $imageUrl
87
     * @param int    $boardId
88
     * @param string $description
89
     * @return bool|int
90
     */
91
    public function create($imageUrl, $boardId, $description = "")
92
    {
93
        $this->request->checkLoggedIn();
94
        $post = PinHelper::createPinCreationRequest($imageUrl, $boardId, $description);
95
        $postString = UrlHelper::buildRequestString($post);
96
        $res = $this->request->exec(UrlHelper::RESOURCE_CREATE_PIN, $postString);
97
98
        return $this->response->getData($res, 'id');
99
    }
100
101
    /**
102
     * Repin
103
     *
104
     * @param int    $repinId
105
     * @param int    $boardId
106
     * @param string $description
107
     * @return bool|int
108
     */
109
    public function repin($repinId, $boardId, $description = "")
110
    {
111
        $this->request->checkLoggedIn();
112
113
        $post = PinHelper::createRepinRequest($repinId, $boardId, $description);
114
        $postString = UrlHelper::buildRequestString($post);
115
        $res = $this->request->exec(UrlHelper::RESOURCE_REPIN, $postString);
116
117
        return $this->response->getData($res, 'id');
118
    }
119
120
    /**
121
     * Delete pin
122
     *
123
     * @param int $pinId
124
     * @return bool
125
     */
126 View Code Duplication
    public function delete($pinId)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
127
    {
128
        $this->request->checkLoggedIn();
129
130
        $post = PinHelper::createSimplePinRequest($pinId);
131
        $postString = UrlHelper::buildRequestString($post);
132
        $response = $this->request->exec(UrlHelper::RESOURCE_DELETE_PIN, $postString);
133
        return $this->response->checkResponse($response);
134
    }
135
136
    /**
137
     * Get information of pin by PinID
138
     *
139
     * @param $pinId
140
     * @return array|bool
141
     */
142 View Code Duplication
    public function info($pinId)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
143
    {
144
        $get = PinHelper::createInfoRequest($pinId);
145
        $url = UrlHelper::RESOURCE_PIN_INFO.'?'.UrlHelper::buildRequestString($get);
146
        $response = $this->request->exec($url);
147
148
        return $this->response->checkResponse($response);
149
    }
150
151
152
    protected function getScope()
153
    {
154
        return 'pins';
155
    }
156
}
157