repltalk 3.2.0 → 4.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 66f29deaf911567d3c4c959a6687c350f0764d758664654cb65b1aaa076c037f
4
- data.tar.gz: b4f3293b1231a4ef20cf9923f877fb939008375b9410607a8e8a593527f97a6d
3
+ metadata.gz: b84d171f11260c6228c57a98ecafa820de55beee7e3b2b6a6a073c8d1f098e2d
4
+ data.tar.gz: 5308bbf0fe4421b85445e3d30166073508fe6a51298e862844d33bc876323c03
5
5
  SHA512:
6
- metadata.gz: aaeb2dd357f62d1ce23a415ca34cd46e18e14e8087a11c440341be3ec406581d3c80f2eddaf16247ca9e7bcc6ddd59d22f110112372fde0c9c14600d6e195ea4
7
- data.tar.gz: 060fbd5f0a744a756dd83341adf6f3a4a2965d0c73cae741b0b763d6104ae60faeb76d5ca04bb279a8856e12a423dad4ed27e7325db88f460b3e14d9770d8fa2
6
+ metadata.gz: e6233c13df87432bd1465da62193bc46d1b3ba7305ada0974693d88548ccd681af160f3ea82ea1384264434f185ca2364f2bf3de186dbcf9b44dd29d39c5324e
7
+ data.tar.gz: cc1d0293a530e7baaae7a3c1bbbe89296b2193fdad2c4097889dd25b96b641e218428db86672de0552cd17acb02420832d40285d0076080b45fbe97c3e4ffef3
@@ -132,18 +132,45 @@ module ReplTalk
132
132
  u["leaderboard"]["items"].map { |user| LeaderboardUser.new(self, user) }
133
133
  end
134
134
 
135
- def get_posts(board: "all", order: "new", count: nil, after: nil, search: nil, languages: nil)
135
+ def get_posts(board: "all", order: "New", count: nil, after: nil, search: nil)
136
136
  p = graphql(
137
- "PostsFeed",
137
+ "ReplPostsFeed",
138
138
  GQL::Queries::GET_POSTS,
139
- boardSlugs: [board],
140
- order: order,
141
- count: count,
142
- after: after,
143
- searchQuery: search,
144
- languages: languages
139
+ options: {
140
+ boardSlugs: [board],
141
+ order: order,
142
+ count: count,
143
+ after: after,
144
+ searchQuery: search
145
+ }
146
+ )
147
+ p["replPosts"]["items"].map { |post| Post.new(self, post) }
148
+ end
149
+
150
+ def get_explore_featured_repls
151
+ r = graphql(
152
+ "ExploreFeaturedRepls",
153
+ GQL::Queries::GET_EXPLORE_FEATURED_REPLS
154
+ )
155
+ r["featuredRepls"].map { |repl| Repl.new(self, repl) }
156
+ end
157
+
158
+ def get_trending_tags(count: nil)
159
+ t = graphql(
160
+ "ExploreFeed",
161
+ GQL::Queries::GET_TRENDING_TAGS,
162
+ count: count
163
+ )
164
+ t["trendingTagsFeed"]["initialTags"].map { |tag| Tag.new(self, tag) }
165
+ end
166
+
167
+ def get_tag(tag)
168
+ t = graphql(
169
+ "ExploreTrendingRepls",
170
+ GQL::Queries::GET_TAG,
171
+ tag: tag
145
172
  )
146
- p["posts"]["items"].map { |post| Post.new(self, post) }
173
+ Tag.new(self, t["tag"])
147
174
  end
148
175
 
149
176
  def create_post(board_name, title, content, repl_id: nil, show_hosted: false)
@@ -8,16 +8,6 @@ module ReplTalk
8
8
  tagline
9
9
  "
10
10
 
11
- ORGANIZATION = "
12
- id
13
- name
14
- country
15
- postalCode
16
- state
17
- city
18
- timeCreated
19
- "
20
-
21
11
  LANGUAGE = "
22
12
  id
23
13
  key
@@ -46,14 +36,25 @@ module ReplTalk
46
36
  roles {
47
37
  #{ROLES}
48
38
  }
49
- organization {
50
- #{ORGANIZATION}
51
- }
52
39
  languages {
53
40
  #{LANGUAGE}
54
41
  }
55
42
  "
