shikimori-api 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.md +20 -0
- data/lib/shikimori/api/client.rb +34 -0
- data/lib/shikimori/api/errors.rb +21 -0
- data/lib/shikimori/api/rest.rb +115 -0
- data/lib/shikimori/api/uri.rb +18 -0
- data/lib/shikimori/api/v1/achievements.rb +32 -0
- data/lib/shikimori/api/v1/animes.rb +252 -0
- data/lib/shikimori/api/v1/appear.rb +40 -0
- data/lib/shikimori/api/v1/bans.rb +31 -0
- data/lib/shikimori/api/v1/calendars.rb +32 -0
- data/lib/shikimori/api/v1/characters.rb +52 -0
- data/lib/shikimori/api/v1/clubs.rb +329 -0
- data/lib/shikimori/api/v1/comments.rb +161 -0
- data/lib/shikimori/api/v1/constants.rb +107 -0
- data/lib/shikimori/api/v1/dialogs.rb +78 -0
- data/lib/shikimori/api/v1/favorites.rb +148 -0
- data/lib/shikimori/api/v1/forums.rb +31 -0
- data/lib/shikimori/api/v1/friends.rb +57 -0
- data/lib/shikimori/api/v1/genres.rb +31 -0
- data/lib/shikimori/api/v1/ignores.rb +62 -0
- data/lib/shikimori/api/v1/mangas.rb +211 -0
- data/lib/shikimori/api/v1/messages.rb +168 -0
- data/lib/shikimori/api/v1/people.rb +53 -0
- data/lib/shikimori/api/v1/publishers.rb +31 -0
- data/lib/shikimori/api/v1/ranobe.rb +206 -0
- data/lib/shikimori/api/v1/reviews.rb +89 -0
- data/lib/shikimori/api/v1/stats.rb +31 -0
- data/lib/shikimori/api/v1/studios.rb +31 -0
- data/lib/shikimori/api/v1/styles.rb +112 -0
- data/lib/shikimori/api/v1/topic_ignores.rb +63 -0
- data/lib/shikimori/api/v1/topics.rb +237 -0
- data/lib/shikimori/api/v1/user_images.rb +36 -0
- data/lib/shikimori/api/v1/user_rates.rb +194 -0
- data/lib/shikimori/api/v1/users.rb +310 -0
- data/lib/shikimori/api/v1/videos.rb +85 -0
- data/lib/shikimori/api/v1.rb +77 -0
- data/lib/shikimori/api/v2/abuse_requests.rb +103 -0
- data/lib/shikimori/api/v2/episode_notifications.rb +54 -0
- data/lib/shikimori/api/v2/topic_ignore.rb +54 -0
- data/lib/shikimori/api/v2/user_ignore.rb +54 -0
- data/lib/shikimori/api/v2/user_rates.rb +171 -0
- data/lib/shikimori/api/v2.rb +27 -0
- data/lib/shikimori/api/version.rb +8 -0
- data/lib/shikimori/api.rb +14 -0
- data/lib/shikimori-api.rb +3 -0
- data/shikimori-api.gemspec +40 -0
- data/sig/shikimori/api/client.rbs +12 -0
- data/sig/shikimori/api/rest.rbs +30 -0
- data/sig/shikimori/api/uri.rbs +10 -0
- data/sig/shikimori/api/v1/achievements.rbs +15 -0
- data/sig/shikimori/api/v1/animes.rbs +23 -0
- data/sig/shikimori/api/v1/appear.rbs +15 -0
- data/sig/shikimori/api/v1/bans.rbs +15 -0
- data/sig/shikimori/api/v1/calendars.rbs +15 -0
- data/sig/shikimori/api/v1/characters.rbs +16 -0
- data/sig/shikimori/api/v1/clubs.rbs +29 -0
- data/sig/shikimori/api/v1/comments.rbs +19 -0
- data/sig/shikimori/api/v1/constants.rbs +19 -0
- data/sig/shikimori/api/v1/dialogs.rbs +17 -0
- data/sig/shikimori/api/v1/favorites.rbs +23 -0
- data/sig/shikimori/api/v1/forums.rbs +15 -0
- data/sig/shikimori/api/v1/friends.rbs +16 -0
- data/sig/shikimori/api/v1/genres.rbs +15 -0
- data/sig/shikimori/api/v1/ignores.rbs +16 -0
- data/sig/shikimori/api/v1/mangas.rbs +23 -0
- data/sig/shikimori/api/v1/messages.rbs +20 -0
- data/sig/shikimori/api/v1/people.rbs +16 -0
- data/sig/shikimori/api/v1/publishers.rbs +15 -0
- data/sig/shikimori/api/v1/ranobe.rbs +23 -0
- data/sig/shikimori/api/v1/reviews.rbs +19 -0
- data/sig/shikimori/api/v1/stats.rbs +15 -0
- data/sig/shikimori/api/v1/studios.rbs +15 -0
- data/sig/shikimori/api/v1/styles.rbs +18 -0
- data/sig/shikimori/api/v1/topic_ignores.rbs +16 -0
- data/sig/shikimori/api/v1/topics.rbs +40 -0
- data/sig/shikimori/api/v1/user_images.rbs +15 -0
- data/sig/shikimori/api/v1/user_rates.rbs +44 -0
- data/sig/shikimori/api/v1/users.rbs +28 -0
- data/sig/shikimori/api/v1/videos.rbs +23 -0
- data/sig/shikimori/api/v1.rbs +41 -0
- data/sig/shikimori/api/v2/abuse_requests.rbs +18 -0
- data/sig/shikimori/api/v2/episode_notifications.rbs +25 -0
- data/sig/shikimori/api/v2/topic_ignore.rbs +16 -0
- data/sig/shikimori/api/v2/user_ignore.rbs +16 -0
- data/sig/shikimori/api/v2/user_rates.rbs +43 -0
- data/sig/shikimori/api/v2.rbs +16 -0
- data/sig/shikimori/api/version.rbs +5 -0
- data/sig/shikimori/api.rbs +18 -0
- metadata +137 -0
@@ -0,0 +1,310 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Shikimori
|
4
|
+
module API
|
5
|
+
class V1
|
6
|
+
# Methods for the Users API
|
7
|
+
#
|
8
|
+
# @see https://shikimori.one/api/doc/1.0/users Shikimori's API documentation
|
9
|
+
module Users
|
10
|
+
# Get list of users
|
11
|
+
#
|
12
|
+
# @option headers [Hash] Request headers
|
13
|
+
# @option query [Hash] Query string parameters for request
|
14
|
+
# @option query [Integer] :page Number of page. Must be between 1 and 100000
|
15
|
+
# @option query [Integer] :limit Number of titles per page. Must be a lower or equal that 50
|
16
|
+
# @option query [String] :search Find user by name
|
17
|
+
#
|
18
|
+
# @return [Array<Hash>] Array of hashes representing users
|
19
|
+
#
|
20
|
+
# @see https://shikimori.one/api/doc/1.0/users/index Shikimori's API documentation
|
21
|
+
# @example Search users with by name "ivan"
|
22
|
+
# client = Shikimori::API::Client.new(
|
23
|
+
# app_name: 'Api Test',
|
24
|
+
# aceess_token: '****',
|
25
|
+
# refresh_token: '****'
|
26
|
+
# )
|
27
|
+
#
|
28
|
+
# client.v1.users(search: 'ivan')
|
29
|
+
def users(headers: nil, **query)
|
30
|
+
rest.get base_url.join('users').url, headers: headers, query: query
|
31
|
+
end
|
32
|
+
|
33
|
+
# Get an user
|
34
|
+
#
|
35
|
+
# @option id [#to_s] User id
|
36
|
+
# @option headers [Hash] Request headers
|
37
|
+
# @option query [Hash] Query string parameters for request
|
38
|
+
#
|
39
|
+
# @return [Hash] Hash representing user
|
40
|
+
#
|
41
|
+
# @see https://shikimori.one/api/doc/1.0/users/show Shikimori's API documentation
|
42
|
+
# @example Get a user with id equal to 1
|
43
|
+
# client = Shikimori::API::Client.new(
|
44
|
+
# app_name: 'Api Test',
|
45
|
+
# aceess_token: '****',
|
46
|
+
# refresh_token: '****'
|
47
|
+
# )
|
48
|
+
#
|
49
|
+
# client.v1.user(1)
|
50
|
+
def user(id, headers: nil, **query)
|
51
|
+
rest.get base_url.join('users', id.to_s).url, headers: headers, query: query
|
52
|
+
end
|
53
|
+
|
54
|
+
# Get an user's brief info
|
55
|
+
#
|
56
|
+
# @option id [#to_s] User id
|
57
|
+
# @option headers [Hash] Request headers
|
58
|
+
# @option query [Hash] Query string parameters for request
|
59
|
+
#
|
60
|
+
# @return [Hash] Hash representing user
|
61
|
+
#
|
62
|
+
# @see https://shikimori.one/api/doc/1.0/users/info Shikimori's API documentation
|
63
|
+
# @example Get a user info with id equal to 1
|
64
|
+
# client = Shikimori::API::Client.new(
|
65
|
+
# app_name: 'Api Test',
|
66
|
+
# aceess_token: '****',
|
67
|
+
# refresh_token: '****'
|
68
|
+
# )
|
69
|
+
# client.v1.user_info(1)
|
70
|
+
def user_info(id, headers: nil, **query)
|
71
|
+
rest.get base_url.join('users', id.to_s, 'info').url, headers: headers, query: query
|
72
|
+
end
|
73
|
+
|
74
|
+
# Get an current user's brief info
|
75
|
+
#
|
76
|
+
# @option headers [Hash] Request headers
|
77
|
+
# @option query [Hash] Query string parameters for request
|
78
|
+
#
|
79
|
+
# @return [Hash] Hash representing user
|
80
|
+
#
|
81
|
+
# @see https://shikimori.one/api/doc/1.0/users/whoami Shikimori's API documentation
|
82
|
+
# @example Get a current user info
|
83
|
+
# client = Shikimori::API::Client.new(
|
84
|
+
# app_name: 'Api Test',
|
85
|
+
# aceess_token: '****',
|
86
|
+
# refresh_token: '****'
|
87
|
+
# )
|
88
|
+
# client.v1.whoami
|
89
|
+
def whoami(headers: nil, **query)
|
90
|
+
rest.get base_url.join('users', 'whoami').url, headers: headers, query: query
|
91
|
+
end
|
92
|
+
|
93
|
+
# Sign out the user
|
94
|
+
#
|
95
|
+
# @option headers [Hash] Request headers
|
96
|
+
# @option query [Hash] Query string parameters for request
|
97
|
+
#
|
98
|
+
# @return [Hash] Hash representing user
|
99
|
+
#
|
100
|
+
# @see https://shikimori.one/api/doc/1.0/users/sign_out Shikimori's API documentation
|
101
|
+
# @example Sign out current user
|
102
|
+
# client = Shikimori::API::Client.new(
|
103
|
+
# app_name: 'Api Test',
|
104
|
+
# aceess_token: '****',
|
105
|
+
# refresh_token: '****'
|
106
|
+
# )
|
107
|
+
# client.v1.sign_out
|
108
|
+
def sign_out(headers: nil, **query)
|
109
|
+
rest.get base_url.join('users', 'sign_out').url, headers: headers, query: query
|
110
|
+
end
|
111
|
+
|
112
|
+
# Get an user's friends
|
113
|
+
#
|
114
|
+
# @option id [#to_s] User id
|
115
|
+
# @option headers [Hash] Request headers
|
116
|
+
# @option query [Hash] Query string parameters for request
|
117
|
+
#
|
118
|
+
# @return [Array<Hash>] Array of hashes representing user's friends
|
119
|
+
#
|
120
|
+
# @see https://shikimori.one/api/doc/1.0/users/friends Shikimori's API documentation
|
121
|
+
# @example
|
122
|
+
# client = Shikimori::API::Client.new(
|
123
|
+
# app_name: 'Api Test',
|
124
|
+
# aceess_token: '****',
|
125
|
+
# refresh_token: '****'
|
126
|
+
# )
|
127
|
+
# client.v1.user_friends(1)
|
128
|
+
def user_friends(id, headers: nil, **query)
|
129
|
+
rest.get base_url.join('users', id.to_s, 'friends').url, headers: headers, query: query
|
130
|
+
end
|
131
|
+
|
132
|
+
# Get an user's clubs
|
133
|
+
#
|
134
|
+
# @option id [#to_s] User id
|
135
|
+
# @option headers [Hash] Request headers
|
136
|
+
# @option query [Hash] Query string parameters for request
|
137
|
+
#
|
138
|
+
# @return [Array<Hash>] Array of hashes representing user's clubs
|
139
|
+
#
|
140
|
+
# @see https://shikimori.one/api/doc/1.0/users/clubs Shikimori's API documentation
|
141
|
+
# @example
|
142
|
+
# client = Shikimori::API::Client.new(
|
143
|
+
# app_name: 'Api Test',
|
144
|
+
# aceess_token: '****',
|
145
|
+
# refresh_token: '****'
|
146
|
+
# )
|
147
|
+
# client.v1.user_clubs(1)
|
148
|
+
def user_clubs(id, headers: nil, **query)
|
149
|
+
rest.get base_url.join('users', id.to_s, 'clubs').url, headers: headers, query: query
|
150
|
+
end
|
151
|
+
|
152
|
+
# Get an user's anime rates
|
153
|
+
#
|
154
|
+
# @option id [#to_s] User id
|
155
|
+
# @option headers [Hash] Request headers
|
156
|
+
# @option query [Hash] Query string parameters for request
|
157
|
+
# @option query [Integer] :page Number of page. Must be between 1 and 100000
|
158
|
+
# @option query [Integer] :limit Number of titles per page. Must be a lower or equal that 5000
|
159
|
+
# @option query [TrueClass, FalseClass] :censored Set to true to discard hentai, yaoi and yuri
|
160
|
+
# @option query ['planned', 'watching', 'rewatching', 'completed', 'on_hold', 'dropped'] :status Watching status
|
161
|
+
#
|
162
|
+
# @return [Array<Hash>] Array of hashes representing user's anime rates
|
163
|
+
#
|
164
|
+
# @see https://shikimori.one/api/doc/1.0/users/anime_rates Shikimori's API documentation
|
165
|
+
# @example
|
166
|
+
# client = Shikimori::API::Client.new(
|
167
|
+
# app_name: 'Api Test',
|
168
|
+
# aceess_token: '****',
|
169
|
+
# refresh_token: '****'
|
170
|
+
# )
|
171
|
+
# client.v1.user_anime_rates(1)
|
172
|
+
def user_anime_rates(id, headers: nil, **query)
|
173
|
+
rest.get base_url.join('users', id.to_s, 'anime_rates').url, headers: headers, query: query
|
174
|
+
end
|
175
|
+
|
176
|
+
# Get an user's manga rates
|
177
|
+
#
|
178
|
+
# @option id [#to_s] User id
|
179
|
+
# @option headers [Hash] Request headers
|
180
|
+
# @option query [Hash] Query string parameters for request
|
181
|
+
# @option query [Integer] :page Number of page. Must be between 1 and 100000
|
182
|
+
# @option query [Integer] :limit Number of titles per page. Must be a lower or equal that 5000
|
183
|
+
# @option query [TrueClass, FalseClass] :censored Set to true to discard hentai, yaoi and yuri
|
184
|
+
#
|
185
|
+
# @return [Array<Hash>] Array of hashes representing user's manga rates
|
186
|
+
#
|
187
|
+
# @see https://shikimori.one/api/doc/1.0/users/manga_rates Shikimori's API documentation
|
188
|
+
# @example
|
189
|
+
# client = Shikimori::API::Client.new(
|
190
|
+
# app_name: 'Api Test',
|
191
|
+
# aceess_token: '****',
|
192
|
+
# refresh_token: '****'
|
193
|
+
# )
|
194
|
+
# client.v1.user_manga_rates(1)
|
195
|
+
def user_manga_rates(id, headers: nil, **query)
|
196
|
+
rest.get base_url.join('users', id.to_s, 'manga_rates').url, headers: headers, query: query
|
197
|
+
end
|
198
|
+
|
199
|
+
# Get an user's favorites
|
200
|
+
#
|
201
|
+
# @option id [#to_s] User id
|
202
|
+
# @option headers [Hash] Request headers
|
203
|
+
# @option query [Hash] Query string parameters for request
|
204
|
+
#
|
205
|
+
# @return [Hash] Hash representing user's favorites
|
206
|
+
#
|
207
|
+
# @see https://shikimori.one/api/doc/1.0/users/favourites Shikimori's API documentation
|
208
|
+
# @example
|
209
|
+
# client = Shikimori::API::Client.new(
|
210
|
+
# app_name: 'Api Test',
|
211
|
+
# aceess_token: '****',
|
212
|
+
# refresh_token: '****'
|
213
|
+
# )
|
214
|
+
# client.v1.user_favorites(1)
|
215
|
+
def user_favorites(id, headers: nil, **query)
|
216
|
+
rest.get base_url.join('users', id.to_s, 'favourites').url, headers: headers, query: query
|
217
|
+
end
|
218
|
+
|
219
|
+
# Get an user's messages
|
220
|
+
# Requires `messages` oauth scope
|
221
|
+
#
|
222
|
+
# @option id [#to_s] User id
|
223
|
+
# @option headers [Hash] Request headers
|
224
|
+
# @option query [Hash] Query string parameters for request
|
225
|
+
# @option query [Integer] :page Number of page. Must be between 1 and 100000
|
226
|
+
# @option query [Integer] :limit Number of titles per page. Must be a lower or equal that 100
|
227
|
+
# @option query ['inbox', 'private', 'sent', 'news', 'notifications'] :type Type of messages
|
228
|
+
#
|
229
|
+
# @return [Array<Hash>] Array of hashes representing user's messages
|
230
|
+
#
|
231
|
+
# @see https://shikimori.one/api/doc/1.0/users/messages Shikimori's API documentation
|
232
|
+
# @example Get user's messages from inbox
|
233
|
+
# client = Shikimori::API::Client.new(
|
234
|
+
# app_name: 'Api Test',
|
235
|
+
# aceess_token: '****',
|
236
|
+
# refresh_token: '****'
|
237
|
+
# )
|
238
|
+
# client.v1.user_messages(1, type: 'inbox', limit: 10)
|
239
|
+
def user_messages(id, headers: nil, **query)
|
240
|
+
rest.get base_url.join('users', id.to_s, 'messages').url, headers: headers, query: query
|
241
|
+
end
|
242
|
+
|
243
|
+
# Get an user's unread messages
|
244
|
+
# Requires `messages` oauth scope
|
245
|
+
#
|
246
|
+
# @option id [#to_s] User id
|
247
|
+
# @option headers [Hash] Request headers
|
248
|
+
# @option query [Hash] Query string parameters for request
|
249
|
+
#
|
250
|
+
# @return [Hash] Hash representing user's messages
|
251
|
+
#
|
252
|
+
# @see https://shikimori.one/api/doc/1.0/users/unread_messages Shikimori's API documentation
|
253
|
+
# @example Get user's unread messages
|
254
|
+
# client = Shikimori::API::Client.new(
|
255
|
+
# app_name: 'Api Test',
|
256
|
+
# aceess_token: '****',
|
257
|
+
# refresh_token: '****'
|
258
|
+
# )
|
259
|
+
# client.v1.user_unread_messages(1, type: 'inbox', limit: 10)
|
260
|
+
def user_unread_messages(id, headers: nil, **query)
|
261
|
+
rest.get base_url.join('users', id.to_s, 'unread_messages').url, headers: headers, query: query
|
262
|
+
end
|
263
|
+
|
264
|
+
# Get an user's history
|
265
|
+
#
|
266
|
+
# @option id [#to_s] User id
|
267
|
+
# @option headers [Hash] Request headers
|
268
|
+
# @option query [Hash] Query string parameters for request
|
269
|
+
# @option query [Integer] :page Number of page. Must be between 1 and 100000
|
270
|
+
# @option query [Integer] :limit Number of titles per page. Must be a lower or equal that 100
|
271
|
+
# @option query [Integer] :target_id Target ID
|
272
|
+
# @option query ['Anime', 'Manga'] :target_type Target type
|
273
|
+
#
|
274
|
+
# @return [Array<Hash>] Array of hashes representing user's history
|
275
|
+
#
|
276
|
+
# @see https://shikimori.one/api/doc/1.0/users/history Shikimori's API documentation
|
277
|
+
# @example Get user's manga history
|
278
|
+
# client = Shikimori::API::Client.new(
|
279
|
+
# app_name: 'Api Test',
|
280
|
+
# aceess_token: '****',
|
281
|
+
# refresh_token: '****'
|
282
|
+
# )
|
283
|
+
# client.v1.user_history(1, type: 'manga', limit: 10)
|
284
|
+
def user_history(id, headers: nil, **query)
|
285
|
+
rest.get base_url.join('users', id.to_s, 'history').url, headers: headers, query: query
|
286
|
+
end
|
287
|
+
|
288
|
+
# Get an user's bans
|
289
|
+
#
|
290
|
+
# @option id [#to_s] User id
|
291
|
+
# @option headers [Hash] Request headers
|
292
|
+
# @option query [Hash] Query string parameters for request
|
293
|
+
#
|
294
|
+
# @return [Array<Hash>] Array of hashes representing user's bans
|
295
|
+
#
|
296
|
+
# @see https://shikimori.one/api/doc/1.0/users/bans Shikimori's API documentation
|
297
|
+
# @example Get user's manga bans
|
298
|
+
# client = Shikimori::API::Client.new(
|
299
|
+
# app_name: 'Api Test',
|
300
|
+
# aceess_token: '****',
|
301
|
+
# refresh_token: '****'
|
302
|
+
# )
|
303
|
+
# client.v1.user_bans
|
304
|
+
def user_bans(id, headers: nil, **query)
|
305
|
+
rest.get base_url.join('users', id.to_s, 'bans').url, headers: headers, query: query
|
306
|
+
end
|
307
|
+
end
|
308
|
+
end
|
309
|
+
end
|
310
|
+
end
|
@@ -0,0 +1,85 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Shikimori
|
4
|
+
module API
|
5
|
+
class V1
|
6
|
+
# Methods for the Videos API
|
7
|
+
#
|
8
|
+
# @see https://shikimori.one/api/doc/1.0/videos Shikimori's API documentation
|
9
|
+
module Videos
|
10
|
+
# Get anime videos
|
11
|
+
#
|
12
|
+
# @param anime_id [#to_s] Anime id
|
13
|
+
# @param headers [Hash] Request headers
|
14
|
+
# @param query [Hash] Query string parameters for request
|
15
|
+
#
|
16
|
+
# @return [Array<Hash>] Array of hashes representing videos
|
17
|
+
#
|
18
|
+
# @see https://shikimori.one/api/doc/1.0/videos/index Shikimori's API documentation
|
19
|
+
# @example Get videos for anime with id equal to 1
|
20
|
+
# client = Shikimori::API::Client.new(
|
21
|
+
# app_name: 'Api Test',
|
22
|
+
# aceess_token: '****',
|
23
|
+
# refresh_token: '****'
|
24
|
+
# )
|
25
|
+
# client.v1.anime_videos(1)
|
26
|
+
def anime_videos(anime_id, headers: nil, **query)
|
27
|
+
rest.get base_url.join('animes', anime_id.to_s, 'videos').url, headers: headers, query: query
|
28
|
+
end
|
29
|
+
|
30
|
+
# Create Video
|
31
|
+
#
|
32
|
+
# @param video [Hash] Video data for creating
|
33
|
+
# @option video [String] :name Name of video
|
34
|
+
# @option video ['pv', 'character_trailer', 'cm', 'op',
|
35
|
+
# 'ed', 'op_ed_clip', 'clip', 'other', 'episode_preview'] :kind Type of video
|
36
|
+
# @option video [String] :url URL to video.
|
37
|
+
# Supported hostings: youtube, vk, ok, coub, rutube, vimeo, sibnet,
|
38
|
+
# yandex, streamable, smotret_anime, myvi, youmite, viuly, stormo, mediafile
|
39
|
+
# @param headers [Hash] Request headers
|
40
|
+
# @param query [Hash] Query string parameters for request
|
41
|
+
#
|
42
|
+
# @return [Hash] Hash representing created video
|
43
|
+
#
|
44
|
+
# @see https://shikimori.one/api/doc/1.0/videos/create Shikimori's API documentation
|
45
|
+
# @example
|
46
|
+
# client = Shikimori::API::Client.new(
|
47
|
+
# app_name: 'Api Test',
|
48
|
+
# aceess_token: '****',
|
49
|
+
# refresh_token: '****'
|
50
|
+
# )
|
51
|
+
# video = { name: 'Funny cat!', kind: 'ed', url: 'https://youtu.be/dQw4w9WgXcQ' }
|
52
|
+
# client.v1.create_anime_video(1, video)
|
53
|
+
def create_anime_video(anime_id, video, headers: nil, **query)
|
54
|
+
rest.post base_url.join('animes', anime_id.to_s, 'videos').url,
|
55
|
+
{ video: video },
|
56
|
+
headers: headers, query: query
|
57
|
+
end
|
58
|
+
|
59
|
+
# Delete Video
|
60
|
+
#
|
61
|
+
# @param anime_id [#to_s] Anime id
|
62
|
+
# @param video_id [#to_s] Video id
|
63
|
+
# @param headers [Hash] Request headers
|
64
|
+
# @param query [Hash] Query string parameters for request
|
65
|
+
#
|
66
|
+
# @return [Boolean] True if deletion successful, false otherwise.
|
67
|
+
#
|
68
|
+
# @see https://shikimori.one/api/doc/1.0/videos/destroy Shikimori's API documentation
|
69
|
+
# @example
|
70
|
+
# client = Shikimori::API::Client.new(
|
71
|
+
# app_name: 'Api Test',
|
72
|
+
# aceess_token: '****',
|
73
|
+
# refresh_token: '****'
|
74
|
+
# )
|
75
|
+
#
|
76
|
+
# client.v1.delete_anime_video(anime_id: 1, video_id: 1)
|
77
|
+
def delete_anime_video(anime_id:, video_id:, headers: nil, **query)
|
78
|
+
rest.delete base_url.join('animes', anime_id.to_s, 'videos', video_id.to_s).url,
|
79
|
+
headers: headers,
|
80
|
+
query: query
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'v1/achievements'
|
4
|
+
require_relative 'v1/animes'
|
5
|
+
require_relative 'v1/appear'
|
6
|
+
require_relative 'v1/bans'
|
7
|
+
require_relative 'v1/calendars'
|
8
|
+
require_relative 'v1/characters'
|
9
|
+
require_relative 'v1/clubs'
|
10
|
+
require_relative 'v1/comments'
|
11
|
+
require_relative 'v1/constants'
|
12
|
+
require_relative 'v1/dialogs'
|
13
|
+
require_relative 'v1/favorites'
|
14
|
+
require_relative 'v1/forums'
|
15
|
+
require_relative 'v1/friends'
|
16
|
+
require_relative 'v1/genres'
|
17
|
+
require_relative 'v1/ignores'
|
18
|
+
require_relative 'v1/mangas'
|
19
|
+
require_relative 'v1/messages'
|
20
|
+
require_relative 'v1/people'
|
21
|
+
require_relative 'v1/publishers'
|
22
|
+
require_relative 'v1/ranobe'
|
23
|
+
require_relative 'v1/reviews'
|
24
|
+
require_relative 'v1/stats'
|
25
|
+
require_relative 'v1/studios'
|
26
|
+
require_relative 'v1/styles'
|
27
|
+
require_relative 'v1/topic_ignores'
|
28
|
+
require_relative 'v1/topics'
|
29
|
+
require_relative 'v1/user_images'
|
30
|
+
require_relative 'v1/user_rates'
|
31
|
+
require_relative 'v1/users'
|
32
|
+
require_relative 'v1/videos'
|
33
|
+
|
34
|
+
module Shikimori
|
35
|
+
module API
|
36
|
+
# Methods for first version of shikimori's API
|
37
|
+
class V1
|
38
|
+
include Achievements
|
39
|
+
include Animes
|
40
|
+
include Appear
|
41
|
+
include Bans
|
42
|
+
include Calendars
|
43
|
+
include Characters
|
44
|
+
include Clubs
|
45
|
+
include Comments
|
46
|
+
include Constants
|
47
|
+
include Dialogs
|
48
|
+
include Favorites
|
49
|
+
include Forums
|
50
|
+
include Friends
|
51
|
+
include Genres
|
52
|
+
include Ignores
|
53
|
+
include Mangas
|
54
|
+
include Messages
|
55
|
+
include People
|
56
|
+
include Publishers
|
57
|
+
include Ranobe
|
58
|
+
include Reviews
|
59
|
+
include Stats
|
60
|
+
include Studios
|
61
|
+
include Styles
|
62
|
+
include TopicIgnores
|
63
|
+
include Topics
|
64
|
+
include UserImages
|
65
|
+
include UserRates
|
66
|
+
include Users
|
67
|
+
include Videos
|
68
|
+
|
69
|
+
attr_reader :rest, :base_url
|
70
|
+
|
71
|
+
def initialize(base_url:, rest:)
|
72
|
+
@rest = rest
|
73
|
+
@base_url = base_url
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
@@ -0,0 +1,103 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Shikimori
|
4
|
+
module API
|
5
|
+
class V2
|
6
|
+
# Methods for the Abuse requests API
|
7
|
+
#
|
8
|
+
# @see https://shikimori.one/api/doc/2.0/abuse_requests Shikimori's API documentation
|
9
|
+
module AbuseRequests
|
10
|
+
# Abuse offtopic request
|
11
|
+
#
|
12
|
+
# @param abuse_request [Hash] Abuse request data for creating
|
13
|
+
# @option abuse_request [Integer] :comment_id Comment id
|
14
|
+
# @param headers [Hash] Request headers
|
15
|
+
# @param query [Hash] Query string parameters for request
|
16
|
+
#
|
17
|
+
# @return [Hash] Hash representing abuse request
|
18
|
+
#
|
19
|
+
# @see https://shikimori.one/api/doc/2.0/abuse_requests/offtopic Shikimori's API documentation
|
20
|
+
# @example
|
21
|
+
# client = Shikimori::API::Client.new(
|
22
|
+
# app_name: 'Api Test',
|
23
|
+
# aceess_token: '****',
|
24
|
+
# refresh_token: '****'
|
25
|
+
# )
|
26
|
+
# client.v2.abuse_offtopic_request({ comment_id: 1, topic_id: 1, reason: 'Nani?!' })
|
27
|
+
def abuse_offtopic_request(abuse_request, headers: nil, **query)
|
28
|
+
rest.post base_url.join('abuse_requests', 'offtopic').url, abuse_request.to_h, headers: headers, query: query
|
29
|
+
end
|
30
|
+
|
31
|
+
# Abuse review request
|
32
|
+
#
|
33
|
+
# @param abuse_request [Hash] Abuse request data for creating
|
34
|
+
# @option abuse_request [Integer] :comment_id Comment id
|
35
|
+
# @option abuse_request [Integer] :topic_id Comment id
|
36
|
+
# @param headers [Hash] Request headers
|
37
|
+
# @param query [Hash] Query string parameters for request
|
38
|
+
#
|
39
|
+
# @return [Hash] Hash representing abuse request
|
40
|
+
#
|
41
|
+
# @see https://shikimori.one/api/doc/2.0/abuse_requests/convert_review Shikimori's API documentation
|
42
|
+
# @example
|
43
|
+
# client = Shikimori::API::Client.new(
|
44
|
+
# app_name: 'Api Test',
|
45
|
+
# aceess_token: '****',
|
46
|
+
# refresh_token: '****'
|
47
|
+
# )
|
48
|
+
# client.v2.abuse_review_request({ topic_id: 1 })
|
49
|
+
def abuse_review_request(abuse_request, headers: nil, **query)
|
50
|
+
rest.post base_url.join('abuse_requests', 'convert_review').url,
|
51
|
+
abuse_request.to_h,
|
52
|
+
headers: headers, query: query
|
53
|
+
end
|
54
|
+
|
55
|
+
# Abuse abuse request
|
56
|
+
#
|
57
|
+
# @param abuse_request [Hash] Abuse request data for creating
|
58
|
+
# @option abuse_request [Integer] :comment_id Comment id
|
59
|
+
# @option abuse_request [Integer] :topic_id Comment id
|
60
|
+
# @option abuse_request [String] :reason Reason to abuse
|
61
|
+
# @param headers [Hash] Request headers
|
62
|
+
# @param query [Hash] Query string parameters for request
|
63
|
+
#
|
64
|
+
# @return [Hash] Hash representing abuse request
|
65
|
+
#
|
66
|
+
# @see https://shikimori.one/api/doc/2.0/abuse_requests/abuse Shikimori's API documentation
|
67
|
+
# @example
|
68
|
+
# client = Shikimori::API::Client.new(
|
69
|
+
# app_name: 'Api Test',
|
70
|
+
# aceess_token: '****',
|
71
|
+
# refresh_token: '****'
|
72
|
+
# )
|
73
|
+
# client.v2.abuse_request({ topic_id: 1, reason: 'Nani?!' })
|
74
|
+
def abuse_request(abuse_request, headers: nil, **query)
|
75
|
+
rest.post base_url.join('abuse_requests', 'abuse').url, abuse_request.to_h, headers: headers, query: query
|
76
|
+
end
|
77
|
+
|
78
|
+
# Abuse spoiler request
|
79
|
+
#
|
80
|
+
# @param abuse_request [Hash] Abuse request data for creating
|
81
|
+
# @option abuse_request [Integer] :comment_id Comment id
|
82
|
+
# @option abuse_request [Integer] :topic_id Comment id
|
83
|
+
# @option abuse_request [String] :reason Reason to abuse
|
84
|
+
# @param headers [Hash] Request headers
|
85
|
+
# @param query [Hash] Query string parameters for request
|
86
|
+
#
|
87
|
+
# @return [Hash] Hash representing abuse request
|
88
|
+
#
|
89
|
+
# @see https://shikimori.one/api/doc/2.0/abuse_requests/spoiler Shikimori's API documentation
|
90
|
+
# @example
|
91
|
+
# client = Shikimori::API::Client.new(
|
92
|
+
# app_name: 'Api Test',
|
93
|
+
# aceess_token: '****',
|
94
|
+
# refresh_token: '****'
|
95
|
+
# )
|
96
|
+
# client.v2.abuse_spoiler_request({ comment_id: 1, reason: 'Nani?!' })
|
97
|
+
def abuse_spoiler_request(abuse_request, headers: nil, **query)
|
98
|
+
rest.post base_url.join('abuse_requests', 'spoiler').url, abuse_request.to_h, headers: headers, query: query
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Shikimori
|
4
|
+
module API
|
5
|
+
class V2
|
6
|
+
# Methods for the Episode notifications API
|
7
|
+
#
|
8
|
+
# @see https://shikimori.one/api/doc/2.0/episode_notifications Shikimori's API documentation
|
9
|
+
module EpisodeNotifications
|
10
|
+
# Notify shikimori about anime episode release
|
11
|
+
#
|
12
|
+
# @param episode_notification [Hash] Episode notification data for creating
|
13
|
+
# @option episode_notification [Integer] :anime_id Anime id
|
14
|
+
# @option episode_notification [Integer] :episode Episode number
|
15
|
+
# @option episode_notification [String] :aired_at Date and time of aired
|
16
|
+
# @option episode_notification ['true', 'false', 1, 0] :is_fandub Is fandub?
|
17
|
+
# @option episode_notification ['true', 'false', 1, 0] :is_raw Is raw?
|
18
|
+
# @option episode_notification ['true', 'false', 1, 0] :is_subtitles Is with subtitles?
|
19
|
+
# @option episode_notification ['true', 'false', 1, 0] :is_anime365 Is Anime365?
|
20
|
+
# @param token [String] Private token required to access this api
|
21
|
+
# @param headers [Hash] Request headers
|
22
|
+
# @param query [Hash] Query string parameters for request
|
23
|
+
#
|
24
|
+
# @return [Hash] Hash representing created episode notification
|
25
|
+
#
|
26
|
+
# @see https://shikimori.one/api/doc/2.0/episode_notifications/create Shikimori's API documentation
|
27
|
+
# @example
|
28
|
+
# client = Shikimori::API::Client.new(
|
29
|
+
# app_name: 'Api Test',
|
30
|
+
# aceess_token: '****',
|
31
|
+
# refresh_token: '****'
|
32
|
+
# )
|
33
|
+
#
|
34
|
+
# notification = {
|
35
|
+
# aired_at: "2022-11-19T17:19:31+03:00",
|
36
|
+
# anime_id: "35",
|
37
|
+
# episode: "3",
|
38
|
+
# is_anime365: "true",
|
39
|
+
# is_fandub: "true",
|
40
|
+
# is_raw: "false",
|
41
|
+
# is_subtitles: "false"
|
42
|
+
# }
|
43
|
+
# token = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
|
44
|
+
#
|
45
|
+
# client.v2.create_episode_notification(notification, token: token)
|
46
|
+
def create_episode_notification(episode_notification, token:, headers: nil, **query)
|
47
|
+
rest.post base_url.join('episode_notifications').url,
|
48
|
+
{ episode_notification: episode_notification, token: token },
|
49
|
+
headers: headers, query: query
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Shikimori
|
4
|
+
module API
|
5
|
+
class V2
|
6
|
+
# Methods for the Topic ignores API
|
7
|
+
#
|
8
|
+
# @see https://shikimori.one/api/doc/2.0/Topic%20Ignore Shikimori's API documentation
|
9
|
+
module TopicIgnore
|
10
|
+
# Add topic to ignore by id.
|
11
|
+
# Requires `topics` oauth scope
|
12
|
+
#
|
13
|
+
# @param topic_id [#to_s] Topic id
|
14
|
+
# @param headers [Hash] Request headers
|
15
|
+
# @param query [Hash] Query string parameters for request
|
16
|
+
#
|
17
|
+
# @return [Hash] Hash representing created topic ignore
|
18
|
+
#
|
19
|
+
# @see https://shikimori.one/api/doc/2.0/Topic%20Ignore/create Shikimori's API documentation
|
20
|
+
# @example Add to ignore a topic with id equal to 1
|
21
|
+
# client = Shikimori::API::Client.new(
|
22
|
+
# app_name: 'Api Test',
|
23
|
+
# aceess_token: '****',
|
24
|
+
# refresh_token: '****'
|
25
|
+
# )
|
26
|
+
# client.v2.create_topic_ignore(1)
|
27
|
+
def create_topic_ignore(topic_id, headers: nil, **query)
|
28
|
+
rest.post base_url.join('topics', topic_id.to_s, 'ignore').url, {}, headers: headers, query: query
|
29
|
+
end
|
30
|
+
|
31
|
+
# Delete a topic ignore by id.
|
32
|
+
# Requires `ignores` oauth scope
|
33
|
+
#
|
34
|
+
# @param topic_id [#to_s] Topic id
|
35
|
+
# @param headers [Hash] Request headers
|
36
|
+
# @param query [Hash] Query string parameters for request
|
37
|
+
#
|
38
|
+
# @return [Boolean] True if deletion successful, false otherwise.
|
39
|
+
#
|
40
|
+
# @see https://shikimori.one/api/doc/2.0/Topic%20Ignore/destroy Shikimori's API documentation
|
41
|
+
# @example Delete a topic ignore
|
42
|
+
# client = Shikimori::API::Client.new(
|
43
|
+
# app_name: 'Api Test',
|
44
|
+
# aceess_token: '****',
|
45
|
+
# refresh_token: '****'
|
46
|
+
# )
|
47
|
+
# client.v2.delete_topic_ignore(1)
|
48
|
+
def delete_topic_ignore(topic_id, headers: nil, **query)
|
49
|
+
rest.delete base_url.join('topics', topic_id.to_s, 'ignore').url, headers: headers, query: query
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|