nexus-invision 1.2.1 → 1.4.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: 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.