Completed
Pull Request — master (#152)
by Sergey
02:51
created

UrlBuilder::buildRequestString()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 4
rs 10
cc 1
eloc 2
nc 1
nop 1
1
<?php
2
3
namespace seregazhuk\PinterestBot\Helpers;
4
5
/**
6
 * Class UrlHelper.
7
 */
8
class UrlBuilder
9
{
10
    /**
11
     * Login
12
     */
13
    const RESOURCE_LOGIN = 'resource/UserSessionResource/create/';
14
15
    /**
16
     * Boards
17
     */
18
    const RESOURCE_GET_BOARDS = 'resource/BoardsResource/get/';
19
    const RESOURCE_GET_BOARD_FEED = 'resource/BoardFeedResource/get/';
20
    const RESOURCE_PROFILE_BOARDS = 'resource/ProfileBoardsResource/get/';
21
    const RESOURCE_FOLLOW_BOARD = 'resource/BoardFollowResource/create/';
22
    const RESOURCE_UNFOLLOW_BOARD = 'resource/BoardFollowResource/delete/';
23
    const RESOURCE_DELETE_BOARD = 'resource/BoardResource/delete/';
24
    const RESOURCE_CREATE_BOARD = 'resource/BoardResource/create/';
25
    const RESOURCE_UPDATE_BOARD = 'resource/BoardResource/update/';
26
    const RESOURCE_BOARD_FOLLOWERS = 'resource/BoardFollowersResource/get/';
27
28
    /**
29
     * Pins
30
     */
31
    const RESOURCE_CREATE_PIN = 'resource/PinResource/create/';
32
    const RESOURCE_UPDATE_PIN = 'resource/PinResource/update/';
33
    const RESOURCE_REPIN = 'resource/RepinResource/create/';
34
    const RESOURCE_USER_FOLLOWERS = 'resource/UserFollowersResource/get/';
35
    const RESOURCE_DELETE_PIN = 'resource/PinResource/delete/';
36
    const RESOURCE_LIKE_PIN = 'resource/PinLikeResource/create/';
37
    const RESOURCE_UNLIKE_PIN = 'resource/PinLikeResource/delete/';
38
    const RESOURCE_COMMENT_PIN = 'resource/PinCommentResource/create/';
39
    const RESOURCE_COMMENT_DELETE_PIN = 'resource/PinCommentResource/delete/';
40
    const RESOURCE_PIN_INFO = 'resource/PinResource/get/';
41
    const RESOURCE_DOMAIN_FEED = 'resource/DomainFeedResource/get';
42
    const RESOURCE_ACTIVITY = 'resource/AggregatedActivityFeedResource/get';
43
    const RESOURCE_USER_FEED = 'resource/UserHomefeedResource/get/';
44
45
    /**
46
     * Pinners
47
     */
48
    const RESOURCE_FOLLOW_USER = 'resource/UserFollowResource/create/';
49
    const RESOURCE_UNFOLLOW_USER = 'resource/UserFollowResource/delete/';
50
    const RESOURCE_USER_INFO = 'resource/UserResource/get/';
51
    const RESOURCE_USER_FOLLOWING = 'resource/UserFollowingResource/get/';
52
    const RESOURCE_USER_PINS = 'resource/UserPinsResource/get/';
53
54
    /**
55
     * Search
56
     */
57
    const RESOURCE_SEARCH = 'resource/BaseSearchResource/get/';
58
    const RESOURCE_SEARCH_WITH_PAGINATION = 'resource/SearchResource/get/';
59
60
    /**
61
     * Interests.
62
     */
63
    const RESOURCE_FOLLOW_INTEREST = 'resource/InterestFollowResource/create/';
64
    const RESOURCE_UNFOLLOW_INTEREST = 'resource/InterestFollowResource/delete/';
65
66
    /**
67
     * Conversations.
68
     */
69
    const RESOURCE_SEND_MESSAGE = 'resource/ConversationsResource/create/';
70
    const RESOURCE_GET_LAST_CONVERSATIONS = 'resource/ConversationsResource/get/';
71
72
    /**
73
     * UserSettings
74
     */
75
    const RESOURCE_UPDATE_USER_SETTINGS = 'resource/UserSettingsResource/update/';
76
77
    /**
78
     * News
79
     */
80
    const RESOURCE_GET_LATEST_NEWS = 'resource/NetworkStoriesResource/get/';
81
82
    /**
83
     * Registration
84
     */
85
    const RESOURCE_CREATE_REGISTER = 'resource/UserRegisterResource/create/';
86
    const RESOURCE_CHECK_EMAIL = 'resource/EmailExistsResource/get';
87
    const RESOURCE_SET_ORIENTATION = 'resource/OrientationContextResource/create/';
88
    const RESOURCE_UPDATE_REGISTRATION_TRACK = 'resource/UserRegisterTrackActionResource/update/';
89
    const RESOURCE_REGISTRATION_COMPLETE = 'resource/UserExperienceCompletedResource/update/';
90
    const RESOURCE_CONVERT_TO_BUSINESS = 'resource/PartnerResource/update/';
91
92
    /**
93
     * Uploads
94
     */
95
    const IMAGE_UPLOAD = 'upload-image/';
96
97
    /**
98
     * Categories
99
     */
100
    const RESOURCE_GET_CATEGORIES = 'resource/CategoriesResource/get/';
101
    const RESOURCE_GET_CATEGORY = 'resource/CategoryResource/get/';
102
103
    const URL_BASE = 'https://uk.pinterest.com/';
104
    const HOST = 'uk.pinterest.com';
105
106
    /**
107
     * @param array $request
108
     *
109
     * @return mixed
110
     */
111
    public static function buildRequestString($request)
112
    {
113
        return self::fixEncoding(http_build_query($request));
114
    }
115
116
    /**
117
     * Appends resource url to base pinterest url.
118
     *
119
     * @param string $resourceUrl
120
     *
121
     * @return string
122
     */
123
    public static function buildApiUrl($resourceUrl)
124
    {
125
        return self::URL_BASE . $resourceUrl;
126
    }
127
128
    /**
129
     * Fix URL-encoding for some characters.
130
     *
131
     * @param string $str
132
     *
133
     * @return string
134
     */
135
    public static function fixEncoding($str)
136
    {
137
        return str_replace(
138
            ['%28', '%29', '%7E'], ['(', ')', '~'], $str
139
        );
140
    }
141
142
    /**
143
     * Return Pinterest API url for search requests.
144
     *
145
     * @param array $bookmarks
146
     * 
147
     * @return string
148
     */
149
    public static function getSearchUrl($bookmarks = [])
150
    {
151
        return empty($bookmarks) ?
152
            self::RESOURCE_SEARCH :
153
            self::RESOURCE_SEARCH_WITH_PAGINATION;
154
    }
155
}
156