nexus-invision 1.0.1 → 1.1.0

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: 065f4b649c4cb38fd6e74ee2553e765d54aeac82c87ee1a0228bde20d67ee5ba
4
- data.tar.gz: be4eef47364841e72cbe4e3a4d6a30ffcd40da45473cba3da0071c255c51bdee
3
+ metadata.gz: d88d57f0af3901d607a6f6e0a0344747aa4217a1f9d398ef4531a91f589a42f4
4
+ data.tar.gz: 0a7be56f1d7cbe83fdde608d7f70b79f39bdd914046ccba329e4b48051af9f62
5
5
  SHA512:
6
- metadata.gz: 9c4b65c458d3b1223ad798d26abcfce4dd7573fdc0a4373dceb351662edddf78430a8faa8fc2dbb0ce7acace4f719d6eebb8c3e46abe17eb979c73a49f819fca
7
- data.tar.gz: 5ec905d67b971c2478405b90f684a86f4e116dea933cc3eb5f4b08fb985a6abd5c239fb45fee0985b336cc7ae880c9a137062c87ccd1af9429cc23b8f5ae7206
6
+ metadata.gz: 8bc18fab0d7f5bbcc148c5547298cd626227a3d16cfff1be1e1a82c07a93c9cd5daf5668587f5fc61a5b1c3c4b3ea89340efbb6ee74ee1562586b2574b135abb
7
+ data.tar.gz: 41070303e3a93200e8ebbded1f0bfd6ac1975c5fa769503a7bd1ce82d586fa25bbd966c7221f8816c64e131d4341ac001488de0bda9abf9dbd7e4420efe44deb
@@ -7,8 +7,10 @@ require "nexus/invision/errors/unexpected_response"
7
7
  require "nexus/invision/requests/add_member_to_secondary_group"
8
8
  require "nexus/invision/requests/create_forum_topic"
9
9
  require "nexus/invision/requests/create_member_warning"
10
+ require "nexus/invision/requests/list_forum_topics"
10
11
  require "nexus/invision/requests/remove_member_from_secondary_group"
11
12
  require "nexus/invision/resources/login_link"
13
+ require "nexus/invision/resources/page"
12
14
  require "nexus/invision/resources/topic"
13
15
  require "nexus/invision/resources/user"
14
16
  require "nexus/invision/resources/warning"
@@ -55,6 +57,25 @@ module Nexus
55
57
  end
56
58
  end
57
59
 
60
+ sig { params(request: Requests::ListForumTopics).returns(Resources::Page[Resources::Topic]) }
61
+ def list_forum_topics(request)
62
+ response = request(
63
+ http_method: HTTPMethod::GET,
64
+ endpoint: URI("forums/topics"),
65
+ params: request.serialize,
66
+ )
67
+
68
+ body = response.body
69
+
70
+ Resources::Page[Resources::Topic].new(
71
+ page: body.fetch("page"),
72
+ per_page: body.fetch("perPage"),
73
+ total_results: body.fetch("totalResults"),
74
+ total_pages: body.fetch("totalPages"),
75
+ results: body.fetch("results").map { |result| Resources::Topic.from_hash(result) },
76
+ )
77
+ end
78
+
58
79
  sig { params(request: Requests::CreateForumTopic).returns(Resources::Topic) }
59
80
  def create_forum_topic(request)
60
81
  response = request(
@@ -0,0 +1,24 @@
1
+ # typed: strict
2
+ # frozen_string_literal: true
3
+
4
+ require "nexus/invision/value_object"
5
+ require "sorbet-runtime"
6
+
7
+ module Nexus
8
+ module Invision
9
+ module Requests
10
+ class ListForumTopics < T::Struct
11
+ include ValueObject
12
+
13
+ const :forums, String # A comma delimited list of forum IDs
14
+ const :sort_by, String, name: "sortBy", default: "updated"
15
+ const :sort_dir, String, name: "sortDir", default: "desc"
16
+ const :per_page, Integer, name: "perPage", default: 100
17
+ const :has_poll, T::Boolean, name: "hasPoll", default: false
18
+ const :hidden, Integer, default: 0
19
+ const :archived, Integer, default: 0
20
+ const :locked, Integer, default: 0
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,48 @@
1
+ # typed: strict
2
+ # frozen_string_literal: true
3
+
4
+ require "nexus/invision/value_object"
5
+ require "sorbet-runtime"
6
+
7
+ module Nexus
8
+ module Invision
9
+ module Resources
10
+ class Page
11
+ extend T::Sig
12
+ extend T::Generic
13
+
14
+ include ValueObject
15
+
16
+ TResource = type_member { { upper: T::Struct } }
17
+
18
+ sig do
19
+ params(
20
+ page: Integer,
21
+ per_page: Integer,
22
+ total_results: Integer,
23
+ total_pages: Integer,
24
+ results: T::Array[TResource],
25
+ ).void
26
+ end
27
+ def initialize(page:, per_page:, total_results:, total_pages:, results:)
28
+ @page = page
29
+ @per_page = per_page
30
+ @total_results = total_results
31
+ @total_pages = total_pages
32
+ @results = results
33
+ end
34
+
35
+ sig { override.returns(T::Hash[String, T.untyped]) }
36
+ def serialize
37
+ {
38
+ "page" => @page,
39
+ "perPage" => @per_page,
40
+ "totalResults" => @total_results,
41
+ "totalPages" => @total_pages,
42
+ "results" => @results.map(&:serialize),
43
+ }
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -11,6 +11,7 @@ module Nexus
11
11
  include ValueObject
12
12
 
13
13
  const :id, Integer
14
+ const :title, String
14
15
  end
15
16
  end
16
17
  end
@@ -3,7 +3,7 @@
3
3
 
4
4
  module Nexus
5
5
  module Invision
6
- # Leave this as 1.0.1 in order for CI process to replace with the tagged version.
7
- VERSION = "1.0.1"
6
+ # Leave this as 1.1.0 in order for CI process to replace with the tagged version.
7
+ VERSION = "1.1.0"
8
8
  end
9
9
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nexus-invision
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jack Robertson
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-11-06 00:00:00.000000000 Z
11
+ date: 2023-11-08 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email:
@@ -29,8 +29,10 @@ files:
29
29
  - lib/nexus/invision/requests/add_member_to_secondary_group.rb
30
30
  - lib/nexus/invision/requests/create_forum_topic.rb
31
31
  - lib/nexus/invision/requests/create_member_warning.rb
32
+ - lib/nexus/invision/requests/list_forum_topics.rb
32
33
  - lib/nexus/invision/requests/remove_member_from_secondary_group.rb
33
34
  - lib/nexus/invision/resources/login_link.rb
35
+ - lib/nexus/invision/resources/page.rb
34
36
  - lib/nexus/invision/resources/topic.rb
35
37
  - lib/nexus/invision/resources/user.rb
36
38
  - lib/nexus/invision/resources/warning.rb