repltalk 0.5.1 → 1.3.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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/queries.rb +89 -0
  3. data/lib/repltalk.rb +126 -5
  4. metadata +18 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 025f94f3a39675c567cfe0e77c1ca050c5ef87a66b3916be2413e1a036b97b1e
4
- data.tar.gz: c9aa80154d299ebda053fe9e2eadd156fcd30450b942ccb87078cbef6eacb1f2
3
+ metadata.gz: ade4342442037dfec06df6d42dc4fb825aa0ae28020a9a65a8cc6072ff1d5a83
4
+ data.tar.gz: eabb22b821d0170bbec6a1cdcf1a9b8ab877d7cf5c746796ed56d098fa07b23f
5
5
  SHA512:
6
- metadata.gz: e1ac924dd87ae0ad5476947f966f2e972fd73211c84367681036f06689cbd2a0e9c9755f06e82bf1f8fd5c2cd83b11e8a3c323135e223576b688438077877c04
7
- data.tar.gz: e5634a2b2b98134cfa27b1f6ffbde80be6e77221278ff5d30b02a338b30950416b3a66c0c11700f1ba582d20c797cb1b324f59e2cc04eeeee07c0f7ef2709e11
6
+ metadata.gz: 8e1d95df4fa09ec118ee4d82115652831fded6cb0b9b55b09045d68f7ff0cc48c975a28de0b6e207de5d786c8ebc3f1482cdf4225b80f06baf407074e10b264c
7
+ data.tar.gz: fc16a9bccab5cca65fa7041b9dce1720198d686582a47beb64310c0b6eb3d5e5359685bfbdd5120366d3df797608468e11040b9d5fce1cdaa32d98dd126ad7c7
data/lib/queries.rb CHANGED
@@ -9,6 +9,18 @@ class Queries
9
9
  @@organization = "
10
10
  id
11
11
  name
12
+ country
13
+ postalCode
14
+ state
15
+ city
16
+ timeCreated
17
+ "
18
+
19
+ @@subscription = "
20
+ id
21
+ planId
22
+ quantity
23
+ timeCreated
12
24
  "
13
25
 
14
26
  @@language = "
@@ -17,12 +29,14 @@ class Queries
17
29
  displayName
18
30
  tagline
19
31
  icon
32
+ category
20
33
  "
21
34
 
22
35
  @@board = "
23
36
  id
24
37
  name
25
38
  color
39
+ description
26
40
  "
27
41
 
28
42
  @@user = "
@@ -40,6 +54,9 @@ class Queries
40
54
  organization {
41
55
  #{@@organization}
42
56
  }
57
+ subscription {
58
+ #{@@subscription}
59
+ }
43
60
  languages {
44
61
  #{@@language}
45
62
  }
@@ -50,6 +67,7 @@ class Queries
50
67
  url
51
68
  title
52
69
  description
70
+ size
53
71
  imageUrl
54
72
  isPrivate
55
73
  isAlwaysOn
@@ -59,6 +77,9 @@ class Queries
59
77
  user {
60
78
  #{@@user}
61
79
  }
80
+ origin {
81
+ url
82
+ }
62
83
  "
63
84
 
64
85
  @@comment = "
@@ -277,6 +298,14 @@ class Queries
277
298
  }"
278
299
  end
279
300
 
301
+ def Queries.get_board
302
+ "query boardBySlug($slug: String!) {
303
+ board: boardBySlug(slug: $slug) {
304
+ #{@@board}
305
+ }
306
+ }"
307
+ end
308
+
280
309
  def Queries.get_posts
281
310
  "query PostsFeed($order: String, $after: String, $searchQuery: String, $languages: [String!], $count: Int, $boardSlugs: [String!], $pinAnnouncements: Boolean, $pinPinned: Boolean) {
282
311
  posts(order: $order, after: $after, searchQuery: $searchQuery, languages: $languages, count: $count, boardSlugs: $boardSlugs, pinAnnouncements: $pinAnnouncements, pinPinned: $pinPinned) {
@@ -297,4 +326,64 @@ class Queries
297
326
  }
298
327
  }"
299
328
  end
329
+ end
330
+
331
+
332
+ class Mutations < Queries
333
+ def Mutations.create_post
334
+ "mutation createPost($input: CreatePostInput!) {
335
+ createPost(input: $input) {
336
+ post {
337
+ #{@@post}
338
+ }
339
+ }
340
+ }"
341
+ end
342
+
343
+ def Mutations.edit_post
344
+ "mutation updatePost($input: UpdatePostInput!) {
345
+ updatePost(input: $input) {
346
+ post {
347
+ #{@@post}
348
+ }
349
+ }
350
+ }
351
+ "
352
+ end
353
+
354
+ def Mutations.delete_post
355
+ "mutation deletePost($id: Int!) {
356
+ deletePost(id: $id) {
357
+ id
358
+ }
359
+ }"
360
+ end
361
+
362
+ def Mutations.create_comment
363
+ "mutation createComment($input: CreateCommentInput!) {
364
+ createComment(input: $input) {
365
+ comment {
366
+ #{@@comment}
367
+ }
368
+ }
369
+ }"
370
+ end
371
+
372
+ def Mutations.edit_comment
373
+ "mutation updateComment($input: UpdateCommentInput!) {
374
+ updateComment(input: $input) {
375
+ comment {
376
+ #{@@comment}
377
+ }
378
+ }
379
+ }"
380
+ end
381
+
382
+ def Mutations.delete_comment
383
+ "mutation deleteComment($id: Int!) {
384
+ deleteComment(id: $id) {
385
+ id
386
+ }
387
+ }"
388
+ end
300
389
  end
