nexus-invision 1.2.1 → 1.4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 84cb775c68d8d61e0d2c4232f9f19e4ee3db33def570d56d5241252a2e72c706
4
- data.tar.gz: 21702dd257de979782fcf9e1c7a73b9fd0251e022b7017c1cd636d412ce59727
3
+ metadata.gz: bb7f4dd7508c2bf74120eba302eb5ef420fc6addc1311a5a1724a276dfa9800f
4
+ data.tar.gz: e310ad149e4dbf3266317bdcd5de47c629f9b72efa3529e158d0cec482766cc7
5
5
  SHA512:
6
- metadata.gz: 5a59c3bff61f2a5970c5215be34c46182913e6537dc6819cb7081df1c3d334241e6dbda61afe2633caf786cd28a825474642122fd1d4fb8b6780a22fcb483bc6
7
- data.tar.gz: 362be209445d133b026690eabce58257cf14c0c1d61c3352f435094e45e0c0d47261a007652ef0c50e72eb24d44b4fc6f240def34e03c0c2648910dda6a8aed8
6
+ metadata.gz: 7e6993e879605622f22b5c1d379324314e83dd52d017f07c420e25f6fcec4885abeac2f82b78b6fe6b9309639d10030ae1e64e549b1a3addb8a258bf36bd3a5f
7
+ data.tar.gz: c673134f613edd339ceb8e1d721d8a487b9ba305ef71f26ffa9e21f56db492291d2bc08d21013b7c181e15dc61a2585a7103ad5f2f620c48c484f07e9adabfb2
@@ -8,9 +8,14 @@ require "nexus/invision/requests/add_member_to_secondary_group"
8
8
  require "nexus/invision/requests/create_forum_post"
9
9
  require "nexus/invision/requests/create_forum_topic"
10
10
  require "nexus/invision/requests/create_member_warning"
11
+ require "nexus/invision/requests/delete_member"
12
+ require "nexus/invision/requests/edit_member"
11
13
  require "nexus/invision/requests/list_forum_topics"
12
14
  require "nexus/invision/requests/remove_member_from_secondary_group"
15
+ require "nexus/invision/requests/edit_member_primary_group"
16
+ require "nexus/invision/resources/group"
13
17
  require "nexus/invision/resources/login_link"
18
+ require "nexus/invision/resources/member"
14
19
  require "nexus/invision/resources/page"
15
20
  require "nexus/invision/resources/post"
16
21
  require "nexus/invision/resources/topic"
@@ -110,6 +115,26 @@ module Nexus
110
115
  Resources::LoginLink.from_hash(response.body)
111
116
  end
112
117
 
118
+ sig { params(nexusmods_member_id: Integer).returns(Resources::Member) }
119
+ def get_member(nexusmods_member_id)
120
+ response = request(
121
+ http_method: HTTPMethod::GET,
122
+ endpoint: URI("core/members/#{nexusmods_member_id}"),
123
+ )
124
+
125
+ Resources::Member.from_hash(response.body)
126
+ end
127
+
128
+ sig { params(request: Requests::EditMemberPrimaryGroup).returns(Resources::Member) }
129
+ def edit_member_primary_group(request)
130
+ response = request(
131
+ http_method: HTTPMethod::POST,
132
+ endpoint: URI("core/members/#{request.member_id}"),
133
+ params: request.serialize.except("member_id"),
134
+ )
135
+ Resources::Member.from_hash(response.body)
136
+ end
137
+
113
138
  sig { params(request: Requests::AddMemberToSecondaryGroup).returns(Resources::User) }
114
139
  def add_member_to_secondary_group(request)
