Completed
Push — master ( 50a9e6...dccb70 )
by Steven
02:20
created

ApiMethodsTrait::getMethodSignature()   A

Complexity

Conditions 4
Paths 6

Size

Total Lines 12
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 7
CRAP Score 4

Importance

Changes 0
Metric Value
dl 0
loc 12
ccs 7
cts 7
cp 1
rs 9.2
c 0
b 0
f 0
cc 4
eloc 7
nc 6
nop 1
crap 4
1
<?php namespace Stevenmaguire\Services\Trello\Traits;
2
3
use BadMethodCallException;
4
5
trait ApiMethodsTrait
6
{
7
    /**
8
     * Api client method definition
9
     *
10
     * @var array
11
     */
12
    protected $methods = [
13
        'getCurrentUser' => ['get', 'members/me'],
14
        'getCurrentUserBoards' => ['get', 'members/my/boards'],
15
        'getCurrentUserPinnedBoards' => ['get', 'members/my/boards/pinned'],
16
        'getCurrentUserCards' => ['get', 'members/my/cards'],
17
        'getCurrentUserOrganizations' => ['get', 'members/my/organizations'],
18
        'deleteAction' => ['delete', 'actions/%s'],
19
        'getAction' => ['get', 'actions/%s'],
20
        'updateAction' => ['put', 'actions/%s'],
21
        'getActionField' => ['get', 'actions/%s/%s'],
22
        'getActionBoard' => ['get', 'actions/%s/board'],
23
        'getActionBoardField' => ['get', 'actions/%s/board/%s'],
24
        'getActionCard' => ['get', 'actions/%s/card'],
25
        'getActionCardField' => ['get', 'actions/%s/card/%s'],
26
        'getActionEntities' => ['get', 'actions/%s/entities'],
27
        'getActionList' => ['get', 'actions/%s/list'],
28
        'getActionListField' => ['get', 'actions/%s/list/%s'],
29
        'getActionMember' => ['get', 'actions/%s/member'],
30
        'getActionMemberField' => ['get', 'actions/%s/member/%s'],
31
        'getActionMemberCreator' => ['get', 'actions/%s/memberCreator'],
32
        'getActionMemberCreatorField' => ['get', 'actions/%s/memberCreator/%s'],
33
        'getActionOrganization' => ['get', 'actions/%s/organization'],
34
        'getActionOrganizationField' => ['get', 'actions/%s/organization/%s'],
35
        'updateActionText' => ['put', 'actions/%s/text'],
36
        'getAuthorize' => ['get', 'authorize'],
37
        'getBatch' => ['get', 'batch'],
38
        'addBoard' => ['post', 'boards'],
39
        'getBoard' => ['get', 'boards/%s'],
40
        'updateBoard' => ['put', 'boards/%s'],
41
        'getBoardField' => ['get', 'boards/%s/%s'],
42
        'getBoardActions' => ['get', 'boards/%s/actions'],
43
        'getBoardBoardStars' => ['get', 'boards/%s/boardStars'],
44
        'addBoardCalendarKeyGenerate' => ['post', 'boards/%s/calendarKey/generate'],
45
        'getBoardCards' => ['get', 'boards/%s/cards'],
46
        'getBoardCard' => ['get', 'boards/%s/cards/%s'],
47
        'getBoardCardsWithFilter' => ['get', 'boards/%s/cards/%s'],
48
        'getBoardChecklists' => ['get', 'boards/%s/checklists'],
49
        'addBoardChecklist' => ['post', 'boards/%s/checklists'],
50
        'updateBoardClosed' => ['put', 'boards/%s/closed'],
51
        'getBoardDeltas' => ['get', 'boards/%s/deltas'],
52
        'updateBoardDesc' => ['put', 'boards/%s/desc'],
53
        'addBoardEmailKeyGenerate' => ['post', 'boards/%s/emailKey/generate'],
54
        'updateBoardIdOrganization' => ['put', 'boards/%s/idOrganization'],
55
        'updateBoardLabelNameBlue' => ['put', 'boards/%s/labelNames/blue'],
56
        'updateBoardLabelNameGreen' => ['put', 'boards/%s/labelNames/green'],
57
        'updateBoardLabelNameOrange' => ['put', 'boards/%s/labelNames/orange'],
58
        'updateBoardLabelNamePurple' => ['put', 'boards/%s/labelNames/purple'],
59
        'updateBoardLabelNameRed' => ['put', 'boards/%s/labelNames/red'],
60
        'updateBoardLabelNameYellow' => ['put', 'boards/%s/labelNames/yellow'],
61
        'getBoardLabels' => ['get', 'boards/%s/labels'],
62
        'addBoardLabel' => ['post', 'boards/%s/labels'],
63
        'getBoardLabel' => ['get', 'boards/%s/labels/%s'],
64
        'getBoardLists' => ['get', 'boards/%s/lists'],
65
        'addBoardList' => ['post', 'boards/%s/lists'],
66
        'getBoardList' => ['get', 'boards/%s/lists/%s'],
67
        'addBoardMarkAsViewed' => ['post', 'boards/%s/markAsViewed'],
68
        'getBoardMembers' => ['get', 'boards/%s/members'],
69
        'updateBoardMembers' => ['put', 'boards/%s/members'],
70
        'deleteBoardMember' => ['delete', 'boards/%s/members/%s'],
71
        'getBoardMember' => ['get', 'boards/%s/members/%s'],
72
        'updateBoardMember' => ['put', 'boards/%s/members/%s'],
73
        'getBoardMemberCards' => ['get', 'boards/%s/members/%s/cards'],
74
        'getBoardMemberships' => ['get', 'boards/%s/memberships'],
75
        'getBoardMembership' => ['get', 'boards/%s/memberships/%s'],
76
        'updateBoardMembership' => ['put', 'boards/%s/memberships/%s'],
77
        'getBoardMembersInviteds' => ['get', 'boards/%s/membersInvited'],
78
        'getBoardMembersInvited' => ['get', 'boards/%s/membersInvited/%s'],
79
        'getBoardMyPref' => ['get', 'boards/%s/myPrefs'],
80
        'updateBoardMyPrefEmailPosition' => ['put', 'boards/%s/myPrefs/emailPosition'],
81
        'updateBoardMyPrefIdEmailList' => ['put', 'boards/%s/myPrefs/idEmailList'],
82
        'updateBoardMyPrefShowListGuide' => ['put', 'boards/%s/myPrefs/showListGuide'],
83
        'updateBoardMyPrefShowSidebar' => ['put', 'boards/%s/myPrefs/showSidebar'],
84
        'updateBoardMyPrefShowSidebarActivity' => ['put', 'boards/%s/myPrefs/showSidebarActivity'],
85
        'updateBoardMyPrefShowSidebarBoardAction' => ['put', 'boards/%s/myPrefs/showSidebarBoardActions'],
86
        'updateBoardMyPrefShowSidebarMember' => ['put', 'boards/%s/myPrefs/showSidebarMembers'],
87
        'updateBoardName' => ['put', 'boards/%s/name'],
88
        'getBoardOrganization' => ['get', 'boards/%s/organization'],
89
        'getBoardOrganizationField' => ['get', 'boards/%s/organization/%s'],
90
        'addBoardPowerUp' => ['post', 'boards/%s/powerUps'],
91
        'deleteBoardPowerUp' => ['delete', 'boards/%s/powerUps/%s'],
92
        'updateBoardPrefBackground' => ['put', 'boards/%s/prefs/background'],
93
        'updateBoardPrefCalendarFeedEnabled' => ['put', 'boards/%s/prefs/calendarFeedEnabled'],
94
        'updateBoardPrefCardAging' => ['put', 'boards/%s/prefs/cardAging'],
95
        'updateBoardPrefCardCovers' => ['put', 'boards/%s/prefs/cardCovers'],
96
        'updateBoardPrefComment' => ['put', 'boards/%s/prefs/comments'],
97
        'updateBoardPrefInvitation' => ['put', 'boards/%s/prefs/invitations'],
98
        'updateBoardPrefPermissionLevel' => ['put', 'boards/%s/prefs/permissionLevel'],
99
        'updateBoardPrefSelfJoin' => ['put', 'boards/%s/prefs/selfJoin'],
100
        'updateBoardPrefVoting' => ['put', 'boards/%s/prefs/voting'],
101
        'updateBoardSubscribed' => ['put', 'boards/%s/subscribed'],
102
        'addCard' => ['post', 'cards'],
103
        'deleteCard' => ['delete', 'cards/%s'],
104
        'getCard' => ['get', 'cards/%s'],
105
        'updateCard' => ['put', 'cards/%s'],
106
        'getCardField' => ['get', 'cards/%s/%s'],
107
        'getCardAction' => ['get', 'cards/%s/actions'],
108
        'deleteCardActionComment' => ['delete', 'cards/%s/actions/%s/comments'],
109
        'updateCardActionComments' => ['put', 'cards/%s/actions/%s/comments'],
110
        'addCardActionComment' => ['post', 'cards/%s/actions/comments'],
111
        'getCardAttachments' => ['get', 'cards/%s/attachments'],
112
        'addCardAttachment' => ['post', 'cards/%s/attachments'],
113
        'deleteCardAttachment' => ['delete', 'cards/%s/attachments/%s'],
114
        'getCardAttachment' => ['get', 'cards/%s/attachments/%s'],
115
        'getCardBoard' => ['get', 'cards/%s/board'],
116
        'getCardBoardField' => ['get', 'cards/%s/board/%s'],
117
        'getCardCheckItemState' => ['get', 'cards/%s/checkItemStates'],
118
        'addCardChecklistCheckItem' => ['post', 'cards/%s/checklist/%s/checkItem'],
119
        'deleteCardChecklistCheckItem' => ['delete', 'cards/%s/checklist/%s/checkItem/%s'],
120
        'updateCardChecklistCheckItem' => ['put', 'cards/%s/checklist/%s/checkItem/%s'],
121
        'addCardChecklistCheckItemConvertToCard' => ['post', 'cards/%s/checklist/%s/checkItem/%s/convertToCard'],
122
        'updateCardChecklistCheckItemName' => ['put', 'cards/%s/checklist/%s/checkItem/%s/name'],
123
        'updateCardChecklistCheckItemPos' => ['put', 'cards/%s/checklist/%s/checkItem/%s/pos'],
124
        'updateCardChecklistCheckItemState' => ['put', 'cards/%s/checklist/%s/checkItem/%s/state'],
125
        'getCardChecklists' => ['get', 'cards/%s/checklists'],
126
        'addCardChecklist' => ['post', 'cards/%s/checklists'],
127
        'deleteCardChecklist' => ['delete', 'cards/%s/checklists/%s'],
128
        'updateCardClosed' => ['put', 'cards/%s/closed'],
129
        'updateCardDesc' => ['put', 'cards/%s/desc'],
130
        'updateCardDue' => ['put', 'cards/%s/due'],
131
        'updateCardIdAttachmentCover' => ['put', 'cards/%s/idAttachmentCover'],
132
        'updateCardIdBoard' => ['put', 'cards/%s/idBoard'],
133
        'addCardIdLabel' => ['post', 'cards/%s/idLabels'],
134
        'deleteCardIdLabel' => ['delete', 'cards/%s/idLabels/%s'],
135
        'updateCardIdList' => ['put', 'cards/%s/idList'],
136
        'addCardIdMember' => ['post', 'cards/%s/idMembers'],
137
        'updateCardIdMembers' => ['put', 'cards/%s/idMembers'],
138
        'deleteCardIdMember' => ['delete', 'cards/%s/idMembers/%s'],
139
        'addCardLabel' => ['post', 'cards/%s/labels'],
140
        'updateCardLabel' => ['put', 'cards/%s/labels'],
141
        'deleteCardLabel' => ['delete', 'cards/%s/labels/%s'],
142
        'getCardList' => ['get', 'cards/%s/list'],
143
        'getCardListField' => ['get', 'cards/%s/list/%s'],
144
        'addCardMarkAssociatedNotificationsRead' => ['post', 'cards/%s/markAssociatedNotificationsRead'],
145
        'getCardMembers' => ['get', 'cards/%s/members'],
146
        'getCardMembersVoted' => ['get', 'cards/%s/membersVoted'],
147
        'addCardMembersVoted' => ['post', 'cards/%s/membersVoted'],
148
        'deleteCardMembersVoted' => ['delete', 'cards/%s/membersVoted/%s'],
149
        'updateCardName' => ['put', 'cards/%s/name'],
150
        'updateCardPos' => ['put', 'cards/%s/pos'],
151
        'getCardStickers' => ['get', 'cards/%s/stickers'],
152
        'addCardSticker' => ['post', 'cards/%s/stickers'],
153
        'deleteCardSticker' => ['delete', 'cards/%s/stickers/%s'],
154
        'getCardSticker' => ['get', 'cards/%s/stickers/%s'],
155
        'updateCardSticker' => ['put', 'cards/%s/stickers/%s'],
156
        'updateCardSubscribed' => ['put', 'cards/%s/subscribed'],
157
        'addChecklist' => ['post', 'checklists'],
158
        'deleteChecklist' => ['delete', 'checklists/%s'],
159
        'getChecklist' => ['get', 'checklists/%s'],
160
        'updateChecklist' => ['put', 'checklists/%s'],
161
        'getChecklistField' => ['get', 'checklists/%s/%s'],
162
        'getChecklistBoard' => ['get', 'checklists/%s/board'],
163
        'getChecklistBoardField' => ['get', 'checklists/%s/board/%s'],
164
        'getChecklistCards' => ['get', 'checklists/%s/cards'],
165
        'getChecklistCard' => ['get', 'checklists/%s/cards/%s'],
166
        'getChecklistCheckItems' => ['get', 'checklists/%s/checkItems'],
167
        'addChecklistCheckItem' => ['post', 'checklists/%s/checkItems'],
168
        'deleteChecklistCheckItem' => ['delete', 'checklists/%s/checkItems/%s'],
169
        'getChecklistCheckItem' => ['get', 'checklists/%s/checkItems/%s'],
170
        'updateChecklistIdCard' => ['put', 'checklists/%s/idCard'],
171
        'updateChecklistName' => ['put', 'checklists/%s/name'],
172
        'updateChecklistPos' => ['put', 'checklists/%s/pos'],
173
        'addLabel' => ['post', 'labels'],
174
        'deleteLabel' => ['delete', 'labels/%s'],
175
        'getLabel' => ['get', 'labels/%s'],
176
        'updateLabel' => ['put', 'labels/%s'],
177
        'getLabelBoard' => ['get', 'labels/%s/board'],
178
        'getLabelBoardField' => ['get', 'labels/%s/board/%s'],
179
        'updateLabelColor' => ['put', 'labels/%s/color'],
180
        'updateLabelName' => ['put', 'labels/%s/name'],
181
        'addList' => ['post', 'lists'],
182
        'getList' => ['get', 'lists/%s'],
183
        'updateList' => ['put', 'lists/%s'],
184
        'getListField' => ['get', 'lists/%s/%s'],
185
        'getListActions' => ['get', 'lists/%s/actions'],
186
        'addListArchiveAllCards' => ['post', 'lists/%s/archiveAllCards'],
187
        'getListBoard' => ['get', 'lists/%s/board'],
188
        'getListBoardField' => ['get', 'lists/%s/board/%s'],
189
        'getListCards' => ['get', 'lists/%s/cards'],
190
        'addListCard' => ['post', 'lists/%s/cards'],
191
        'getListCard' => ['get', 'lists/%s/cards/%s'],
192
        'updateListClosed' => ['put', 'lists/%s/closed'],
193
        'updateListIdBoard' => ['put', 'lists/%s/idBoard'],
194
        'addListMoveAllCards' => ['post', 'lists/%s/moveAllCards'],
195
        'updateListName' => ['put', 'lists/%s/name'],
196
        'updateListPos' => ['put', 'lists/%s/pos'],
197
        'updateListSubscribed' => ['put', 'lists/%s/subscribed'],
198
        'getMember' => ['get', 'members/%s'],
199
        'updateMember' => ['put', 'members/%s'],
200
        'getMemberField' => ['get', 'members/%s/%s'],
201
        'getMemberActions' => ['get', 'members/%s/actions'],
202
        'addMemberAvatar' => ['post', 'members/%s/avatar'],
203
        'updateMemberAvatarSource' => ['put', 'members/%s/avatarSource'],
204
        'updateMemberBio' => ['put', 'members/%s/bio'],
205
        'getMemberBoardBackgrounds' => ['get', 'members/%s/boardBackgrounds'],
206
        'addMemberBoardBackground' => ['post', 'members/%s/boardBackgrounds'],
207
        'deleteMemberBoardBackground' => ['delete', 'members/%s/boardBackgrounds/%s'],
208
        'getMemberBoardBackground' => ['get', 'members/%s/boardBackgrounds/%s'],
209
        'updateMemberBoardBackground' => ['put', 'members/%s/boardBackgrounds/%s'],
210
        'getMemberBoards' => ['get', 'members/%s/boards'],
211
        'getMemberBoard' => ['get', 'members/%s/boards/%s'],
212
        'getMemberBoardsInvited' => ['get', 'members/%s/boardsInvited'],
213
        'getMemberBoardsInvitedField' => ['get', 'members/%s/boardsInvited/%s'],
214
        'getMemberBoardStars' => ['get', 'members/%s/boardStars'],
215
        'addMemberBoardStar' => ['post', 'members/%s/boardStars'],
216
        'deleteMemberBoardStar' => ['delete', 'members/%s/boardStars/%s'],
217
        'getMemberBoardStar' => ['get', 'members/%s/boardStars/%s'],
218
        'updateMemberBoardStar' => ['put', 'members/%s/boardStars/%s'],
219
        'updateMemberBoardStarIdBoard' => ['put', 'members/%s/boardStars/%s/idBoard'],
220
        'updateMemberBoardStarPos' => ['put', 'members/%s/boardStars/%s/pos'],
221
        'getMemberCards' => ['get', 'members/%s/cards'],
222
        'getMemberCard' => ['get', 'members/%s/cards/%s'],
223
        'getMemberCustomBoardBackgrounds' => ['get', 'members/%s/customBoardBackgrounds'],
224
        'addMemberCustomBoardBackground' => ['post', 'members/%s/customBoardBackgrounds'],
225
        'deleteMemberCustomBoardBackground' => ['delete', 'members/%s/customBoardBackgrounds/%s'],
226
        'getMemberCustomBoardBackground' => ['get', 'members/%s/customBoardBackgrounds/%s'],
227
        'updateMemberCustomBoardBackground' => ['put', 'members/%s/customBoardBackgrounds/%s'],
228
        'getMemberCustomEmojis' => ['get', 'members/%s/customEmoji'],
229
        'addMemberCustomEmoji' => ['post', 'members/%s/customEmoji'],
230
        'getMemberCustomEmoji' => ['get', 'members/%s/customEmoji/%s'],
231
        'getMemberCustomStickers' => ['get', 'members/%s/customStickers'],
232
        'addMemberCustomSticker' => ['post', 'members/%s/customStickers'],
233
        'deleteMemberCustomSticker' => ['delete', 'members/%s/customStickers/%s'],
234
        'getMemberCustomSticker' => ['get', 'members/%s/customStickers/%s'],
235
        'getMemberDeltas' => ['get', 'members/%s/deltas'],
236
        'updateMemberFullName' => ['put', 'members/%s/fullName'],
237
        'updateMemberInitials' => ['put', 'members/%s/initials'],
238
        'getMemberNotifications' => ['get', 'members/%s/notifications'],
239
        'getMemberNotification' => ['get', 'members/%s/notifications/%s'],
240
        'addMemberOneTimeMessagesDismissed' => ['post', 'members/%s/oneTimeMessagesDismissed'],
241
        'getMemberOrganizations' => ['get', 'members/%s/organizations'],
242
        'getMemberOrganization' => ['get', 'members/%s/organizations/%s'],
243
        'getMemberOrganizationsInvited' => ['get', 'members/%s/organizationsInvited'],
244
        'getMemberOrganizationsInvitedField' => ['get', 'members/%s/organizationsInvited/%s'],
245
        'updateMemberPrefColorBlind' => ['put', 'members/%s/prefs/colorBlind'],
246
        'updateMemberPrefMinutesBetweenSummaries' => ['put', 'members/%s/prefs/minutesBetweenSummaries'],
247
        'getMemberSavedSearches' => ['get', 'members/%s/savedSearches'],
248
        'addMemberSavedSearch' => ['post', 'members/%s/savedSearches'],
249
        'deleteMemberSavedSearch' => ['delete', 'members/%s/savedSearches/%s'],
250
        'getMemberSavedSearch' => ['get', 'members/%s/savedSearches/%s'],
251
        'updateMemberSavedSearch' => ['put', 'members/%s/savedSearches/%s'],
252
        'updateMemberSavedSearchName' => ['put', 'members/%s/savedSearches/%s/name'],
253
        'updateMemberSavedSearchPos' => ['put', 'members/%s/savedSearches/%s/pos'],
254
        'updateMemberSavedSearchQuery' => ['put', 'members/%s/savedSearches/%s/query'],
255
        'getMemberTokens' => ['get', 'members/%s/tokens'],
256
        'updateMemberUsername' => ['put', 'members/%s/username'],
257
        'getNotification' => ['get', 'notifications/%s'],
258
        'updateNotification' => ['put', 'notifications/%s'],
259
        'getNotificationField' => ['get', 'notifications/%s/%s'],
260
        'getNotificationBoard' => ['get', 'notifications/%s/board'],
261
        'getNotificationBoardField' => ['get', 'notifications/%s/board/%s'],
262
        'getNotificationCard' => ['get', 'notifications/%s/card'],
263
        'getNotificationCardField' => ['get', 'notifications/%s/card/%s'],
264
        'getNotificationEntities' => ['get', 'notifications/%s/entities'],
265
        'getNotificationList' => ['get', 'notifications/%s/list'],
266
        'getNotificationListField' => ['get', 'notifications/%s/list/%s'],
267
        'getNotificationMember' => ['get', 'notifications/%s/member'],
268
        'getNotificationMemberField' => ['get', 'notifications/%s/member/%s'],
269
        'getNotificationMemberCreator' => ['get', 'notifications/%s/memberCreator'],
270
        'getNotificationMemberCreatorField' => ['get', 'notifications/%s/memberCreator/%s'],
271
        'getNotificationOrganization' => ['get', 'notifications/%s/organization'],
272
        'getNotificationOrganizationField' => ['get', 'notifications/%s/organization/%s'],
273
        'updateNotificationUnread' => ['put', 'notifications/%s/unread'],
274
        'addNotificationAllRead' => ['post', 'notifications/all/read'],
275
        'addOrganization' => ['post', 'organizations'],
276
        'deleteOrganization' => ['delete', 'organizations/%s'],
277
        'getOrganization' => ['get', 'organizations/%s'],
278
        'updateOrganization' => ['put', 'organizations/%s'],
279
        'getOrganizationField' => ['get', 'organizations/%s/%s'],
280
        'getOrganizationActions' => ['get', 'organizations/%s/actions'],
281
        'getOrganizationBoards' => ['get', 'organizations/%s/boards'],
282
        'getOrganizationBoardsFilter' => ['get', 'organizations/%s/boards/%s'],
283
        'getOrganizationDeltas' => ['get', 'organizations/%s/deltas'],
284
        'updateOrganizationDesc' => ['put', 'organizations/%s/desc'],
285
        'updateOrganizationDisplayName' => ['put', 'organizations/%s/displayName'],
286
        'deleteOrganizationLogo' => ['delete', 'organizations/%s/logo'],
287
        'addOrganizationLogo' => ['post', 'organizations/%s/logo'],
288
        'getOrganizationMembers' => ['get', 'organizations/%s/members'],
289
        'updateOrganizationMembers' => ['put', 'organizations/%s/members'],
290
        'deleteOrganizationMember' => ['delete', 'organizations/%s/members/%s'],
291
        'getOrganizationMembersFilter' => ['get', 'organizations/%s/members/%s'],
292
        'updateOrganizationMember' => ['put', 'organizations/%s/members/%s'],
293
        'deleteOrganizationMemberAll' => ['delete', 'organizations/%s/members/%s/all'],
294
        'getOrganizationMemberCards' => ['get', 'organizations/%s/members/%s/cards'],
295
        'updateOrganizationMemberDeactivated' => ['put', 'organizations/%s/members/%s/deactivated'],
296
        'getOrganizationMemberships' => ['get', 'organizations/%s/memberships'],
297
        'getOrganizationMembership' => ['get', 'organizations/%s/memberships/%s'],
298
        'updateOrganizationMembership' => ['put', 'organizations/%s/memberships/%s'],
299
        'getOrganizationMembersInvited' => ['get', 'organizations/%s/membersInvited'],
300
        'getOrganizationMembersInvitedField' => ['get', 'organizations/%s/membersInvited/%s'],
301
        'updateOrganizationName' => ['put', 'organizations/%s/name'],
302
        'deleteOrganizationPrefAssociatedDomain' => ['delete', 'organizations/%s/prefs/associatedDomain'],
303
        'updateOrganizationPrefAssociatedDomain' => ['put', 'organizations/%s/prefs/associatedDomain'],
304
        'updateOrganizationPrefBoardVisibilityRestrictOrg' => [
305
            'put', 'organizations/%s/prefs/boardVisibilityRestrict/org'
306
        ],
307
        'updateOrganizationPrefBoardVisibilityRestrictPrivate' => [
308
            'put', 'organizations/%s/prefs/boardVisibilityRestrict/private'
309
        ],
310
        'updateOrganizationPrefBoardVisibilityRestrictPublic' => [
311
            'put', 'organizations/%s/prefs/boardVisibilityRestrict/public'
312
        ],
313
        'updateOrganizationPrefExternalMembersDisabled' => ['put', 'organizations/%s/prefs/externalMembersDisabled'],
314
        'updateOrganizationPrefGoogleAppsVersion' => ['put', 'organizations/%s/prefs/googleAppsVersion'],
315
        'deleteOrganizationPrefOrgInviteRestrict' => ['delete', 'organizations/%s/prefs/orgInviteRestrict'],
316
        'updateOrganizationPrefOrgInviteRestrict' => ['put', 'organizations/%s/prefs/orgInviteRestrict'],
317
        'updateOrganizationPrefPermissionLevel' => ['put', 'organizations/%s/prefs/permissionLevel'],
318
        'updateOrganizationWebsite' => ['put', 'organizations/%s/website'],
319
        'getSearch' => ['get', 'search'],
320
        'getSearchMembers' => ['get', 'search/members'],
321
        'addSession' => ['post', 'sessions'],
322
        'updateSession' => ['put', 'sessions/%s'],
323
        'updateSessionStatus' => ['put', 'sessions/%s/status'],
324
        'getSessionSocket' => ['get', 'sessions/socket'],
325
        'deleteToken' => ['delete', 'tokens/%s'],
326
        'getToken' => ['get', 'tokens/%s'],
327
        'getTokenField' => ['get', 'tokens/%s/%s'],
328
        'getTokenMember' => ['get', 'tokens/%s/member'],
329
        'getTokenMemberField' => ['get', 'tokens/%s/member/%s'],
330
        'getTokenWebhooks' => ['get', 'tokens/%s/webhooks'],
331
        'addTokenWebhook' => ['post', 'tokens/%s/webhooks'],
332
        'updateTokenWebhooks' => ['put', 'tokens/%s/webhooks'],
333
        'deleteTokenWebhook' => ['delete', 'tokens/%s/webhooks/%s'],
334
        'getTokenWebhook' => ['get', 'tokens/%s/webhooks/%s'],
335
        'getType' => ['get', 'types/%s'],
336
        'addWebhook' => ['post', 'webhooks'],
337
        'deleteWebhook' => ['delete', 'webhooks/%s'],
338
        'getWebhook' => ['get', 'webhooks/%s'],
339
        'updateWebhook' => ['put', 'webhooks/%s'],
340
        'getWebhookField' => ['get', 'webhooks/%s/%s'],
341
        'updateWebhookActive' => ['put', 'webhooks/%s/active'],
342
        'updateWebhookCallbackURL' => ['put', 'webhooks/%s/callbackURL'],
343
        'updateWebhookDescription' => ['put', 'webhooks/%s/description'],
344
        'updateWebhookIdModel' => ['put', 'webhooks/%s/idModel'],
345
    ];
346
347
    /**
348
     * Retrieves currently configured http broker.
349
     *
350
     * @return Stevenmaguire\Services\Trello\Http
351
     * @codeCoverageIgnore
352
     */
353
    abstract public function getHttp();
354
355
    /**
356
     * Attempts to handle api method call.
357
     *
358
     * @param  string  $method
359
     * @param  array   $parameters
360
     *
361
     * @return object
362
     * @throws BadMethodCallException
363
     */
364 648
    public function __call($method, $parameters)
365
    {
366 648
        if ($signature = $this->getMethodSignature($method)) {
367 646
            preg_match_all('/\%/', $signature[1], $replacements);
368
369 646
            $replacementCount = isset($replacements[0]) ? count($replacements[0]) : 0;
370
371 646
            $replacementParams = array_splice($parameters, 0, $replacementCount);
372
373 646
            array_unshift($replacementParams, $signature[1]);
374
375 646
            $path = call_user_func_array('sprintf', $replacementParams);
376
377 646
            array_unshift($parameters, $path);
378
379 646
            return call_user_func_array([$this->getHttp(), $signature[0]], $parameters);
380
        }
381
382 2
        throw new BadMethodCallException("Method ".$method." not found on ".get_class().".", 500);
383
    }
384
385
    /**
386
     * Attempts to retrieve method signature from method definition.
387
     *
388
     * @param  string  $method
389
     *
390
     * @return array|null
391
     */
392 648
    private function getMethodSignature($method)
393
    {
394 648
        $validMethod = isset($this->methods[$method])
395 648
            && is_array($this->methods[$method])
396 648
            && count($this->methods[$method]) >= 2;
397
398 648
        if ($validMethod) {
399 646
            return $this->methods[$method];
400
        }
401
402 2
        return null;
403
    }
404
}
405