repltalk 3.2.0 → 4.1.1

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 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