115
140
  response = request(
@@ -161,6 +186,27 @@ module Nexus
161
186
  Resources::User.from_hash(response.body)
162
187
  end
163
188
 
189
+ sig { params(request: Requests::DeleteMember).void }
190
+ def delete_member(request)
191
+ # 1 is keep member name, 0 is anonymize content
192
+ values = request.serialize.except("member_id").merge({ "contentAnonymize" => request.keep_member_name ? 1 : 0 })
193
+ request(
194
+ http_method: HTTPMethod::DELETE,
195
+ endpoint: URI("core/members/#{request.member_id}"),
196
+ params: values,
197
+ )
198
+ end
199
+
200
+ sig { params(request: Requests::EditMember).returns(Resources::User) }
201
+ def edit_member(request)
202
+ response = request(
203
+ http_method: HTTPMethod::POST,
204
+ endpoint: URI("core/members/#{request.member_id}"),
205
+ params: request.serialize.except("member_id"),
206
+ )
207
+ Resources::User.from_hash(response.body)
208
+ end
209
+
164
210
  private
165
211
 
166
212
  sig do
@@ -0,0 +1,27 @@
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 DeleteMember < T::Struct
11
+ include ValueObject
12
+
13
+ class ContentAction < T::Enum
14
+ enums do
15
+ Delete = new
16
+ Hide = new
17
+ Leave = new
18
+ end
19
+ end
20
+
21
+ const :member_id, Integer
22
+ const :content_action, ContentAction, name: "contentAction"
23
+ const :keep_member_name, T::Boolean, name: "contentAnonymize"
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,18 @@
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 EditMember < T::Struct
11
+ include ValueObject
12
+
13
+ const :member_id, Integer
14
+ const :name, T.nilable(String)
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,18 @@
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 EditMemberPrimaryGroup < T::Struct
11
+ include ValueObject
12
+
13
+ const :member_id, Integer
14
+ const :group, Integer
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,18 @@
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 Group < T::Struct
11
+ include ValueObject
12
+
13
+ const :id, Integer
14
+ const :name, String
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,19 @@
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
+ # Member is a User with additional information about their membership.
11
+ class Member < T::Struct
12
+ include ValueObject
13
+
14
+ const :id, Integer
15
+ const :primaryGroup, Group
16
+ end
17
+ end
18
+ end
19
+ end
@@ -3,7 +3,7 @@
3
3
 
4
4
  module Nexus
5
5
  module Invision
6
- # Leave this as 1.2.1 in order for CI process to replace with the tagged version.
7
- VERSION = "1.2.1"
6
+ # Leave this as 1.4.0 in order for CI process to replace with the tagged version.
7
+ VERSION = "1.4.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.2.1
4
+ version: 1.4.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-08 00:00:00.000000000 Z
11
+ date: 2023-12-13 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email:
@@ -30,9 +30,14 @@ files:
30
30
  - lib/nexus/invision/requests/create_forum_post.rb
31
31
  - lib/nexus/invision/requests/create_forum_topic.rb
32
32
  - lib/nexus/invision/requests/create_member_warning.rb
33
+ - lib/nexus/invision/requests/delete_member.rb
34
+ - lib/nexus/invision/requests/edit_member.rb
35
+ - lib/nexus/invision/requests/edit_member_primary_group.rb
33
36
  - lib/nexus/invision/requests/list_forum_topics.rb
34
37
  - lib/nexus/invision/requests/remove_member_from_secondary_group.rb
38
+ - lib/nexus/invision/resources/group.rb
35
39
  - lib/nexus/invision/resources/login_link.rb
40
+ - lib/nexus/invision/resources/member.rb
36
41
  - lib/nexus/invision/resources/page.rb
37
42
  - lib/nexus/invision/resources/post.rb
38
43
  - lib/nexus/invision/resources/topic.rb
@@ -103,7 +108,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
103
108
  - !ruby/object:Gem::Version
104
109
  version: '0'
105
110
  requirements: []
106
- rubygems_version: 3.4.21
111
+ rubygems_version: 3.4.22
107
112
  signing_key:
108
113
  specification_version: 4
109
114
  summary: A client for the Invision Community REST API.