56
43
 
44
+ TAG = "
45
+ id
46
+ replCount
47
+ replsTaggedTodayCount
48
+ creatorCount
49
+ isTrending
50
+ "
51
+
52
+ REACTIONS = "
53
+ id
54
+ type
55
+ count
56
+ "
57
+
57
58
  REPL = "
58
59
  id
59
60
  url
@@ -61,9 +62,17 @@ module ReplTalk
61
62
  description
62
63
  timeCreated
63
64
  size
65
+ runCount
66
+ publicForkCount
64
67
  imageUrl
65
68
  isPrivate
66
69
  isAlwaysOn
70
+ tags {
71
+ #{TAG}
72
+ }
73
+ reactions {
74
+ #{REACTIONS}
75
+ }
67
76
  lang {
68
77
  #{LANGUAGE}
69
78
  }
@@ -127,6 +136,9 @@ module ReplTalk
127
136
  repl {
128
137
  #{REPL}
129
138
  }
139
+ replComment {
140
+ #{REPL_COMMENT}
141
+ }
130
142
  board {
131
143
  #{BOARD}
132
144
  }
@@ -321,8 +333,8 @@ module ReplTalk
321
333
  "
322
334
 
323
335
  GET_POSTS = "
324
- query PostsFeed($order: String, $after: String, $searchQuery: String, $languages: [String!], $count: Int, $boardSlugs: [String!]) {
325
- posts(order: $order, after: $after, searchQuery: $searchQuery, languages: $languages, count: $count, boardSlugs: $boardSlugs) {
336
+ query ReplPostsFeed($options: ReplPostsQueryOptions) {
337
+ replPosts(options: $options) {
326
338
  items {
327
339
  #{Fields::POST}
328
340
  }
@@ -340,6 +352,44 @@ module ReplTalk
340
352
  }
341
353
  }
342
354
  "
355
+
356
+ GET_EXPLORE_FEATURED_REPLS = "
357
+ query ExploreFeaturedRepls {
358
+ featuredRepls {
359
+ #{Fields::REPL}
360
+ }
361
+ }
362
+ "
363
+
364
+ GET_TAG = "
365
+ query ExploreTrendingRepls($tag: String!) {
366
+ tag(id: $tag) {
367
+ #{Fields::TAG}
368
+ }
369
+ }
370
+ "
371
+
372
+ GET_TRENDING_TAGS = "
373
+ query ExploreFeed($count: Int) {
374
+ trendingTagsFeed(initialTagsCount: $count) {
375
+ initialTags {
376
+ #{Fields::TAG}
377
+ }
378
+ }
379
+ }
380
+ "
381
+
382
+ GET_TAGS_REPLS = "
383
+ query ExploreTrendingRepls($tag: String!, $count: Int, $after: String) {
384
+ tag(id: $tag) {
385
+ repls(limit: $count, after: $after) {
386
+ items {
387
+ #{Fields::REPL}
388
+ }
389
+ }
390
+ }
391
+ }
392
+ "
343
393
  end
344
394
 
345
395
 
@@ -442,6 +492,38 @@ module ReplTalk
442
492
  }
443
493
  "
444
494
 
495
+ PUBLISH_REPL = "
496
+ mutation PublishRepl($input: PublishReplInput!) {
497
+ publishRepl(input: $input) {
498
+ ... on Repl {
499
+ #{Fields::REPL}
500
+ }
501
+ }
502
+ }
503
+ "
504
+
505
+ UNPUBLISH_REPL = "
506
+ mutation ReplViewHeaderActionsUnpublishRepl($input: UnpublishReplInput!) {
507
+ unpublishRepl(input: $input) {
508
+ ... on Repl {
509
+ #{Fields::REPL}
510
+ }
511
+ }
512
+ }
513
+ "
514
+
515
+ TOGGLE_REACTION = "
516
+ mutation ReplViewReactionsToggleReactions($input: SetReplReactionInput!) {
517
+ setReplReaction(input: $input) {
518
+ ... on Repl {
519
+ reactions {
520
+ #{Fields::REACTIONS}
521
+ }
522
+ }
523
+ }
524
+ }
525
+ "
526
+
445
527
  REPORT_POST = "
446
528
  mutation createBoardReport($id: Int!, $reason: String!) {
447
529
  createBoardReport(postId: $id, reason: $reason) {
@@ -18,26 +18,6 @@ module ReplTalk
18
18
 
19
19
 
20
20
 
21
- class Organization
22
- attr_reader :id, :name, :country, :postal_code, :state, :city, :timestamp
23
-
24
- def initialize(organization)
25
- @id = organization["id"]
26
- @name = organization["name"]
27
- @country = organization["country"]
28
- @postal_code = organization["postalCode"]
29
- @state = organization["state"]
30
- @city = organization["city"]
31
- @timestamp = organization["timeCreated"]
32
- end
33
-
34
- def to_s
35
- @name
36
- end
37
- end
38
-
39
-
40
-
41
21
  class Language
42
22
  attr_reader :id, :key, :name, :tagline, :icon, :category
43
23
 
@@ -74,6 +54,55 @@ module ReplTalk
74
54
 
75
55
 
76
56
 
57
+ class Tag
58
+ attr_reader :id, :repl_count, :creator_count, :is_trending, :repls_tagged_today_count
59
+
60
+ def initialize(client, tag)
61
+ @client = client
62
+
63
+ @id = tag["id"]
64
+ @repl_count = tag["replCount"]
65
+ @is_trending = tag["isTrending"]
66
+ @creator_count = tag["creatorCount"]
67
+ @repls_tagged_today_count = tag["replsTaggedTodayCount"]
68
+ end
69
+
70
+ def get_repls(count: nil, after: nil)
71
+ r = @client.graphql(
72
+ "ExploreTrendingRepls",
73
+ GQL::Queries::GET_TAGS_REPLS,
74
+ tag: @id,
75
+ count: count,
76
+ after: after
77
+ )
78
+ r["tag"]["repls"]["items"].map { |repl| Repl.new(@client, repl) }
79
+ end
80
+
81
+ def to_s
82
+ @id
83
+ end
84
+ end
85
+
86
+
87
+
88
+
89
+ class Reaction
90
+ attr_reader :id, :type, :count
91
+
92
+ def initialize(reaction)
93
+ @id = reaction["id"]
94
+ @type = reaction["type"]
95
+ @count = reaction["count"]
96
+ end
97
+
98
+ def to_s
99
+ @type
100
+ end
101
+ end
102
+
103
+
104
+
105
+
77
106
  class ReplComment
78
107
  attr_reader :id, :content, :author, :repl, :replies
79
108
 
@@ -128,7 +157,7 @@ module ReplTalk
128
157
 
129
158
 
130
159
  class Repl
131
- attr_reader :id, :url, :title, :author, :description, :timestamp, :size, :language, :img_url, :origin_url, :is_private, :is_always_on
160
+ attr_reader :id, :url, :title, :author, :description, :timestamp, :size, :run_count, :fork_count, :language, :img_url, :origin_url, :is_private, :is_always_on, :tags, :reactions
132
161
 
133
162
  def initialize(client, repl)
134
163
  @client = client
@@ -140,12 +169,17 @@ module ReplTalk
140
169
  @description = repl["description"]
141
170
  @timestamp = repl["timeCreated"]
142
171
  @size = repl["size"]
172
+ @run_count = repl["runCount"]
173
+ @fork_count = repl["publicForkCount"]
143
174
  @language = Language.new(repl["lang"])
144
175
  @image_url = repl["imageUrl"]
145
176
  @origin_url = repl["origin"] == nil ? nil : $BASE_URL + repl["origin"]["url"]
146
177
 
147
178
  @is_private = repl["isPrivate"]
148
179
  @is_always_on = repl["isAlwaysOn"]
180
+
181
+ @tags = repl["tags"].map { |tag| Tag.new(@client, tag) }
182
+ @reactions = repl["reactions"].map { |reaction| Reaction.new(reaction) }
149
183
  end
150
184
 
151
185
  def get_forks(count: 100, after: nil)
@@ -182,6 +216,63 @@ module ReplTalk
182
216
  ReplComment.new(@client, c["createReplComment"])
183
217
  end
184
218
 
219
+ def add_reaction(type)
220
+ r = @client.graphql(
221
+ "ReplViewReactionsToggleReactions",
222
+ GQL::Mutations::TOGGLE_REACTION,
223
+ input: {
224
+ replId: @id,
225
+ react: true,
226
+ reactionType: type
227
+ }
228
+ )
229
+ if r["setReplReaction"]["reactions"] == nil
230
+ @reactions
231
+ else
232
+ @reactions = r["setReplReaction"]["reactions"].map { |reaction| Reaction.new(reaction) }
233
+ end
234
+ end
235
+
236
+ def remove_reaction(type)
237
+ r = @client.graphql(
238
+ "ReplViewReactionsToggleReactions",
239
+ GQL::Mutations::TOGGLE_REACTION,
240
+ input: {
241
+ replId: @id,
242
+ react: false,
243
+ reactionType: type
244
+ }
245
+ )
246
+ @reactions = r["setReplReaction"]["reactions"].map { |reaction| Reaction.new(reaction) }
247
+ end
248
+
249
+ def publish(description, image_url, tags, enable_comments: true)
250
+ r = @client.graphql(
251
+ "PublishRepl",
252
+ GQL::Mutations::PUBLISH_REPL,
253
+ input: {
254
+ replId: @id,
255
+ replTitle: @title,
256
+ description: description,
257
+ imageUrl: image_url,
258
+ tags: tags,
259
+ enableComments: enable_comments,
260
+ }
261
+ )
262
+ Repl.new(@client, r["publishRepl"])
263
+ end
264
+
265
+ def unpublish
266
+ r = @client.graphql(
267
+ "ReplViewHeaderActionsUnpublishRepl",
268
+ GQL::Mutations::UNPUBLISH_REPL,
269
+ input: {
270
+ replId: @id
271
+ }
272
+ )
273
+ Repl.new(@client, r["unpublishRepl"])
274
+ end
275
+
185
276
  def to_s
186
277
  @title
187
278
  end
@@ -289,15 +380,21 @@ module ReplTalk
289
380
  class Post
290
381
  attr_reader :id, :url, :repl, :board, :title, :author, :answer, :content, :preview, :timestamp, :vote_count, :comment_count, :can_vote, :has_voted, :is_answered, :is_answerable, :is_hidden, :is_pinned, :is_locked, :is_announcement
291
382
 
292
- def initialize(client, post)
383
+ def initialize(client, post)
293
384
  @client = client
294
385
 
295
386
  @id = post["id"]
296
387
  @url = $BASE_URL + post["url"]
297
388
  @title = post["title"]
389
+ @timestamp = post["timeCreated"]
390
+
298
391
  @content = post["body"]
299
392
  @preview = post["preview"]
300
- @timestamp = post["timeCreated"]
393
+
394
+ if @content == ""
395
+ @content = post["replComment"]["body"]
396
+ @preview = @content.length > 150 ? @content[0..150] : @content
397
+ end
301
398
 
302
399
  @board = Board.new(post["board"])
303
400
  @repl = post["repl"] == nil ? nil : Repl.new(@client, post["repl"])
@@ -395,7 +492,7 @@ module ReplTalk
395
492
 
396
493
 
397
494
  class User
398
- attr_reader :id, :username, :name, :pfp, :bio, :cycles, :is_hacker, :timestamp, :subscription, :roles, :organization, :languages
495
+ attr_reader :id, :username, :name, :pfp, :bio, :cycles, :is_hacker, :timestamp, :subscription, :roles, :languages
399
496
 
400
497
  def initialize(client, user)
401
498
  return nil if user == nil
@@ -410,7 +507,6 @@ module ReplTalk
410
507
  @is_hacker = user["isHacker"]
411
508
  @timestamp = user["timeCreated"]
412
509
  @roles = user["roles"].map { |role| Role.new(role) }
413
- @organization = user["organization"] == nil ? nil : Organization.new(user["organization"])
414
510
  @languages = user["languages"].map { |lang| Language.new(lang) }
415
511
  end
416
512
 
data/lib/repltalk.rb CHANGED
@@ -4,5 +4,5 @@ require_relative "repltalk/structures"
4
4
 
5
5
  module ReplTalk
6
6
  $BASE_URL = "https://replit.com"
7
- VERSION = "3.2.0"
7
+ VERSION = "4.1.0"
8
8
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: repltalk
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.0
4
+ version: 4.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - CodingCactus
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-05-06 00:00:00.000000000 Z
11
+ date: 2022-01-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: http