Completed
Pull Request — master (#7)
by romain
09:32
created

ArticleService::overrideArticle()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 11
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 11
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 5
nc 1
nop 1
1
<?php
2
declare(strict_types=1);
3
4
namespace Yproximite\Api\Service;
5
6
use Yproximite\Api\Message\Article\ArticleOverrideMessage;
7
use Yproximite\Api\Model\Article\Article;
8
use Yproximite\Api\Model\Article\Category;
9
use Yproximite\Api\Message\Article\ArticleListMessage;
10
use Yproximite\Api\Message\Article\ArticlePostMessage;
11
use Yproximite\Api\Message\Article\ArticlePatchMessage;
12
use Yproximite\Api\Message\Article\CategoryListMessage;
13
use Yproximite\Api\Message\Article\CategoryPostMessage;
14
use Yproximite\Api\Message\Article\CategoryPatchMessage;
15
use Yproximite\Api\Message\Article\ArticleUnpublishMessage;
16
use Yproximite\Api\Message\Article\CategoryOverrideMessage;
17
use Yproximite\Api\Message\Article\CategoryArticleListMessage;
18
use Yproximite\Api\Message\Article\CategoryArticlePublishMessage;
19
use Yproximite\Api\Message\Article\CategoryArticleUnpublishMessage;
20
use Yproximite\Api\Util\RequestMethods;
21
use Yproximite\Api\Util\RequestStatus;
22
23
/**
24
 * Class ArticleService
25
 */
26
class ArticleService extends AbstractService implements ServiceInterface
27
{
28
    /**
29
     * @param ArticleListMessage $message
30
     *
31
     * @return Article[]
32
     */
33 View Code Duplication
    public function getArticles(ArticleListMessage $message): array
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...
34
    {
35
        $path = sprintf('sites/%d/articles', $message->getSiteId());
36
37
        $response = $this->getClient()->sendRequest(RequestStatus::GET, $path);
38
39
        /** @var Article[] $models */
40
        $models = $this->getModelFactory()->createMany(Article::class, $response);
41
42
        return $models;
43
    }
44
45
    /**
46
     * @param ArticlePostMessage $message
47
     *
48
     * @return Article
49
     */
50
    public function postArticle(ArticlePostMessage $message): Article
51
    {
52
        $path = sprintf('sites/%d/articles', $message->getSiteId());
53
        $data = ['api_article' => $message->build()];
54
55
        $response = $this->getClient()->sendRequest(RequestStatus::POST, $path, $data);
56
57
        /** @var Article $model */
58
        $model = $this->getModelFactory()->create(Article::class, $response);
59
60
        return $model;
61
    }
62
63
    /**
64
     * @param ArticlePatchMessage $message
65
     *
66
     * @return Article
67
     */
68
    public function patchArticle(ArticlePatchMessage $message): Article
69
    {
70
        $path = sprintf('sites/%d/articles/%d', $message->getSiteId(), $message->getId());
71
        $data = ['api_article' => $message->build()];
72
73
        $response = $this->getClient()->sendRequest(RequestStatus::PATCH, $path, $data);
74
75
        /** @var Article $model */
76
        $model = $this->getModelFactory()->create(Article::class, $response);
77
78
        return $model;
79
    }
80
81
    /**
82
     * @param ArticleUnpublishMessage $message
83
     *
84
     * @return Article[]
85
     */
86
    public function unpublishArticles(ArticleUnpublishMessage $message): array
87
    {
88
        $path = sprintf('sites/%d/articles/unpublish', $message->getSiteId());
89
        $data = ['api_unpublish_articles_global' => $message->build()];
90
91
        $response = $this->getClient()->sendRequest(RequestStatus::POST, $path, $data);
92
93
        /** @var Article[] $models */
94
        $models = $this->getModelFactory()->createMany(Article::class, $response);
95
96
        return $models;
97
    }
98
99
    /**
100
     * @param CategoryListMessage $message
101
     *
102
     * @return Category[]
103
     */
104 View Code Duplication
    public function getCategories(CategoryListMessage $message): array
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...
105
    {
106
        $path = sprintf('sites/%d/categories', $message->getSiteId());
107
108
        $response = $this->getClient()->sendRequest(RequestStatus::GET, $path);
109
110
        /** @var Category[] $models */
111
        $models = $this->getModelFactory()->createMany(Category::class, $response);
112
113
        return $models;
114
    }
115
116
    /**
117
     * @param CategoryPostMessage $message
118
     *
119
     * @return Category
120
     */
121
    public function postCategory(CategoryPostMessage $message): Category
122
    {
123
        $path = sprintf('sites/%d/categories', $message->getSiteId());
124
        $data = ['api_category' => $message->build()];
125
126
        $response = $this->getClient()->sendRequest(RequestStatus::POST, $path, $data);
127
128
        /** @var Category $model */
129
        $model = $this->getModelFactory()->create(Category::class, $response);
130
131
        return $model;
132
    }
133
134
    /**
135
     * @param CategoryPatchMessage $message
136
     *
137
     * @return Category
138
     */
139
    public function patchCategory(CategoryPatchMessage $message): Category
140
    {
141
        $path = sprintf('sites/%d/categories/%d', $message->getSiteId(), $message->getId());
142
        $data = ['api_category' => $message->build()];
143
144
        $response = $this->getClient()->sendRequest(RequestStatus::PATCH, $path, $data);
145
146
        /** @var Category $model */
147
        $model = $this->getModelFactory()->create(Category::class, $response);
148
149
        return $model;
150
    }
151
152
    /**
153
     * @param CategoryOverrideMessage $message
154
     *
155
     * @return Category
156
     */
157
    public function overrideCategory(CategoryOverrideMessage $message): Category
158
    {
159
        $path = sprintf('sites/%d/categories/%d/override', $message->getSiteId(), $message->getId());
160
161
        $response = $this->getClient()->sendRequest(RequestStatus::GET, $path);
162
163
        /** @var Category $model */
164
        $model = $this->getModelFactory()->create(Category::class, $response);
165
166
        return $model;
167
    }
168
169
    /**
170
     * @param CategoryArticleListMessage $message
171
     *
172
     * @return Article[]
173
     */
174
    public function getCategoryArticles(CategoryArticleListMessage $message): array
175
    {
176
        $path = sprintf('sites/%d/categories/%d/articles', $message->getSiteId(), $message->getCategoryId());
177
178
        $response = $this->getClient()->sendRequest(RequestStatus::GET, $path);
179
180
        /** @var Article[] $models */
181
        $models = $this->getModelFactory()->createMany(Article::class, $response);
182
183
        return $models;
184
    }
185
186
    /**
187
     * @param CategoryArticlePublishMessage $message
188
     *
189
     * @return Category
190
     */
191
    public function publishCategoryArticles(CategoryArticlePublishMessage $message): Category
192
    {
193
        $path = sprintf('sites/%d/categories/%d/publish_articles', $message->getSiteId(), $message->getCategoryId());
194
        $data = ['api_publish_articles' => $message->build()];
195
196
        $response = $this->getClient()->sendRequest(RequestStatus::POST, $path, $data);
197
198
        /** @var Category $model */
199
        $model = $this->getModelFactory()->create(Category::class, $response);
200
201
        return $model;
202
    }
203
204
    /**
205
     * @param CategoryArticleUnpublishMessage $message
206
     *
207
     * @return Category
208
     */
209
    public function unpublishCategoryArticles(CategoryArticleUnpublishMessage $message): Category
210
    {
211
        $path = sprintf('sites/%d/categories/%d/unpublish_articles', $message->getSiteId(), $message->getCategoryId());
212
        $data = ['api_unpublish_articles' => $message->build()];
213
214
        $response = $this->getClient()->sendRequest(RequestStatus::POST, $path, $data);
215
216
        /** @var Category $model */
217
        $model = $this->getModelFactory()->create(Category::class, $response);
218
219
        return $model;
220
    }
221
222
    /**
223
     * @param ArticleOverrideMessage $message
224
     *
225
     * @return Article
226
     */
227
    public function overrideArticle(ArticleOverrideMessage $message): Article
228
    {
229
        $path = sprintf('sites/%d/articles/%d/override', $message->getSiteId(), $message->getArticleId());
230
231
        $response = $this->getClient()->sendRequest(RequestStatus::GET, $path);
232
233
        /** @var Article $model */
234
        $model = $this->getModelFactory()->create(Article::class, $response);
235
236
        return $model;
237
    }
238
}
239