data/lib/repltalk.rb CHANGED
@@ -21,11 +21,16 @@ end
21
21
 
22
22
 
23
23
  class Organization
24
- attr_reader :id, :name
24
+ attr_reader :id, :name, :country, :postal_code, :state, :city, :timestamp
25
25
 
26
26
  def initialize(organization)
27
27
  @id = organization["id"]
28
28
  @name = organization["name"]
29
+ @country = organization["country"]
30
+ @postal_code = organization["postalCode"]
31
+ @state = organization["state"]
32
+ @city = organization["city"]
33
+ @timestamp = organization["timeCreated"]
29
34
  end
30
35
 
31
36
  def to_s
@@ -35,8 +40,25 @@ end
35
40
 
36
41
 
37
42
 
43
+ class Subscription
44
+ attr_reader :id, :plan_id, :quantity, :timestamp
45
+
46
+ def initialize(subscription)
47
+ @id = subscription["id"]
48
+ @plan_id = subscription["planId"]
49
+ @quantity = subscription["quantity"]
50
+ @timestamp = subscription["timeCreated"]
51
+ end
52
+
53
+ def to_s
54
+ @plan_id
55
+ end
56
+ end
57
+
58
+
59
+
38
60
  class Language
39
- attr_reader :id, :key, :name, :tagline, :icon
61
+ attr_reader :id, :key, :name, :tagline, :icon, :category
40
62
 
41
63
  def initialize(lang)
42
64
  @id = lang["id"]
@@ -44,6 +66,7 @@ class Language
44
66
  @name = lang["displayName"]
45
67
  @tagline = lang["tagline"]
46
68
  @icon = lang["icon"]
69
+ @category = lang["category"]
47
70
  end
48
71
 
49
72
  def to_s
@@ -74,7 +97,7 @@ end
74
97
 
75
98
 
76
99
  class Repl
77
- attr_reader :id, :url, :title, :author, :description, :language, :img_url, :is_private, :is_always_on
100
+ attr_reader :id, :url, :title, :author, :description, :size, :language, :img_url, :origin_url, :is_private, :is_always_on
78
101
 
79
102
  def initialize(client, repl)
80
103
  @client = client
@@ -84,8 +107,10 @@ class Repl
84
107
  @title = repl["title"]
85
108
  @author = User.new(@client, repl["user"])
86
109
  @description = repl["description"]
110
+ @size = repl["size"]
87
111
  @language = Language.new(repl["lang"])
88
112
  @image_url = repl["imageUrl"]
113
+ @origin_url = repl["origin"] == nil ? nil : $BASE_URL + repl["origin"]["url"]
89
114
 
90
115
  @is_private = repl["isPrivate"]
91
116
  @is_always_on = repl["isAlwaysOn"]
@@ -121,12 +146,13 @@ end
121
146
 
122
147
 
123
148
  class Board
124
- attr_reader :id, :name, :color
149
+ attr_reader :id, :name, :color, :description
125
150
 
126
151
  def initialize(board)
127
152
  @id = board["id"]
128
153
  @name = board["name"]
129
154
  @color = board["color"]
155
+ @description = board["description"]
130
156
  end
131
157
 
132
158
  def to_s
@@ -182,6 +208,40 @@ class Comment
182
208
  c["comment"]["parentComment"] == nil ? nil : Comment.new(@client, c["comment"]["parentComment"])
183
209
  end
184
210
 
211
+ def create_comment(content)
212
+ c = @client.graphql(
213
+ "createComment",
214
+ Mutations.create_comment,
215
+ input: {
216
+ postId: @post_id,
217
+ commentId: @id,
218
+ body: content
219
+ }
220
+ )
221
+ Comment.new(@client, c["createComment"]["comment"])
222
+ end
223
+
224
+ def edit(content)
225
+ c = @client.graphql(
226
+ "updateComment",
227
+ Mutations.edit_comment,
228
+ input: {
229
+ id: @id,
230
+ body: content
231
+ }
232
+ )
233
+ Comment.new(@client, c["updateComment"]["comment"])
234
+ end
235
+
236
+ def delete
237
+ @client.graphql(
238
+ "deleteComment",
239
+ Mutations.delete_comment,
240
+ id: @id
241
+ )
242
+ nil
243
+ end
244
+
185
245
  def to_s
