kudago-client 0.8.0 → 1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +14 -0
- data/README.md +96 -0
- data/lib/kudago_client/client.rb +60 -38
- data/lib/kudago_client/connection.rb +4 -0
- data/lib/kudago_client/entities/agent.rb +8 -1
- data/lib/kudago_client/entities_list/base_list.rb +2 -2
- data/lib/kudago_client/requests/agent_request.rb +1 -1
- data/lib/kudago_client/requests/base_request.rb +3 -9
- data/lib/kudago_client/requests/event_category_request.rb +1 -3
- data/lib/kudago_client/requests/event_of_the_day_request.rb +12 -5
- data/lib/kudago_client/requests/event_request.rb +2 -2
- data/lib/kudago_client/requests/list_request.rb +2 -2
- data/lib/kudago_client/requests/location_request.rb +1 -3
- data/lib/kudago_client/requests/movie_request.rb +3 -3
- data/lib/kudago_client/requests/movie_showing_request.rb +1 -1
- data/lib/kudago_client/requests/news_request.rb +2 -2
- data/lib/kudago_client/requests/place_category_request.rb +1 -3
- data/lib/kudago_client/requests/place_request.rb +3 -4
- data/lib/kudago_client/requests/role_request.rb +1 -1
- data/lib/kudago_client/requests/search_request.rb +1 -1
- data/lib/kudago_client/response.rb +43 -0
- data/lib/kudago_client/version.rb +5 -0
- data/lib/kudago_client.rb +0 -1
- data/to_do.md +6 -0
- metadata +33 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: a064b20ce3e42cac11a30427e80e410ba5cba33d4f54daeba36e6565cdc4a3da
|
|
4
|
+
data.tar.gz: 6f7fee6b4cf5fd59973546e25069d6d64df7f74bd18434e1cc9baec3024e9b86
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 556dcfc8a75ed780da3524e9169fa0638cc22ab658fed50a425efa28cf0d00b3ad6fa10a4162af820b6a5021a9dc15c978e8bcc7ba3a1b26c192ef587b06cd66
|
|
7
|
+
data.tar.gz: da9ee8fb91f303efade8b47d9c145ab999b6c8094080c525fd0c807e7955f79768840629e58b7a02119def3e4bcd1d7aa29192f0a81ce07e0bd52f40466b9ae7
|
data/CHANGELOG.md
CHANGED
|
@@ -14,3 +14,17 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/)
|
|
|
14
14
|
### Added
|
|
15
15
|
|
|
16
16
|
- all requests from [kudago api](https://docs.kudago.com/api/#)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
## [1.0] - 2025.09.06
|
|
20
|
+
|
|
21
|
+
### Added
|
|
22
|
+
|
|
23
|
+
- client's methods to get next/previous page for list
|
|
24
|
+
- setting for default language for client
|
|
25
|
+
- dependency of activesupport
|
|
26
|
+
- Entities::Agent#participations returns `Participation` struct
|
|
27
|
+
|
|
28
|
+
### Changed
|
|
29
|
+
|
|
30
|
+
- CI split into lint and test
|
data/README.md
CHANGED
|
@@ -1,11 +1,107 @@
|
|
|
1
1
|
# KudagoClient
|
|
2
2
|
|
|
3
|
+
API client for [kudago api](https://docs.kudago.com/api/#)
|
|
4
|
+
|
|
3
5
|
## Installation
|
|
4
6
|
|
|
7
|
+
Just add this line to your Gemfile
|
|
8
|
+
|
|
9
|
+
```ruby
|
|
10
|
+
gem "kudago-client"
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
And then (I'll fix it, like autoload or smt)
|
|
14
|
+
```ruby
|
|
15
|
+
require "kudago_client"
|
|
16
|
+
```
|
|
17
|
+
|
|
5
18
|
## Usage
|
|
6
19
|
|
|
20
|
+
This is an open API, so no key is required
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
### Client
|
|
24
|
+
|
|
25
|
+
id/slug is required, params isn't required
|
|
26
|
+
|
|
27
|
+
```ruby
|
|
28
|
+
client = KudagoClient::Client.new(lang: "ru")
|
|
29
|
+
|
|
30
|
+
# get entity
|
|
31
|
+
client.agent(agent_id, {}) # KudagoClient::Entities::Agent
|
|
32
|
+
client.location(slug, {}) # KudagoClient::Entities::Location
|
|
33
|
+
client.role(role_id, {}) # KudagoClient::Entities::Role
|
|
34
|
+
client.event_category(event_category_id, {}) # KudagoClient::Entities::EventCategory
|
|
35
|
+
client.place_category(place_category_id, {}) # KudagoClient::Entities::PlaceCategory
|
|
36
|
+
client.movie(movie_id, {}) # KudagoClient::Entities::Movie
|
|
37
|
+
client.showing(showing_id, {}) # KudagoClient::Entities::MovieShowing
|
|
38
|
+
client.place(place_id, {}) # KudagoClient::Entities::Place
|
|
39
|
+
client.piece_news(news_id, {}) # KudagoClient::Entities::News
|
|
40
|
+
client.news_comment(news_id, comment_id, {}) # KudagoClient::Entities::Comment
|
|
41
|
+
client.event(event_id, {}) # KudagoClient::Entities::Event
|
|
42
|
+
client.event_comment(event_id, comment_id, {}) # KudagoClient::Entities::Comment
|
|
43
|
+
client.list(list_id, {}) # KudagoClient::Entities::List
|
|
44
|
+
client.list_comment(list_id, comment_id, {}) # KudagoClient::Entities::Comment
|
|
45
|
+
|
|
46
|
+
# get entity list
|
|
47
|
+
client.agents({}) # KudagoClient::EntitiesList::AgentList
|
|
48
|
+
client.locations({}) # KudagoClient::EntitiesList::LocationList
|
|
49
|
+
client.roles({}) # KudagoClient::EntitiesList::RoleList
|
|
50
|
+
client.event_categories({}) # KudagoClient::EntitiesList::EventCategoriesList
|
|
51
|
+
client.place_categories({}) # KudagoClient::EntitiesList::PlaceCategoriesList
|
|
52
|
+
client.movies({}) # KudagoClient::EntitiesList::MovieList
|
|
53
|
+
client.movie_comments(movie_id, {}) # KudagoClient::EntitiesList::CommentList
|
|
54
|
+
client.showings({}) # KudagoClient::EntitiesList::MovieShowingList
|
|
55
|
+
client.movie_showings(movie_id, {}) # KudagoClient::EntitiesList::MovieShowingList
|
|
56
|
+
client.places({}) # KudagoClient::EntitiesList::PlaceList
|
|
57
|
+
client.place_comments(place_id, {}) # KudagoClient::EntitiesList::CommentList
|
|
58
|
+
client.news({}) # KudagoClient::EntitiesList::NewsList
|
|
59
|
+
client.news_comments(news_id, {}) # KudagoClient::EntitiesList::CommentList
|
|
60
|
+
client.events({}) # KudagoClient::EntitiesList::EventList
|
|
61
|
+
client.event_comments(event_id, {}) # KudagoClient::EntitiesList::CommentList
|
|
62
|
+
client.events_of_the_day({}) # KudagoClient::EntitiesList::EventList
|
|
63
|
+
client.lists({}) # KudagoClient::EntitiesList::ListList
|
|
64
|
+
client.list_comments(list_id, {}) # KudagoClient::EntitiesList::CommentList
|
|
65
|
+
client.search(query, {}) # KudagoClient::EntitiesList::MultipleList
|
|
66
|
+
|
|
67
|
+
# get another page of list
|
|
68
|
+
client.next_page(list, {})
|
|
69
|
+
client.previous_page(list, {})
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
### Lists
|
|
74
|
+
|
|
75
|
+
```ruby
|
|
76
|
+
list = KudagoClient::EntitiesList::BaseList.new
|
|
77
|
+
|
|
78
|
+
list.count # get count of all items
|
|
79
|
+
list.next_url # url to next page
|
|
80
|
+
list.previous_url # url to previous page
|
|
81
|
+
list.items # items on page
|
|
82
|
+
list.lang # lang of request
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
### Error
|
|
87
|
+
|
|
88
|
+
```ruby
|
|
89
|
+
begin
|
|
90
|
+
KudagoClient::Client.new.search("new", {page: 999}) # KudagoClient::Error
|
|
91
|
+
rescue KudagoClient::Error => error
|
|
92
|
+
error.message # "Неправильная страница"
|
|
93
|
+
error.status # 404
|
|
94
|
+
error.reason # "Not Found"
|
|
95
|
+
end
|
|
96
|
+
```
|
|
97
|
+
|
|
7
98
|
## Development
|
|
8
99
|
|
|
100
|
+
You can contribute to this gem :)
|
|
101
|
+
|
|
102
|
+
Just fork the repo and then make PR
|
|
103
|
+
|
|
104
|
+
I wrote a simple [To Do list](./to_do.md)
|
|
9
105
|
|
|
10
106
|
## Contributing
|
|
11
107
|
|
data/lib/kudago_client/client.rb
CHANGED
|
@@ -13,6 +13,7 @@ require_relative "requests/event_request"
|
|
|
13
13
|
require_relative "requests/event_of_the_day_request"
|
|
14
14
|
require_relative "requests/list_request"
|
|
15
15
|
require_relative "requests/search_request"
|
|
16
|
+
require_relative "requests/base_request"
|
|
16
17
|
|
|
17
18
|
require_relative "entities/location"
|
|
18
19
|
require_relative "entities/agent"
|
|
@@ -43,182 +44,203 @@ require_relative "entities_list/multiple_list"
|
|
|
43
44
|
|
|
44
45
|
module KudagoClient
|
|
45
46
|
class Client
|
|
46
|
-
attr_accessor :
|
|
47
|
+
attr_accessor :lang
|
|
47
48
|
|
|
48
|
-
|
|
49
|
+
class << self
|
|
50
|
+
attr_accessor :default_lang
|
|
49
51
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
52
|
+
def config &blk
|
|
53
|
+
blk.call(self) if block_given?
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def initialize(lang: nil)
|
|
58
|
+
@lang = lang || self.class.default_lang
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
# PAGE METHODS
|
|
62
|
+
|
|
63
|
+
def next_page(list, params = {})
|
|
64
|
+
return nil if list.next_url.nil?
|
|
65
|
+
|
|
66
|
+
res = Requests::BaseRequest.get(list.next_url, params)
|
|
67
|
+
list.class.new(**res.data, lang: entity_lang(params))
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def previous_page(list, params = {})
|
|
71
|
+
return nil if list.previous_url.nil?
|
|
72
|
+
|
|
73
|
+
res = Requests::BaseRequest.get(list.previous_url, params)
|
|
74
|
+
list.class.new(**res.data, lang: entity_lang(params))
|
|
53
75
|
end
|
|
54
76
|
|
|
55
77
|
# ENTITY METHODS
|
|
56
78
|
|
|
57
79
|
def agent(agent_id, params = {})
|
|
58
80
|
res = Requests::AgentRequest.find(agent_id, params)
|
|
59
|
-
KudagoClient::Entities::Agent.new(**res, lang: entity_lang(params))
|
|
81
|
+
KudagoClient::Entities::Agent.new(**res.data, lang: entity_lang(params))
|
|
60
82
|
end
|
|
61
83
|
|
|
62
84
|
def location(slug, params = {})
|
|
63
85
|
res = Requests::LocationRequest.find(slug, params)
|
|
64
|
-
KudagoClient::Entities::Location.new(**res, lang: entity_lang(params))
|
|
86
|
+
KudagoClient::Entities::Location.new(**res.data, lang: entity_lang(params))
|
|
65
87
|
end
|
|
66
88
|
|
|
67
89
|
def role(role_id, params = {})
|
|
68
90
|
res = Requests::RoleRequest.find(role_id, params)
|
|
69
|
-
KudagoClient::Entities::Role.new(**res, lang: entity_lang(params))
|
|
91
|
+
KudagoClient::Entities::Role.new(**res.data, lang: entity_lang(params))
|
|
70
92
|
end
|
|
71
93
|
|
|
72
94
|
def event_category(event_category_id, params = {})
|
|
73
95
|
res = Requests::EventCategoryRequest.find(event_category_id, params)
|
|
74
|
-
KudagoClient::Entities::EventCategory.new(**res, lang: entity_lang(params))
|
|
96
|
+
KudagoClient::Entities::EventCategory.new(**res.data, lang: entity_lang(params))
|
|
75
97
|
end
|
|
76
98
|
|
|
77
99
|
def place_category(place_category_id, params = {})
|
|
78
100
|
res = Requests::PlaceCategoryRequest.find(place_category_id, params)
|
|
79
|
-
KudagoClient::Entities::PlaceCategory.new(**res, lang: entity_lang(params))
|
|
101
|
+
KudagoClient::Entities::PlaceCategory.new(**res.data, lang: entity_lang(params))
|
|
80
102
|
end
|
|
81
103
|
|
|
82
104
|
def movie(movie_id, params = {})
|
|
83
105
|
res = Requests::MovieRequest.find(movie_id, params)
|
|
84
|
-
KudagoClient::Entities::Movie.new(**res, lang: entity_lang(params))
|
|
106
|
+
KudagoClient::Entities::Movie.new(**res.data, lang: entity_lang(params))
|
|
85
107
|
end
|
|
86
108
|
|
|
87
109
|
def showing(showing_id, params = {})
|
|
88
110
|
res = Requests::MovieShowingRequest.find(showing_id, params)
|
|
89
|
-
KudagoClient::Entities::MovieShowing.new(**res, lang: entity_lang(params))
|
|
111
|
+
KudagoClient::Entities::MovieShowing.new(**res.data, lang: entity_lang(params))
|
|
90
112
|
end
|
|
91
113
|
|
|
92
114
|
def place(place_id, params = {})
|
|
93
115
|
res = Requests::PlaceRequest.find(place_id, params)
|
|
94
|
-
KudagoClient::Entities::Place.new(**res, lang: entity_lang(params))
|
|
116
|
+
KudagoClient::Entities::Place.new(**res.data, lang: entity_lang(params))
|
|
95
117
|
end
|
|
96
118
|
|
|
97
119
|
def piece_news(news_id, params = {})
|
|
98
120
|
res = Requests::NewsRequest.find(news_id, params)
|
|
99
|
-
KudagoClient::Entities::News.new(**res, lang: entity_lang(params))
|
|
121
|
+
KudagoClient::Entities::News.new(**res.data, lang: entity_lang(params))
|
|
100
122
|
end
|
|
101
123
|
|
|
102
124
|
def news_comment(news_id, comment_id, params = {})
|
|
103
125
|
res = Requests::NewsRequest.comment(news_id, comment_id, params)
|
|
104
|
-
KudagoClient::Entities::Comment.new(**res, lang: entity_lang(params))
|
|
126
|
+
KudagoClient::Entities::Comment.new(**res.data, lang: entity_lang(params))
|
|
105
127
|
end
|
|
106
128
|
|
|
107
129
|
def event(event_id, params = {})
|
|
108
130
|
res = Requests::EventRequest.find(event_id, params)
|
|
109
|
-
KudagoClient::Entities::Event.new(**res, lang: entity_lang(params))
|
|
131
|
+
KudagoClient::Entities::Event.new(**res.data, lang: entity_lang(params))
|
|
110
132
|
end
|
|
111
133
|
|
|
112
134
|
def event_comment(event_id, comment_id, params = {})
|
|
113
135
|
res = Requests::EventRequest.comment(event_id, comment_id, params)
|
|
114
|
-
KudagoClient::Entities::Comment.new(**res, lang: entity_lang(params))
|
|
136
|
+
KudagoClient::Entities::Comment.new(**res.data, lang: entity_lang(params))
|
|
115
137
|
end
|
|
116
138
|
|
|
117
139
|
def list(list_id, params = {})
|
|
118
140
|
res = Requests::ListRequest.find(list_id, params)
|
|
119
|
-
KudagoClient::Entities::List.new(**res, lang: entity_lang(params))
|
|
141
|
+
KudagoClient::Entities::List.new(**res.data, lang: entity_lang(params))
|
|
120
142
|
end
|
|
121
143
|
|
|
122
144
|
def list_comment(list_id, comment_id, params = {})
|
|
123
145
|
res = Requests::ListRequest.comment(list_id, comment_id, params)
|
|
124
|
-
KudagoClient::Entities::Comment.new(**res, lang: entity_lang(params))
|
|
146
|
+
KudagoClient::Entities::Comment.new(**res.data, lang: entity_lang(params))
|
|
125
147
|
end
|
|
126
148
|
|
|
127
149
|
# LIST METHODS
|
|
128
150
|
|
|
129
151
|
def agents(params = {})
|
|
130
152
|
res = Requests::AgentRequest.list(params)
|
|
131
|
-
KudagoClient::EntitiesList::AgentList.new(**res, lang: entity_lang(params))
|
|
153
|
+
KudagoClient::EntitiesList::AgentList.new(**res.data, lang: entity_lang(params))
|
|
132
154
|
end
|
|
133
155
|
|
|
134
156
|
def locations(params = {})
|
|
135
157
|
res = Requests::LocationRequest.list(params)
|
|
136
|
-
KudagoClient::EntitiesList::LocationList.new(**res, lang: entity_lang(params))
|
|
158
|
+
KudagoClient::EntitiesList::LocationList.new(**res.data, lang: entity_lang(params))
|
|
137
159
|
end
|
|
138
160
|
|
|
139
161
|
def roles(params = {})
|
|
140
162
|
res = Requests::RoleRequest.list(params)
|
|
141
|
-
KudagoClient::EntitiesList::RoleList.new(**res, lang: entity_lang(params))
|
|
163
|
+
KudagoClient::EntitiesList::RoleList.new(**res.data, lang: entity_lang(params))
|
|
142
164
|
end
|
|
143
165
|
|
|
144
166
|
def event_categories(params = {})
|
|
145
167
|
res = Requests::EventCategoryRequest.list(params)
|
|
146
|
-
KudagoClient::EntitiesList::EventCategoriesList.new(**res, lang: entity_lang(params))
|
|
168
|
+
KudagoClient::EntitiesList::EventCategoriesList.new(**res.data, lang: entity_lang(params))
|
|
147
169
|
end
|
|
148
170
|
|
|
149
171
|
def place_categories(params = {})
|
|
150
172
|
res = Requests::PlaceCategoryRequest.list(params)
|
|
151
|
-
KudagoClient::EntitiesList::PlaceCategoriesList.new(**res, lang: entity_lang(params))
|
|
173
|
+
KudagoClient::EntitiesList::PlaceCategoriesList.new(**res.data, lang: entity_lang(params))
|
|
152
174
|
end
|
|
153
175
|
|
|
154
176
|
def movies(params = {})
|
|
155
177
|
res = Requests::MovieRequest.list(params)
|
|
156
|
-
KudagoClient::EntitiesList::MovieList.new(**res, lang: entity_lang(params))
|
|
178
|
+
KudagoClient::EntitiesList::MovieList.new(**res.data, lang: entity_lang(params))
|
|
157
179
|
end
|
|
158
180
|
|
|
159
181
|
def movie_comments(movie_id, params = {})
|
|
160
182
|
res = Requests::MovieRequest.comments(movie_id, params)
|
|
161
|
-
KudagoClient::EntitiesList::CommentList.new(**res, lang: entity_lang(params))
|
|
183
|
+
KudagoClient::EntitiesList::CommentList.new(**res.data, lang: entity_lang(params))
|
|
162
184
|
end
|
|
163
185
|
|
|
164
186
|
def showings(params = {})
|
|
165
187
|
res = Requests::MovieShowingRequest.list(params)
|
|
166
|
-
KudagoClient::EntitiesList::MovieShowingList.new(**res, lang: entity_lang(params))
|
|
188
|
+
KudagoClient::EntitiesList::MovieShowingList.new(**res.data, lang: entity_lang(params))
|
|
167
189
|
end
|
|
168
190
|
|
|
169
191
|
def movie_showings(movie_id, params = {})
|
|
170
192
|
res = Requests::MovieRequest.showings(movie_id, params)
|
|
171
|
-
KudagoClient::EntitiesList::MovieShowingList.new(**res, item_params: {movie: {id: movie_id}}, lang: entity_lang(params))
|
|
193
|
+
KudagoClient::EntitiesList::MovieShowingList.new(**res.data, item_params: {movie: {id: movie_id}}, lang: entity_lang(params))
|
|
172
194
|
end
|
|
173
195
|
|
|
174
196
|
def places(params = {})
|
|
175
197
|
res = Requests::PlaceRequest.list(params)
|
|
176
|
-
KudagoClient::EntitiesList::PlaceList.new(**res, lang: entity_lang(params))
|
|
198
|
+
KudagoClient::EntitiesList::PlaceList.new(**res.data, lang: entity_lang(params))
|
|
177
199
|
end
|
|
178
200
|
|
|
179
201
|
def place_comments(place_id, params = {})
|
|
180
202
|
res = Requests::PlaceRequest.comments(place_id, params)
|
|
181
|
-
KudagoClient::EntitiesList::CommentList.new(**res, lang: entity_lang(params))
|
|
203
|
+
KudagoClient::EntitiesList::CommentList.new(**res.data, lang: entity_lang(params))
|
|
182
204
|
end
|
|
183
205
|
|
|
184
206
|
def news(params = {})
|
|
185
207
|
res = Requests::NewsRequest.list(params)
|
|
186
|
-
KudagoClient::EntitiesList::NewsList.new(**res, lang: entity_lang(params))
|
|
208
|
+
KudagoClient::EntitiesList::NewsList.new(**res.data, lang: entity_lang(params))
|
|
187
209
|
end
|
|
188
210
|
|
|
189
211
|
def news_comments(news_id, params = {})
|
|
190
212
|
res = Requests::NewsRequest.comments(news_id, params)
|
|
191
|
-
KudagoClient::EntitiesList::CommentList.new(**res, lang: entity_lang(params))
|
|
213
|
+
KudagoClient::EntitiesList::CommentList.new(**res.data, lang: entity_lang(params))
|
|
192
214
|
end
|
|
193
215
|
|
|
194
216
|
def events(params = {})
|
|
195
217
|
res = Requests::EventRequest.list(params)
|
|
196
|
-
KudagoClient::EntitiesList::EventList.new(**res, lang: entity_lang(params))
|
|
218
|
+
KudagoClient::EntitiesList::EventList.new(**res.data, lang: entity_lang(params))
|
|
197
219
|
end
|
|
198
220
|
|
|
199
221
|
def event_comments(event_id, params = {})
|
|
200
222
|
res = Requests::EventRequest.comments(event_id, params)
|
|
201
|
-
KudagoClient::EntitiesList::CommentList.new(**res, lang: entity_lang(params))
|
|
223
|
+
KudagoClient::EntitiesList::CommentList.new(**res.data, lang: entity_lang(params))
|
|
202
224
|
end
|
|
203
225
|
|
|
204
226
|
def events_of_the_day(params = {})
|
|
205
227
|
res = Requests::EventOfTheDayRequest.list(params)
|
|
206
|
-
KudagoClient::EntitiesList::EventList.new(**res, lang: entity_lang(params))
|
|
228
|
+
KudagoClient::EntitiesList::EventList.new(**res.data, lang: entity_lang(params))
|
|
207
229
|
end
|
|
208
230
|
|
|
209
231
|
def lists(params = {})
|
|
210
232
|
res = Requests::ListRequest.list(params)
|
|
211
|
-
KudagoClient::EntitiesList::ListList.new(**res, lang: entity_lang(params))
|
|
233
|
+
KudagoClient::EntitiesList::ListList.new(**res.data, lang: entity_lang(params))
|
|
212
234
|
end
|
|
213
235
|
|
|
214
236
|
def list_comments(list_id, params = {})
|
|
215
237
|
res = Requests::ListRequest.comments(list_id, params)
|
|
216
|
-
KudagoClient::EntitiesList::CommentList.new(**res, lang: entity_lang(params))
|
|
238
|
+
KudagoClient::EntitiesList::CommentList.new(**res.data, lang: entity_lang(params))
|
|
217
239
|
end
|
|
218
240
|
|
|
219
241
|
def search(query, params = {})
|
|
220
242
|
res = Requests::SearchRequest.search(query, params)
|
|
221
|
-
KudagoClient::EntitiesList::MultipleList.new(**res, lang: entity_lang(params))
|
|
243
|
+
KudagoClient::EntitiesList::MultipleList.new(**res.data, lang: entity_lang(params))
|
|
222
244
|
end
|
|
223
245
|
|
|
224
246
|
private
|
|
@@ -20,6 +20,8 @@ module KudagoClient
|
|
|
20
20
|
# rank - рейтинг объекта
|
|
21
21
|
# participations - список участий агента
|
|
22
22
|
|
|
23
|
+
Participation = Struct.new(:role, :event)
|
|
24
|
+
|
|
23
25
|
attr_reader :lang, :id, :title, :slug, :favorites_count, :comments_count, :description, :body_text,
|
|
24
26
|
:site_url, :disable_comments, :ctype, :images, :agent_type, :rank, :participations, :text_format, :is_stub
|
|
25
27
|
|
|
@@ -39,7 +41,6 @@ module KudagoClient
|
|
|
39
41
|
@disable_comments = disable_comments
|
|
40
42
|
@favorites_count = favorites_count
|
|
41
43
|
@is_stub = is_stub
|
|
42
|
-
@participations = participations # participant entity ???
|
|
43
44
|
@rank = rank
|
|
44
45
|
@site_url = site_url
|
|
45
46
|
@slug = slug
|
|
@@ -49,6 +50,12 @@ module KudagoClient
|
|
|
49
50
|
@images = images&.map do |image|
|
|
50
51
|
KudagoClient::Entities::Image.new(image: image[:image], thumbnails: image[:thumbnails], source: image[:source])
|
|
51
52
|
end
|
|
53
|
+
@participations = participations&.map do |participation|
|
|
54
|
+
Participation.new(
|
|
55
|
+
Role.new(**participation[:role], lang: lang),
|
|
56
|
+
(participation[:item][:ctype] == "event") ? Event.new(**participation[:item].except(:ctype), lang: lang) : nil
|
|
57
|
+
)
|
|
58
|
+
end
|
|
52
59
|
end
|
|
53
60
|
end
|
|
54
61
|
end
|
|
@@ -5,8 +5,8 @@ module KudagoClient
|
|
|
5
5
|
|
|
6
6
|
def initialize(count:, next_url:, previous_url:, results:, lang: "ru", item_params: {})
|
|
7
7
|
@count = count
|
|
8
|
-
@
|
|
9
|
-
@
|
|
8
|
+
@next_url = next_url
|
|
9
|
+
@previous_url = previous_url
|
|
10
10
|
@lang = lang
|
|
11
11
|
|
|
12
12
|
@items = results.map do |item|
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
require_relative "../connection"
|
|
2
2
|
require_relative "../error"
|
|
3
|
+
require_relative "../response"
|
|
3
4
|
|
|
4
|
-
require "active_support/core_ext/hash"
|
|
5
|
+
require "active_support/core_ext/hash/slice"
|
|
5
6
|
|
|
6
7
|
module KudagoClient
|
|
7
8
|
module Requests
|
|
@@ -10,7 +11,7 @@ module KudagoClient
|
|
|
10
11
|
response = connection.get(path, params)
|
|
11
12
|
|
|
12
13
|
if response.success?
|
|
13
|
-
response.body
|
|
14
|
+
Response.new(response.body)
|
|
14
15
|
else
|
|
15
16
|
message = response.body.is_a?(String) ? [response.reason_phrase, response.status].join(" ") : response.body[:detail]
|
|
16
17
|
raise KudagoClient::Error.new(message:, status: response.status, reason: response.reason_phrase)
|
|
@@ -22,13 +23,6 @@ module KudagoClient
|
|
|
22
23
|
def self.connection
|
|
23
24
|
@@connection ||= Connection.connection
|
|
24
25
|
end
|
|
25
|
-
|
|
26
|
-
def self.parse_response_urls(res)
|
|
27
|
-
res[:next_url] = res.delete :next
|
|
28
|
-
res[:previous_url] = res.delete :previous
|
|
29
|
-
|
|
30
|
-
res
|
|
31
|
-
end
|
|
32
26
|
end
|
|
33
27
|
end
|
|
34
28
|
end
|
|
@@ -9,9 +9,7 @@ module KudagoClient
|
|
|
9
9
|
|
|
10
10
|
def self.list(params = {})
|
|
11
11
|
params.slice!(:lang, :fields, :order_by)
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
parse_response_urls({results: res, count: res.size})
|
|
12
|
+
get(PATH, params)
|
|
15
13
|
end
|
|
16
14
|
|
|
17
15
|
def self.find(event_category_id, params = {})
|
|
@@ -12,11 +12,18 @@ module KudagoClient
|
|
|
12
12
|
params.slice!(:lang, :page, :page_size, :fields, :expand, :text_format, :location, :date)
|
|
13
13
|
res = get(PATH, params)
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
15
|
+
# looks bad a little :(
|
|
16
|
+
results = res.data[:results]
|
|
17
|
+
res.data[:results] =
|
|
18
|
+
if results.nil?
|
|
19
|
+
[]
|
|
20
|
+
else
|
|
21
|
+
res.data[:results] = res.data[:results].map do |event_data|
|
|
22
|
+
parse_event_data(event_data)
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
res
|
|
20
27
|
end
|
|
21
28
|
|
|
22
29
|
private_class_method
|
|
@@ -11,7 +11,7 @@ module KudagoClient
|
|
|
11
11
|
params.slice!(:lang, :page, :page_size, :fields, :expand, :order_by, :text_format, :ids, :location,
|
|
12
12
|
:actual_since, :actual_until, :place_id, :parent_id, :is_free, :categories, :tags, :lon, :lat, :radius)
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
get(PATH, params)
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
def self.find(event_id, params = {})
|
|
@@ -21,7 +21,7 @@ module KudagoClient
|
|
|
21
21
|
|
|
22
22
|
def self.comments(event_id, params = {})
|
|
23
23
|
params.slice!(:lang, :page, :page_size, :fields, :order_by, :ids)
|
|
24
|
-
|
|
24
|
+
get("#{PATH}#{event_id}/comments/", params)
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
def self.comment(event_id, comment_id, params = {})
|
|
@@ -9,7 +9,7 @@ module KudagoClient
|
|
|
9
9
|
|
|
10
10
|
def self.list(params = {})
|
|
11
11
|
params.slice!(:lang, :page, :page_size, :fields, :expand, :order_by, :text_format, :ids, :tags, :location)
|
|
12
|
-
|
|
12
|
+
get(PATH, params)
|
|
13
13
|
end
|
|
14
14
|
|
|
15
15
|
def self.find(list_id, params = {})
|
|
@@ -19,7 +19,7 @@ module KudagoClient
|
|
|
19
19
|
|
|
20
20
|
def self.comments(list_id, params = {})
|
|
21
21
|
params.slice!(:lang, :page, :page_size, :fields, :order_by, :ids)
|
|
22
|
-
|
|
22
|
+
get("#{PATH}#{list_id}/comments/", params)
|
|
23
23
|
end
|
|
24
24
|
|
|
25
25
|
def self.comment(list_id, comment_id, params = {})
|
|
@@ -11,7 +11,7 @@ module KudagoClient
|
|
|
11
11
|
params.slice!(:lang, :page, :page_size, :fields, :expand, :order_by, :text_format, :ids, :tags,
|
|
12
12
|
:location, :premiering_in_location, :is_free, :place_id, :actual_since, :actual_until)
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
get(PATH, params)
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
def self.find(movie_id, params = {})
|
|
@@ -23,12 +23,12 @@ module KudagoClient
|
|
|
23
23
|
params.slice!(:lang, :page, :page_size, :fields, :expand, :order_by, :location,
|
|
24
24
|
:actual_since, :actual_until, :place, :is_free)
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
get("#{PATH}#{movie_id}/showings/", params)
|
|
27
27
|
end
|
|
28
28
|
|
|
29
29
|
def self.comments(movie_id, params = {})
|
|
30
30
|
params.slice!(:lang, :page, :page_size, :fields, :order_by, :ids)
|
|
31
|
-
|
|
31
|
+
get("#{PATH}#{movie_id}/comments/", params)
|
|
32
32
|
end
|
|
33
33
|
end
|
|
34
34
|
end
|
|
@@ -11,7 +11,7 @@ module KudagoClient
|
|
|
11
11
|
params.slice!(:lang, :page, :page_size, :fields, :expand, :order_by, :ids,
|
|
12
12
|
:location, :actual_since, :actual_until, :place_id, :is_free)
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
get(PATH, params)
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
def self.find(showing_id, params = {})
|
|
@@ -11,7 +11,7 @@ module KudagoClient
|
|
|
11
11
|
params.slice!(:lang, :page, :page_size, :fields, :expand, :order_by, :text_format, :ids, :tags,
|
|
12
12
|
:location, :place_id, :actual_only)
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
get(PATH, params)
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
def self.find(news_id, params = {})
|
|
@@ -21,7 +21,7 @@ module KudagoClient
|
|
|
21
21
|
|
|
22
22
|
def self.comments(news_id, params = {})
|
|
23
23
|
params.slice!(:lang, :page, :page_size, :fields, :order_by, :ids)
|
|
24
|
-
|
|
24
|
+
get("#{PATH}#{news_id}/comments/", params)
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
def self.comment(news_id, comment_id, params = {})
|
|
@@ -9,9 +9,7 @@ module KudagoClient
|
|
|
9
9
|
|
|
10
10
|
def self.list(params = {})
|
|
11
11
|
params.slice!(:lang, :fields, :order_by)
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
parse_response_urls({results: res, count: res.size})
|
|
12
|
+
get(PATH, params)
|
|
15
13
|
end
|
|
16
14
|
|
|
17
15
|
def self.find(place_category_id, params = {})
|
|
@@ -9,10 +9,9 @@ module KudagoClient
|
|
|
9
9
|
|
|
10
10
|
def self.list(params = {})
|
|
11
11
|
params.slice!(:lang, :fields, :page, :page_size, :expand, :order_by, :text_format, :ids, :location,
|
|
12
|
-
:has_showings, :showing_since, :showing_until, :is_free, :categories, :tags, :parent_id,
|
|
13
|
-
:lon, :lat, :radius)
|
|
12
|
+
:has_showings, :showing_since, :showing_until, :is_free, :categories, :tags, :parent_id, :lon, :lat, :radius)
|
|
14
13
|
|
|
15
|
-
|
|
14
|
+
get(PATH, params)
|
|
16
15
|
end
|
|
17
16
|
|
|
18
17
|
def self.find(place_id, params = {})
|
|
@@ -22,7 +21,7 @@ module KudagoClient
|
|
|
22
21
|
|
|
23
22
|
def self.comments(place_id, params = {})
|
|
24
23
|
params.slice!(:lang, :place_id, :page, :page_size, :fields, :order_by, :ids)
|
|
25
|
-
|
|
24
|
+
get("#{PATH}#{place_id}/comments/", params)
|
|
26
25
|
end
|
|
27
26
|
end
|
|
28
27
|
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "active_support/core_ext/hash"
|
|
4
|
+
|
|
5
|
+
module KudagoClient
|
|
6
|
+
class Response
|
|
7
|
+
attr_reader :list, :data
|
|
8
|
+
|
|
9
|
+
def initialize(response_body)
|
|
10
|
+
@list = true
|
|
11
|
+
|
|
12
|
+
prepared_data =
|
|
13
|
+
if response_body.is_a? Array
|
|
14
|
+
data_with_count = parse_with_count(response_body)
|
|
15
|
+
parse_response_urls(data_with_count)
|
|
16
|
+
elsif response_body.is_a?(Hash) && response_body.key?(:count)
|
|
17
|
+
parse_response_urls(response_body)
|
|
18
|
+
else
|
|
19
|
+
@list = false
|
|
20
|
+
response_body
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
@data = prepared_data
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def list?
|
|
27
|
+
list
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
private
|
|
31
|
+
|
|
32
|
+
def parse_response_urls(res)
|
|
33
|
+
res[:next_url] = res.delete :next
|
|
34
|
+
res[:previous_url] = res.delete :previous
|
|
35
|
+
|
|
36
|
+
res
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def parse_with_count(res)
|
|
40
|
+
{results: res, count: res.size}
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
data/lib/kudago_client.rb
CHANGED
data/to_do.md
ADDED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: kudago-client
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: '1.0'
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- andrew-kh8
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2025-
|
|
11
|
+
date: 2025-09-06 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: faraday
|
|
@@ -38,6 +38,34 @@ dependencies:
|
|
|
38
38
|
- - "~>"
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
40
|
version: '3.16'
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: activesupport
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - ">="
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '6.0'
|
|
48
|
+
type: :runtime
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - ">="
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '6.0'
|
|
55
|
+
- !ruby/object:Gem::Dependency
|
|
56
|
+
name: rspec
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - "~>"
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '3.0'
|
|
62
|
+
type: :development
|
|
63
|
+
prerelease: false
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - "~>"
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '3.0'
|
|
41
69
|
- !ruby/object:Gem::Dependency
|
|
42
70
|
name: standard
|
|
43
71
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -112,7 +140,10 @@ files:
|
|
|
112
140
|
- lib/kudago_client/requests/place_request.rb
|
|
113
141
|
- lib/kudago_client/requests/role_request.rb
|
|
114
142
|
- lib/kudago_client/requests/search_request.rb
|
|
143
|
+
- lib/kudago_client/response.rb
|
|
144
|
+
- lib/kudago_client/version.rb
|
|
115
145
|
- sig/kudago_client/client.rbs
|
|
146
|
+
- to_do.md
|
|
116
147
|
homepage: https://github.com/andrew-kh8/kudago-client
|
|
117
148
|
licenses:
|
|
118
149
|
- MIT
|