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,112 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Shikimori
|
4
|
+
module API
|
5
|
+
class V1
|
6
|
+
# Methods for the Styles API
|
7
|
+
#
|
8
|
+
# @see https://shikimori.one/api/doc/1.0/styles Shikimori's API documentation
|
9
|
+
module Styles
|
10
|
+
# Get a style
|
11
|
+
#
|
12
|
+
# @param id [#to_s] Style id
|
13
|
+
# @param headers [Hash] Request headers
|
14
|
+
# @param query [Hash] Query string parameters for request
|
15
|
+
#
|
16
|
+
# @return [Hash] Hash representing style
|
17
|
+
#
|
18
|
+
# @see https://shikimori.one/api/doc/1.0/styles/show Shikimori's API documentation
|
19
|
+
# @example Get a style 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.style(1)
|
26
|
+
def style(id, headers: nil, **query)
|
27
|
+
rest.get base_url.join('styles', id.to_s).url, headers: headers, query: query
|
28
|
+
end
|
29
|
+
|
30
|
+
# Create style
|
31
|
+
#
|
32
|
+
# @param style [Hash] Style data for creating
|
33
|
+
# @option style [String] :css Style CSS content
|
34
|
+
# @option style [String] :name Style name
|
35
|
+
# @option style [Integer] :owner_id Owner ID
|
36
|
+
# @option style ['User', 'Club'] :owner_type Owner type
|
37
|
+
# @param headers [Hash] Request headers
|
38
|
+
# @param query [Hash] Query string parameters for request
|
39
|
+
#
|
40
|
+
# @return [Hash] Hash representing created style
|
41
|
+
#
|
42
|
+
# @see https://shikimori.one/api/doc/1.0/styles/create Shikimori's API documentation
|
43
|
+
# @example Create a red background style
|
44
|
+
# client = Shikimori::API::Client.new(
|
45
|
+
# app_name: 'Api Test',
|
46
|
+
# aceess_token: '****',
|
47
|
+
# refresh_token: '****'
|
48
|
+
# )
|
49
|
+
# client.v1.create_style({
|
50
|
+
# name: 'Red background',
|
51
|
+
# css: 'body: { background: red !important; }',
|
52
|
+
# owner_id: 1,
|
53
|
+
# owner_type: 'User'
|
54
|
+
# })
|
55
|
+
def create_style(style, headers: nil, **query)
|
56
|
+
rest.post base_url.join('styles').url, { style: style }, headers: headers, query: query
|
57
|
+
end
|
58
|
+
|
59
|
+
# Update style
|
60
|
+
#
|
61
|
+
# @param id [Hash] Style's ID
|
62
|
+
# @param style [Hash] Style data for updating
|
63
|
+
# @option style [String] :css Style CSS content
|
64
|
+
# @option style [String] :name Style name
|
65
|
+
# @param headers [Hash] Request headers
|
66
|
+
# @param query [Hash] Query string parameters for request
|
67
|
+
#
|
68
|
+
# @return [Hash] Hash representing updated style
|
69
|
+
#
|
70
|
+
# @see https://shikimori.one/api/doc/1.0/styles/update Shikimori's API documentation
|
71
|
+
# @example Change style from red background to green
|
72
|
+
# client = Shikimori::API::Client.new(
|
73
|
+
# app_name: 'Api Test',
|
74
|
+
# aceess_token: '****',
|
75
|
+
# refresh_token: '****'
|
76
|
+
# )
|
77
|
+
#
|
78
|
+
# client.v1.update_style(
|
79
|
+
# 1,
|
80
|
+
# { name: 'Green background', css: 'body: { background: green !important; }', }
|
81
|
+
# )
|
82
|
+
def update_style(id, style, headers: nil, **query)
|
83
|
+
rest.put base_url.join('styles', id.to_s).url, { style: style }, headers: headers, query: query
|
84
|
+
end
|
85
|
+
|
86
|
+
# Preview style
|
87
|
+
#
|
88
|
+
# @param style [Hash] Style data for preview
|
89
|
+
# @option style [String] :css Style CSS content
|
90
|
+
# @param headers [Hash] Request headers
|
91
|
+
# @param query [Hash] Query string parameters for request
|
92
|
+
#
|
93
|
+
# @return [Hash] Hash representing updated style
|
94
|
+
#
|
95
|
+
# @see https://shikimori.one/api/doc/1.0/styles/preview Shikimori's API documentation
|
96
|
+
# @example Preview style with green background
|
97
|
+
# client = Shikimori::API::Client.new(
|
98
|
+
# app_name: 'Api Test',
|
99
|
+
# aceess_token: '****',
|
100
|
+
# refresh_token: '****'
|
101
|
+
# )
|
102
|
+
# client.v1.preview_style(
|
103
|
+
# 1,
|
104
|
+
# { css: 'body: { background: green !important; }', }
|
105
|
+
# )
|
106
|
+
def preview_style(style, headers: nil, **query)
|
107
|
+
rest.post base_url.join('styles', 'preview').url, { style: style }, headers: headers, query: query
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Shikimori
|
4
|
+
module API
|
5
|
+
class V1
|
6
|
+
# Methods for the Topic ignores API
|
7
|
+
#
|
8
|
+
# @deprecated Use {Shikimori::API::V2::TopicIgnore} instead
|
9
|
+
#
|
10
|
+
# @see https://shikimori.one/api/doc/1.0/topic_ignores Shikimori's API documentation
|
11
|
+
module TopicIgnores
|
12
|
+
# Add user to ignore at topic by user id and topic id.
|
13
|
+
# Requires `topics` oauth scope
|
14
|
+
#
|
15
|
+
# @param topic_id [Integer] Topic id where to add
|
16
|
+
# @param user_id [Integer] User id that add to ignores
|
17
|
+
# @param headers [Hash] Request headers
|
18
|
+
# @param query [Hash] Query string parameters for request
|
19
|
+
#
|
20
|
+
# @return [Hash] Hash representing created topic ignore
|
21
|
+
#
|
22
|
+
# @see https://shikimori.one/api/doc/1.0/topic_ignores/create Shikimori's API documentation
|
23
|
+
# @example Add to ignore a user with id equal to 1 at topic with id equal to 1
|
24
|
+
# client = Shikimori::API::Client.new(
|
25
|
+
# app_name: 'Api Test',
|
26
|
+
# aceess_token: '****',
|
27
|
+
# refresh_token: '****'
|
28
|
+
# )
|
29
|
+
# client.v1.create_topic_ignore(topic_id: 1, user_id: 1)
|
30
|
+
#
|
31
|
+
# @deprecated Use {Shikimori::API::V2::TopicIgnore#create_topic_ignore} instead
|
32
|
+
def create_topic_ignore(topic_id:, user_id:, headers: nil, **query)
|
33
|
+
payload = { topic_ignore: { topic_id: topic_id, user_id: user_id } }
|
34
|
+
|
35
|
+
rest.post base_url.join('topic_ignores').url, payload, headers: headers, query: query
|
36
|
+
end
|
37
|
+
|
38
|
+
# Delete a user from topic ignores by id.
|
39
|
+
# Requires `ignores` oauth scope
|
40
|
+
#
|
41
|
+
# @param id [#to_s] Topic ignore id
|
42
|
+
# @param headers [Hash] Request headers
|
43
|
+
# @param query [Hash] Query string parameters for request
|
44
|
+
#
|
45
|
+
# @return [Boolean] True if deletion successful, false otherwise.
|
46
|
+
#
|
47
|
+
# @see https://shikimori.one/api/doc/1.0/topic_ignores/destroy Shikimori's API documentation
|
48
|
+
# @example Delete a topic ignore
|
49
|
+
# client = Shikimori::API::Client.new(
|
50
|
+
# app_name: 'Api Test',
|
51
|
+
# aceess_token: '****',
|
52
|
+
# refresh_token: '****'
|
53
|
+
# )
|
54
|
+
# client.v1.delete_topic_ignore(1)
|
55
|
+
#
|
56
|
+
# @deprecated Use {Shikimori::API::V2::TopicIgnore#delete_topic_ignore} instead
|
57
|
+
def delete_topic_ignore(id, headers: nil, **query)
|
58
|
+
rest.delete base_url.join('topic_ignores', id.to_s).url, headers: headers, query: query
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,237 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Shikimori
|
4
|
+
module API
|
5
|
+
class V1
|
6
|
+
# Methods for the Topics API
|
7
|
+
#
|
8
|
+
# @see https://shikimori.one/api/doc/1.0/topics Shikimori's API documentation
|
9
|
+
module Topics
|
10
|
+
TOPIC_TYPES_MAP = {
|
11
|
+
'topic' => 'Topic',
|
12
|
+
'club_user' => 'Topics::ClubUserTopic',
|
13
|
+
'entry_topic' => 'Topics::EntryTopic',
|
14
|
+
'anime' => 'Topics::EntryTopics::AnimeTopic',
|
15
|
+
'article' => 'Topics::EntryTopics::ArticleTopic',
|
16
|
+
'character' => 'Topics::EntryTopics::CharacterTopic',
|
17
|
+
'club_page' => 'Topics::EntryTopics::ClubPageTopic',
|
18
|
+
'club' => 'Topics::EntryTopics::ClubTopic',
|
19
|
+
'collection' => 'Topics::EntryTopics::CollectionTopic',
|
20
|
+
'contest' => 'Topics::EntryTopics::ContestTopic',
|
21
|
+
'cosplay_gallery' => 'Topics::EntryTopics::CosplayGalleryTopic',
|
22
|
+
'manga' => 'Topics::EntryTopics::MangaTopic',
|
23
|
+
'person' => 'Topics::EntryTopics::PersonTopic',
|
24
|
+
'ranobe' => 'Topics::EntryTopics::RanobeTopic',
|
25
|
+
'critique' => 'Topics::EntryTopics::CritiqueTopic',
|
26
|
+
'review' => 'Topics::EntryTopics::ReviewTopic',
|
27
|
+
'news' => 'Topics::NewsTopic',
|
28
|
+
'contest_status' => 'Topics::NewsTopics::ContestStatusTopic'
|
29
|
+
}.freeze
|
30
|
+
|
31
|
+
# Get list of topics
|
32
|
+
#
|
33
|
+
# @param headers [Hash] Request headers
|
34
|
+
# @param query [Hash] Query string parameters for request
|
35
|
+
# @option query [Integer] :page Number of page. Must be between 1 and 100000
|
36
|
+
# @option query [Integer] :limit Number of titles per page. Must be a lower or equal that 30
|
37
|
+
# @option query ['all', 'animanga', 'site',
|
38
|
+
# 'games', 'vn', 'contests',
|
39
|
+
# 'offtopic', 'clubs', 'my_clubs',
|
40
|
+
# 'critiques', 'news', 'collections',
|
41
|
+
# 'articles', 'cosplay'] :forum Forum type
|
42
|
+
# @option query [Integer] :linked_id Linked object ID
|
43
|
+
# @option query ['Anime', 'Manga', 'Ranobe',
|
44
|
+
# 'Character', 'Person', 'Club',
|
45
|
+
# 'ClubPage', 'Critique', 'Review',
|
46
|
+
# 'Contest', 'CosplayGallery',
|
47
|
+
# 'Collection', 'Article'] :linked_type Linked object type
|
48
|
+
# @option query ['topic', 'club_user', 'entry_topic',
|
49
|
+
# 'anime', 'article', 'character',
|
50
|
+
# 'club_page', 'club', 'collection',
|
51
|
+
# 'contest', 'cosplay_gallery', 'manga',
|
52
|
+
# 'person', 'ranobe', 'critique',
|
53
|
+
# 'review', 'news', 'contest_status'] :type Type of topic
|
54
|
+
#
|
55
|
+
# @return [Array<Hash>] Array of hashes representing topics
|
56
|
+
#
|
57
|
+
# @see https://shikimori.one/api/doc/1.0/topics/index Shikimori's API documentation
|
58
|
+
# @example Get list of topics
|
59
|
+
# client = Shikimori::API::Client.new(
|
60
|
+
# app_name: 'Api Test',
|
61
|
+
# aceess_token: '****',
|
62
|
+
# refresh_token: '****'
|
63
|
+
# )
|
64
|
+
# client.v1.topics #=> [{ id: 1, ... }, ...]
|
65
|
+
def topics(type: nil, headers: nil, **query)
|
66
|
+
topic_type = type && TOPIC_TYPES_MAP[type]
|
67
|
+
|
68
|
+
rest.get base_url.join('topics').url, headers: headers, query: query.merge(
|
69
|
+
type: topic_type
|
70
|
+
).compact
|
71
|
+
end
|
72
|
+
|
73
|
+
# Get an topic by id
|
74
|
+
#
|
75
|
+
# @param id [#to_s] Topic id
|
76
|
+
# @param headers [Hash] Request headers
|
77
|
+
# @param query [Hash] Query string parameters for request
|
78
|
+
#
|
79
|
+
# @return [Hash] Hash representing topic
|
80
|
+
#
|
81
|
+
# @see https://shikimori.one/api/doc/1.0/topics/show Shikimori's API documentation
|
82
|
+
# @example Get topic with id equal to 1
|
83
|
+
# client = Shikimori::API::Client.new(
|
84
|
+
# app_name: 'Api Test',
|
85
|
+
# aceess_token: '****',
|
86
|
+
# refresh_token: '****'
|
87
|
+
# )
|
88
|
+
# client.v1.topic(1) #=> { id: 1, ... }
|
89
|
+
def topic(id, headers: nil, **query)
|
90
|
+
rest.get base_url.join('topics', id.to_s).url, headers: headers, query: query
|
91
|
+
end
|
92
|
+
|
93
|
+
# Create a topic.
|
94
|
+
# Requires `topics` oauth scope
|
95
|
+
#
|
96
|
+
# @param topic [Hash] Topic data for creating
|
97
|
+
# @option topic [String] :title Topic title
|
98
|
+
# @option topic ['Topic'] :type Topic type
|
99
|
+
# @option topic [String] :body Topic text
|
100
|
+
# @option topic [Integer] :forum_id ID of forum
|
101
|
+
# @option topic [Integer] :user_id ID of user created a topic
|
102
|
+
# @option topic [Integer] :linked_id ID of linked object to topic
|
103
|
+
# @option topic ['Anime', 'Manga', 'Ranobe',
|
104
|
+
# 'Character', 'Person', 'Club',
|
105
|
+
# 'ClubPage', 'Critique', 'Review',
|
106
|
+
# 'Contest', 'CosplayGallery',
|
107
|
+
# 'Collection', 'Article'] :linked_type Type of linked object to topic
|
108
|
+
# @param headers [Hash] Request headers
|
109
|
+
# @param query [Hash] Query string parameters for request
|
110
|
+
#
|
111
|
+
# @return [Hash] Hash representing created topic
|
112
|
+
#
|
113
|
+
# @see https://shikimori.one/api/doc/1.0/topics/create Shikimori's API documentation
|
114
|
+
# @example Create a topic
|
115
|
+
# client = Shikimori::API::Client.new(
|
116
|
+
# app_name: 'Api Test',
|
117
|
+
# aceess_token: '****',
|
118
|
+
# refresh_token: '****'
|
119
|
+
# )
|
120
|
+
# topic = {
|
121
|
+
# body: "text",
|
122
|
+
# forum_id: "1",
|
123
|
+
# linked_id: "41",
|
124
|
+
# linked_type: "Anime",
|
125
|
+
# title: "zxc",
|
126
|
+
# type: "Topic",
|
127
|
+
# user_id: "23456791"
|
128
|
+
# }
|
129
|
+
# client.v1.create_topic(topic)
|
130
|
+
def create_topic(topic, headers: nil, **query)
|
131
|
+
rest.post(
|
132
|
+
base_url.join('topics').url,
|
133
|
+
{ topic: topic }.compact,
|
134
|
+
headers: headers, query: query
|
135
|
+
)
|
136
|
+
end
|
137
|
+
|
138
|
+
# Update Topic
|
139
|
+
# Requires `topics` oauth scope
|
140
|
+
#
|
141
|
+
# @param id [#to_s] Topic id
|
142
|
+
# @param topic [Hash] Topic data for updating
|
143
|
+
# @option topic [String] :title Topic title
|
144
|
+
# @option topic [String] :body Topic text
|
145
|
+
# @option topic [Integer] :linked_id ID of linked object to topic
|
146
|
+
# @option topic ['Anime', 'Manga', 'Ranobe',
|
147
|
+
# 'Character', 'Person', 'Club',
|
148
|
+
# 'ClubPage', 'Critique', 'Review',
|
149
|
+
# 'Contest', 'CosplayGallery',
|
150
|
+
# 'Collection', 'Article'] :linked_type Type of linked object to topic
|
151
|
+
# @param headers [Hash] Request headers
|
152
|
+
# @param query [Hash] Query string parameters for request
|
153
|
+
#
|
154
|
+
# @return [Hash] Hash representing updated topic
|
155
|
+
#
|
156
|
+
# @see https://shikimori.one/api/doc/1.0/topics/update Shikimori's API documentation
|
157
|
+
# @example Update a topic
|
158
|
+
# client = Shikimori::API::Client.new(
|
159
|
+
# app_name: 'Api Test',
|
160
|
+
# aceess_token: '****',
|
161
|
+
# refresh_token: '****'
|
162
|
+
# )
|
163
|
+
# topic = {
|
164
|
+
# body: "text",
|
165
|
+
# linked_id: "41",
|
166
|
+
# linked_type: "Anime",
|
167
|
+
# title: "zxc",
|
168
|
+
# }
|
169
|
+
# client.v1.update_topic(topic)
|
170
|
+
def update_topic(id, topic, headers: nil, **query)
|
171
|
+
rest.put base_url.join('topics', id.to_s).url, { topic: topic }, headers: headers, query: query
|
172
|
+
end
|
173
|
+
|
174
|
+
# Delete Topic
|
175
|
+
#
|
176
|
+
# @param id [String, Integer] Topic id
|
177
|
+
# @param headers [Hash] Request headers
|
178
|
+
# @param query [Hash] Query string parameters for request
|
179
|
+
#
|
180
|
+
# @return [Boolean] True if deletion successful, false otherwise.
|
181
|
+
#
|
182
|
+
# @see https://shikimori.one/api/doc/1.0/topics/destroy Shikimori's API documentation
|
183
|
+
# @example Delete a topic with id equal to 1
|
184
|
+
# client = Shikimori::API::Client.new(
|
185
|
+
# app_name: 'Api Test',
|
186
|
+
# aceess_token: '****',
|
187
|
+
# refresh_token: '****'
|
188
|
+
# )
|
189
|
+
# client.v1.delete_topic(1)
|
190
|
+
def delete_topic(id, headers: nil, **query)
|
191
|
+
rest.delete base_url.join('topics', id.to_s).url, headers: headers, query: query
|
192
|
+
end
|
193
|
+
|
194
|
+
# Get topics updates
|
195
|
+
#
|
196
|
+
# @param headers [Hash] Request headers
|
197
|
+
# @param query [Hash] Query string parameters for request
|
198
|
+
# @option query [Integer] :page Number of page. Must be between 1 and 100000
|
199
|
+
# @option query [Integer] :limit Number of titles per page. Must be a lower or equal that 30
|
200
|
+
#
|
201
|
+
# @return [Array<Hash>] Array of hashes representing topic updates
|
202
|
+
#
|
203
|
+
# @see https://shikimori.one/api/doc/1.0/topics/updates Shikimori's API documentation
|
204
|
+
# @example Get list of topics updates
|
205
|
+
# client = Shikimori::API::Client.new(
|
206
|
+
# app_name: 'Api Test',
|
207
|
+
# aceess_token: '****',
|
208
|
+
# refresh_token: '****'
|
209
|
+
# )
|
210
|
+
# client.v1.topics_updates #=> [{ id: 1, ... }, ...]
|
211
|
+
def topics_updates(headers: nil, **query)
|
212
|
+
rest.get base_url.join('topics', 'updates').url, headers: headers, query: query
|
213
|
+
end
|
214
|
+
|
215
|
+
# Get hot topics
|
216
|
+
#
|
217
|
+
# @param headers [Hash] Request headers
|
218
|
+
# @param query [Hash] Query string parameters for request
|
219
|
+
# @option query [Integer] :limit Number of titles per page. Must be a lower or equal that 10
|
220
|
+
#
|
221
|
+
# @return [Array<Hash>] Array of hashes representing topic updates
|
222
|
+
#
|
223
|
+
# @see https://shikimori.one/api/doc/1.0/topics/hot Shikimori's API documentation
|
224
|
+
# @example Get list of hot topics
|
225
|
+
# client = Shikimori::API::Client.new(
|
226
|
+
# app_name: 'Api Test',
|
227
|
+
# aceess_token: '****',
|
228
|
+
# refresh_token: '****'
|
229
|
+
# )
|
230
|
+
# client.v1.hot_topics #=> [{ id: 1, ... }, ...]
|
231
|
+
def hot_topics(headers: nil, **query)
|
232
|
+
rest.get base_url.join('topics', 'hot').url, headers: headers, query: query
|
233
|
+
end
|
234
|
+
end
|
235
|
+
end
|
236
|
+
end
|
237
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Shikimori
|
4
|
+
module API
|
5
|
+
class V1
|
6
|
+
# Methods for the User images API
|
7
|
+
#
|
8
|
+
# @see https://shikimori.one/api/doc/1.0/user_images Shikimori's API documentation
|
9
|
+
module UserImages
|
10
|
+
# Create User image.
|
11
|
+
# Requires `comments` oauth scope
|
12
|
+
#
|
13
|
+
# @param image [File] Image file
|
14
|
+
# @param linked_type ['Comment'] Linking type
|
15
|
+
# @param headers [Hash] Request headers
|
16
|
+
# @param query [Hash] Query string parameters for request
|
17
|
+
#
|
18
|
+
# @return [Hash] Hash representing created user image
|
19
|
+
#
|
20
|
+
# @see https://shikimori.one/api/doc/1.0/user_images/create Shikimori's API documentation
|
21
|
+
# @example Create user's image
|
22
|
+
# client = Shikimori::API::Client.new(
|
23
|
+
# app_name: 'Api Test',
|
24
|
+
# aceess_token: '****',
|
25
|
+
# refresh_token: '****'
|
26
|
+
# )
|
27
|
+
# client.v1.create_user_image(File.open('/tmp/file.jpg'), linked_type: 'Comment')
|
28
|
+
def create_user_image(image, linked_type: nil, headers: nil, **query)
|
29
|
+
rest.post base_url.join('user_images').url,
|
30
|
+
{ 'image' => image, 'linked_type' => linked_type }.compact,
|
31
|
+
headers: headers, query: query, as_form: true
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,194 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Shikimori
|
4
|
+
module API
|
5
|
+
class V1
|
6
|
+
# Methods for the User rates API
|
7
|
+
#
|
8
|
+
# @see https://shikimori.one/api/doc/1.0/user_rates Shikimori's API documentation
|
9
|
+
module UserRates
|
10
|
+
# Get an user rate by id
|
11
|
+
#
|
12
|
+
# @param id [#to_s] user rate id
|
13
|
+
# @param headers [Hash] Request headers
|
14
|
+
# @param query [Hash] Query string parameters for request
|
15
|
+
#
|
16
|
+
# @return [Hash] Hash representing user rate
|
17
|
+
#
|
18
|
+
# @see https://shikimori.one/api/doc/1.0/user_rates/show Shikimori's API documentation
|
19
|
+
# @example Get user rate 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.user_rate(1) #=> { id: 1, ... }
|
26
|
+
#
|
27
|
+
# @deprecated Use {Shikimori::API::V2::UserRates#user_rate} instead
|
28
|
+
def user_rate(id, headers: nil, **query)
|
29
|
+
rest.get base_url.join('user_rates', id.to_s).url, headers: headers, query: query
|
30
|
+
end
|
31
|
+
|
32
|
+
# Create a user rate.
|
33
|
+
# Requires `user_rates` oauth scope
|
34
|
+
#
|
35
|
+
# @param user_rate [Hash] User rate data for creating
|
36
|
+
# @option user_rate [Integer] :user_id User id
|
37
|
+
# @option user_rate [Integer] :target_id Target id
|
38
|
+
# @option user_rate ['Anime', 'Manga'] :target_type Target type
|
39
|
+
# @option user_rate ["planned", "watching", "rewatching",
|
40
|
+
# "completed", "on_hold", "dropped"] :status Watching status
|
41
|
+
# @option user_rate [Numeric] :score Score
|
42
|
+
# @option user_rate [Numeric] :chapters Current chapter number
|
43
|
+
# @option user_rate [Numeric] :episodes Current episode number
|
44
|
+
# @option user_rate [Numeric] :volumes Current volume number
|
45
|
+
# @option user_rate [Numeric] :rewatches Count of rewatching
|
46
|
+
# @option user_rate [String] :text Rate text
|
47
|
+
# @param headers [Hash] Request headers
|
48
|
+
# @param query [Hash] Query string parameters for request
|
49
|
+
#
|
50
|
+
# @return [Hash] Hash representing created user rate
|
51
|
+
#
|
52
|
+
# @see https://shikimori.one/api/doc/1.0/user_rates/create Shikimori's API documentation
|
53
|
+
# @example Create a user rate
|
54
|
+
# client = Shikimori::API::Client.new(
|
55
|
+
# app_name: 'Api Test',
|
56
|
+
# aceess_token: '****',
|
57
|
+
# refresh_token: '****'
|
58
|
+
# )
|
59
|
+
# user_rate = {
|
60
|
+
# text: "text",
|
61
|
+
# user_id: 1,
|
62
|
+
# target_id: "41",
|
63
|
+
# target_type: "Anime"
|
64
|
+
# }
|
65
|
+
# client.v1.create_user_rate(user_rate)
|
66
|
+
#
|
67
|
+
# @deprecated Use {Shikimori::API::V2::UserRates#create_user_rate} instead
|
68
|
+
def create_user_rate(user_rate, headers: nil, **query)
|
69
|
+
rest.post base_url.join('user_rates').url, { user_rate: user_rate }, headers: headers, query: query
|
70
|
+
end
|
71
|
+
|
72
|
+
# Update a user rate.
|
73
|
+
# Requires `user_rates` oauth scope
|
74
|
+
#
|
75
|
+
# @param id [#to_s] User rate id
|
76
|
+
# @param user_rate [Hash] User rate data for creating
|
77
|
+
# @option user_rate ["planned", "watching", "rewatching",
|
78
|
+
# "completed", "on_hold", "dropped"] :status Watching status
|
79
|
+
# @option user_rate [Numeric] :score Score
|
80
|
+
# @option user_rate [Numeric] :chapters Current chapter number
|
81
|
+
# @option user_rate [Numeric] :episodes Current episode number
|
82
|
+
# @option user_rate [Numeric] :volumes Current volume number
|
83
|
+
# @option user_rate [Numeric] :rewatches Count of rewatching
|
84
|
+
# @option user_rate [String] :text Rate text
|
85
|
+
# @param headers [Hash] Request headers
|
86
|
+
# @param query [Hash] Query string parameters for request
|
87
|
+
#
|
88
|
+
# @return [Hash] Hash representing updated user rate
|
89
|
+
#
|
90
|
+
# @see https://shikimori.one/api/doc/1.0/user_rates/update Shikimori's API documentation
|
91
|
+
# @example Update a user rate text
|
92
|
+
# client = Shikimori::API::Client.new(
|
93
|
+
# app_name: 'Api Test',
|
94
|
+
# aceess_token: '****',
|
95
|
+
# refresh_token: '****'
|
96
|
+
# )
|
97
|
+
# user_rate = {
|
98
|
+
# text: "text"
|
99
|
+
# }
|
100
|
+
# client.v1.update_user_rate(1, user_rate)
|
101
|
+
#
|
102
|
+
# @deprecated Use {Shikimori::API::V2::UserRates#update_user_rate} instead
|
103
|
+
def update_user_rate(id, user_rate, headers: nil, **query)
|
104
|
+
rest.put base_url.join('user_rates', id.to_s).url, { user_rate: user_rate }, headers: headers, query: query
|
105
|
+
end
|
106
|
+
|
107
|
+
# Delete user rate
|
108
|
+
#
|
109
|
+
# @param id [#to_s] User rate id
|
110
|
+
# @param headers [Hash] Request headers
|
111
|
+
# @param query [Hash] Query string parameters for request
|
112
|
+
#
|
113
|
+
# @return [Boolean] True if deletion successful, false otherwise.
|
114
|
+
#
|
115
|
+
# @see https://shikimori.one/api/doc/1.0/user_rates/destroy Shikimori's API documentation
|
116
|
+
# @example Delete user rate
|
117
|
+
# client = Shikimori::API::Client.new(
|
118
|
+
# app_name: 'Api Test',
|
119
|
+
# aceess_token: '****',
|
120
|
+
# refresh_token: '****'
|
121
|
+
# )
|
122
|
+
# client.v1.delete_user_rate(1)
|
123
|
+
#
|
124
|
+
# @deprecated Use {Shikimori::API::V2::UserRates#delete_user_rate} instead
|
125
|
+
def delete_user_rate(id, headers: nil, **query)
|
126
|
+
rest.delete base_url.join('user_rates', id.to_s).url, headers: headers, query: query
|
127
|
+
end
|
128
|
+
|
129
|
+
# Increment episodes/chapters by 1
|
130
|
+
# Requires `user_rates` oauth scope
|
131
|
+
#
|
132
|
+
# @param id [#to_s] User rate ID
|
133
|
+
# @param headers [Hash] Request headers
|
134
|
+
# @param query [Hash] Query string parameters for request
|
135
|
+
#
|
136
|
+
# @return [Hash] Hash representing created user rate
|
137
|
+
#
|
138
|
+
# @see https://shikimori.one/api/doc/1.0/user_rates/increment Shikimori's API documentation
|
139
|
+
# @example Increment episodes/chapters by 1
|
140
|
+
# client = Shikimori::API::Client.new(
|
141
|
+
# app_name: 'Api Test',
|
142
|
+
# aceess_token: '****',
|
143
|
+
# refresh_token: '****'
|
144
|
+
# )
|
145
|
+
# client.v1.increment_user_rate(1)
|
146
|
+
#
|
147
|
+
# @deprecated Use {Shikimori::API::V2::UserRates#increment_user_rate} instead
|
148
|
+
def increment_user_rate(id, headers: nil, **query)
|
149
|
+
rest.post base_url.join('user_rates', id.to_s, 'increment').url, {}, headers: headers, query: query
|
150
|
+
end
|
151
|
+
|
152
|
+
# Delete entire user rates and history
|
153
|
+
#
|
154
|
+
# @param type ['anime', 'manga'] Type of cleanup
|
155
|
+
# @param headers [Hash] Request headers
|
156
|
+
# @param query [Hash] Query string parameters for request
|
157
|
+
#
|
158
|
+
# @return [Boolean] True if deletion successful, false otherwise.
|
159
|
+
#
|
160
|
+
# @see https://shikimori.one/api/doc/1.0/user_rates/cleanup Shikimori's API documentation
|
161
|
+
# @example Delete entire user rates and history
|
162
|
+
# client = Shikimori::API::Client.new(
|
163
|
+
# app_name: 'Api Test',
|
164
|
+
# aceess_token: '****',
|
165
|
+
# refresh_token: '****'
|
166
|
+
# )
|
167
|
+
# client.v1.cleanup_user_rates('manga')
|
168
|
+
def cleanup_user_rates(type, headers: nil, **query)
|
169
|
+
rest.delete base_url.join('user_rates', type.to_s, 'cleanup').url, headers: headers, query: query
|
170
|
+
end
|
171
|
+
|
172
|
+
# Reset all user scores to 0
|
173
|
+
#
|
174
|
+
# @param type ['anime', 'manga'] Type of reset
|
175
|
+
# @param headers [Hash] Request headers
|
176
|
+
# @param query [Hash] Query string parameters for request
|
177
|
+
#
|
178
|
+
# @return [Boolean] True if deletion successful, false otherwise.
|
179
|
+
#
|
180
|
+
# @see https://shikimori.one/api/doc/1.0/user_rates/reset Shikimori's API documentation
|
181
|
+
# @example Reset all user scores to 0
|
182
|
+
# client = Shikimori::API::Client.new(
|
183
|
+
# app_name: 'Api Test',
|
184
|
+
# aceess_token: '****',
|
185
|
+
# refresh_token: '****'
|
186
|
+
# )
|
187
|
+
# client.v1.reset_user_rates('manga')
|
188
|
+
def reset_user_rates(type, headers: nil, **query)
|
189
|
+
rest.delete base_url.join('user_rates', type.to_s, 'reset').url, headers: headers, query: query
|
190
|
+
end
|
191
|
+
end
|
192
|
+
end
|
193
|
+
end
|
194
|
+
end
|