186
246
  @content
187
247
  end
@@ -244,6 +304,42 @@ class Post
244
304
  u["post"]["votes"]["items"].map { |vote| User.new(@client, vote["user"]) }
245
305
  end
246
306
 
307
+ def create_comment(content)
308
+ c = @client.graphql(
309
+ "createComment",
310
+ Mutations.create_comment,
311
+ input: {
312
+ postId: @id,
313
+ body: content
314
+ }
315
+ )
316
+ Comment.new(@client, c["createComment"]["comment"])
317
+ end
318
+
319
+ def edit(title: @title, content: @content, repl_id: @repl.id, show_hosted: false)
320
+ p = @client.graphql(
321
+ "updatePost",
322
+ Mutations.edit_post,
323
+ input: {
324
+ id: @id,
325
+ title: title,
326
+ body: content,
327
+ replId: repl_id,
328
+ showHosted: show_hosted
329
+ }
330
+ )
331
+ Post.new(@client, p["updatePost"]["post"])
332
+ end
333
+
334
+ def delete
335
+ @client.graphql(
336
+ "deletePost",
337
+ Mutations.delete_post,
338
+ id: @id
339
+ )
340
+ nil
341
+ end
342
+
247
343
  def to_s
248
344
  @title
249
345
  end
@@ -252,7 +348,7 @@ end
252
348
 
253
349
 
254
350
  class User
255
- attr_reader :id, :username, :name, :pfp, :bio, :cycles, :is_hacker, :timestamp, :roles, :organization, :languages
351
+ attr_reader :id, :username, :name, :pfp, :bio, :cycles, :is_hacker, :timestamp, :subscription, :roles, :organization, :languages
256
352
 
257
353
  def initialize(client, user)
258
354
  @client = client
@@ -265,6 +361,7 @@ class User
265
361
  @cycles = user["karma"]
266
362
  @is_hacker = user["isHacker"]
267
363
  @timestamp = user["timeCreated"]
364
+ @subscription = user["subscription"] == nil ? nil : Subscription.new(user["subscription"])
268
365
  @roles = user["roles"].map { |role| Role.new(role) }
269
366
  @organization = user["organization"] == nil ? nil : Organization.new(user["organization"])
270
367
  @languages = user["languages"].map { |lang| Language.new(lang) }
@@ -411,6 +508,15 @@ class Client
411
508
  Repl.new(self, r["repl"])
412
509
  end
413
510
 
511
+ def get_board(name)
512
+ b = graphql(
513
+ "boardBySlug",
514
+ Queries.get_board,
515
+ slug: name
516
+ )
517
+ Board.new(b["board"])
518
+ end
519
+
414
520
  def get_leaderboard(count: nil, since: nil, after: nil)
415
521
  u = graphql(
416
522
  "LeaderboardQuery",
@@ -435,4 +541,19 @@ class Client
435
541
  )
436
542
  p["posts"]["items"].map { |post| Post.new(self, post) }
437
543
  end
544
+
545
+ def create_post(board_name, title, content, repl_id: nil, show_hosted: false)
546
+ p = graphql(
547
+ "createPost",
548
+ Mutations.create_post,
549
+ input: {
550
+ boardId: get_board(board_name).id,
551
+ title: title,
552
+ body: content,
553
+ replId: repl_id,
554
+ showHosted: show_hosted
555
+ }
556
+ )
557
+ Post.new(self, p["createPost"]["post"])
558
+ end
438
559
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: repltalk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - CodingCactus
@@ -14,30 +14,42 @@ dependencies:
14
14
  name: http
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '4.4'
17
20
  - - ">="
18
21
  - !ruby/object:Gem::Version
19
- version: '0'
22
+ version: 4.4.1
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '4.4'
24
30
  - - ">="
25
31
  - !ruby/object:Gem::Version
26
- version: '0'
32
+ version: 4.4.1
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: json
29
35
  requirement: !ruby/object:Gem::Requirement
30
36
  requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '2.5'
31
40
  - - ">="
32
41
  - !ruby/object:Gem::Version
33
- version: '0'
42
+ version: 2.5.1
34
43
  type: :runtime
35
44
  prerelease: false
36
45
  version_requirements: !ruby/object:Gem::Requirement
37
46
  requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '2.5'
38
50
  - - ">="
39
51
  - !ruby/object:Gem::Version
40
- version: '0'
52
+ version: 2.5.1
41
53
  description: With the repltalk gem, you can easily interect with the repltalk graphql
42
54
  api. See https://github.com/Coding-Cactus/repltalk for documentation
43
55
  email: codingcactus.cc@gmail.com
@@ -47,7 +59,7 @@ extra_rdoc_files: []
47
59
  files:
48
60
  - lib/queries.rb
49
61
  - lib/repltalk.rb
50
- homepage:
62
+ homepage: https://github.com/Coding-Cactus/repltalk
51
63
  licenses:
52
64
  - MIT
53
65
  metadata: