chatwork 0.6.2 → 0.7.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: 52031d9d56999ff66bad2a4617fb83027540f1f32dd17a5bfa9d6920a94aaf9e
4
- data.tar.gz: 90555909fa6e8990000d9c4eef8fd94e599a01b0a647a20ca09135b0bb65d435
3
+ metadata.gz: 4f74e386e6cd2bfdb296f318244c848833efe5281661a70fd5f2b25997e5bbcc
4
+ data.tar.gz: ec96eec7324daf0413443dbae362119ed08191b89627269fdc5a757313a829c5
5
5
  SHA512:
6
- metadata.gz: 4bfdc23a78474cd708e33b97d906ed6ada4aefa15d1028e85826a501efbe02aa5e5567fd69d8fd25faf1ee4a28661a994a13474a50e51d007eee1ab8c2b7ba0c
7
- data.tar.gz: 5eb280a4f59d87e467f33510f0d6ee799eed7d1e10e49b72c3dd5d7e48eb7748578e605510fc390143409cb50aee8970ccf8108f67c48dfabb1bb38cf810258d
6
+ metadata.gz: cade7059d99ac62bb9245a8f0089007605fb0f29f887c4bfa7947165180649388cfc1466dd760491023feb523584fedc0a4288d5d4f4b252d5e5e63c81374ebd
7
+ data.tar.gz: 0e7b226006c9a84f650139ca991b2eebfda2576f6cad148da5b8fde20deceba3d00fd07de10d18588b2913c09384661e05d65e4b5149b2bfb886ac956a9aa651
data/CHANGELOG.md CHANGED
@@ -1,6 +1,12 @@
1
1
  # Change Log
2
2
  ## Unreleased
3
- [Full Changelog](https://github.com/asonas/chatwork-ruby/compare/v0.6.2...master)
3
+ [Full Changelog](https://github.com/asonas/chatwork-ruby/compare/v0.7.0...master)
4
+
5
+ ## v0.7.0
6
+ [Full Changelog](https://github.com/asonas/chatwork-ruby/compare/v0.6.2...v0.7.0)
7
+
8
+ * Support Invitation Link API
9
+ * https://github.com/asonas/chatwork-ruby/pull/46
4
10
 
5
11
  ## v0.6.2
6
12
  [Full Changelog](https://github.com/asonas/chatwork-ruby/compare/v0.6.1...v0.6.2)
data/lib/chatwork.rb CHANGED
@@ -12,6 +12,7 @@ module ChatWork
12
12
  autoload :EntityMethods, "chatwork/entity_methods"
13
13
  autoload :File, "chatwork/file"
14
14
  autoload :IncomingRequest, "chatwork/incoming_request"
15
+ autoload :InvitationLink, "chatwork/invitation_link"
15
16
  autoload :Me, "chatwork/me"
16
17
  autoload :Member, "chatwork/member"
17
18
  autoload :Message, "chatwork/message"
@@ -0,0 +1,98 @@
1
+ module ChatWork
2
+ module InvitationLink
3
+ extend EntityMethods
4
+
5
+ # Get invitation link
6
+ #
7
+ # @see http://developer.chatwork.com/ja/endpoint_rooms.html#GET-rooms-room_id-link
8
+ # @see http://download.chatwork.com/ChatWork_API_Documentation.pdf
9
+ #
10
+ # @param room_id [Integer]
11
+ #
12
+ # @return [Hashie::Mash]
13
+ #
14
+ # @example response format
15
+ # {
16
+ # "public": true,
17
+ # "url": "https://example.chatwork.com/g/randomcode42",
18
+ # "need_acceptance": true,
19
+ # "description": "Link description text"
20
+ # }
21
+ def self.get(room_id:)
22
+ _get("/rooms/#{room_id}/link")
23
+ end
24
+
25
+ # Create invitation link
26
+ #
27
+ # @see http://developer.chatwork.com/ja/endpoint_rooms.html#POST-rooms-room_id-link
28
+ # @see http://download.chatwork.com/ChatWork_API_Documentation.pdf
29
+ #
30
+ # @param room_id [Integer]
31
+ # @param code [String] link path (default. random string)
32
+ # @param description [String] description of link page
33
+ # @param need_acceptance [Boolean] Approval necessity. Whether participation requires administrator approval.
34
+ #
35
+ # @return [Hashie::Mash]
36
+ #
37
+ # @example response format
38
+ # {
39
+ # "public": true,
40
+ # "url": "https://example.chatwork.com/g/unique-link-name",
41
+ # "need_acceptance": true,
42
+ # "description": "This is a public room for topic A."
43
+ # }
44
+ def self.create(room_id:, code: nil, description: nil, need_acceptance: nil)
45
+ params = {
46
+ code: code,
47
+ description: description,
48
+ need_acceptance: boolean_to_integer(need_acceptance),
49
+ }
50
+ _post("/rooms/#{room_id}/link", params)
51
+ end
52
+
53
+ # Update invitation link
54
+ #
55
+ # @see http://developer.chatwork.com/ja/endpoint_rooms.html#PUT-rooms-room_id-link
56
+ # @see http://download.chatwork.com/ChatWork_API_Documentation.pdf
57
+ #
58
+ # @param room_id [Integer]
59
+ # @param code [String] link path (default. random string)
60
+ # @param description [String] description of link page
61
+ # @param need_acceptance [Boolean] Approval necessity. Whether participation requires administrator approval.
62
+ #
63
+ # @return [Hashie::Mash]
64
+ #
65
+ # @example response format
66
+ # {
67
+ # "public": true,
68
+ # "url": "https://example.chatwork.com/g/another_link_name",
69
+ # "need_acceptance": false,
70
+ # "description": "Public room for everybody"
71
+ # }
72
+ def self.update(room_id:, code: nil, description: nil, need_acceptance: nil)
73
+ params = {
74
+ code: code,
75
+ description: description,
76
+ need_acceptance: boolean_to_integer(need_acceptance),
77
+ }
78
+ _put("/rooms/#{room_id}/link", params)
79
+ end
80
+
81
+ # Delete invitation link
82
+ #
83
+ # @see http://developer.chatwork.com/ja/endpoint_rooms.html#DELETE-rooms-room_id-link
84
+ # @see http://download.chatwork.com/ChatWork_API_Documentation.pdf
85
+ #
86
+ # @param room_id [Integer]
87
+ #
88
+ # @return [Hashie::Mash]
89
+ #
90
+ # @example response format
91
+ # {
92
+ # "public": false
93
+ # }
94
+ def self.destroy(room_id:)
95
+ _delete("/rooms/#{room_id}/link")
96
+ end
97
+ end
98
+ end
data/lib/chatwork/room.rb CHANGED
@@ -46,6 +46,9 @@ module ChatWork
46
46
  # @param members_member_ids [Array<Integer>, String] List of user IDs who will be given member permission for the group chat.
47
47
  # @param members_readonly_ids [Array<Integer>, String] List of user IDs who will be given read-only permission for the group chat.
48
48
  # @param name [String] Title of the group chat.
49
+ # @param link [Boolean] whether create invitation link
50
+ # @param link_code [String] link path (default. random string)
51
+ # @param link_need_acceptance [Boolean] Approval necessity. Whether participation requires administrator approval.
49
52
  #
50
53
  # @return [Hashie::Mash]
51
54
  #
@@ -53,12 +56,16 @@ module ChatWork
53
56
  # {
54
57
  # "room_id": 1234
55
58
  # }
56
- def self.create(description: nil, icon_preset: nil, members_admin_ids:, members_member_ids: nil, members_readonly_ids: nil, name:)
59
+ def self.create(description: nil, icon_preset: nil, members_admin_ids:, members_member_ids: nil, members_readonly_ids: nil, name:,
60
+ link: nil, link_code: nil, link_need_acceptance: nil)
57
61
  params = {
58
- description: description,
59
- icon_preset: icon_preset,
60
- members_admin_ids: Array(members_admin_ids).join(","),
61
- name: name,
62
+ description: description,
63
+ icon_preset: icon_preset,
64
+ members_admin_ids: Array(members_admin_ids).join(","),
65
+ name: name,
66
+ link: boolean_to_integer(link),
67
+ link_need_acceptance: boolean_to_integer(link_need_acceptance),
68
+ link_code: link_code,
62
69
  }
63
70
  params[:members_member_ids] = Array(members_member_ids).join(",") if members_member_ids
64
71
  params[:members_readonly_ids] = Array(members_readonly_ids).join(",") if members_readonly_ids
@@ -1,3 +1,3 @@
1
1
  module ChatWork
2
- VERSION = "0.6.2".freeze
2
+ VERSION = "0.7.0".freeze
3
3
  end
@@ -0,0 +1,69 @@
1
+ describe ChatWork::InvitationLink do
2
+ describe ".get", type: :api do
3
+ subject { ChatWork::InvitationLink.get(room_id: room_id) }
4
+
5
+ let(:room_id) { 123 }
6
+
7
+ before do
8
+ stub_chatwork_request(:get, "/rooms/#{room_id}/link", "/rooms/{room_id}/link")
9
+ end
10
+
11
+ it_behaves_like :a_chatwork_api, :get, "/rooms/{room_id}/link"
12
+ end
13
+
14
+ describe ".create", type: :api do
15
+ subject do
16
+ ChatWork::InvitationLink.create(
17
+ room_id: room_id,
18
+ code: code,
19
+ description: description,
20
+ need_acceptance: need_acceptance,
21
+ )
22
+ end
23
+
24
+ let(:room_id) { 123 }
25
+ let(:code) { "unique-link-name" }
26
+ let(:description) { "This is a public room for topic A." }
27
+ let(:need_acceptance) { true }
28
+
29
+ before do
30
+ stub_chatwork_request(:post, "/rooms/#{room_id}/link", "/rooms/{room_id}/link")
31
+ end
32
+
33
+ it_behaves_like :a_chatwork_api, :post, "/rooms/{room_id}/link"
34
+ end
35
+
36
+ describe ".update", type: :api do
37
+ subject do
38
+ ChatWork::InvitationLink.update(
39
+ room_id: room_id,
40
+ code: code,
41
+ description: description,
42
+ need_acceptance: need_acceptance,
43
+ )
44
+ end
45
+
46
+ let(:room_id) { 123 }
47
+ let(:code) { "another_link_name" }
48
+ let(:description) { "Public room for everybody" }
49
+ let(:need_acceptance) { false }
50
+
51
+ before do
52
+ stub_chatwork_request(:put, "/rooms/#{room_id}/link", "/rooms/{room_id}/link")
53
+ end
54
+
55
+ it_behaves_like :a_chatwork_api, :put, "/rooms/{room_id}/link"
56
+ end
57
+
58
+ describe ".destroy", type: :api do
59
+ subject { ChatWork::InvitationLink.destroy(room_id: room_id) }
60
+
61
+ let(:room_id) { 123 }
62
+
63
+ before do
64
+ stub_chatwork_request(:delete, "/rooms/#{room_id}/link", "/rooms/{room_id}/link")
65
+ end
66
+
67
+ it_behaves_like :a_chatwork_api, :delete, "/rooms/{room_id}/link"
68
+ end
69
+ end
@@ -20,12 +20,18 @@ describe ChatWork::Room do
20
20
  members_member_ids: members_member_ids,
21
21
  members_readonly_ids: members_readonly_ids,
22
22
  name: name,
23
+ link: link,
24
+ link_code: link_code,
25
+ link_need_acceptance: link_need_acceptance,
23
26
  )
24
27
  end
25
28
 
26
- let(:description) { "group chat description" }
27
- let(:icon_preset) { "meeting" }
28
- let(:name) { "Website renewal project" }
29
+ let(:description) { "group chat description" }
30
+ let(:icon_preset) { "meeting" }
31
+ let(:name) { "Website renewal project" }
32
+ let(:link) { false }
33
+ let(:link_need_acceptance) { true }
34
+ let(:link_code) { nil }
29
35
 
30
36
  before do
31
37
  stub_chatwork_request(:post, "/rooms")
@@ -33,7 +33,7 @@ module RamlParser
33
33
  nil
34
34
  end
35
35
 
36
- def self.find_query_parameter_example(verb, path)
36
+ def self.find_query_parameter_example(verb, path) # rubocop:disable Metrics/MethodLength
37
37
  resource = find_resource(verb, path)
38
38
  return {} unless resource
39
39
 
@@ -41,7 +41,8 @@ module RamlParser
41
41
 
42
42
  if resource["queryParameters"]
43
43
  resource["queryParameters"].each do |name, value|
44
- parameter_example[name] = value["example"]
44
+ example = find_example(value)
45
+ parameter_example[name] = example if example
45
46
  end
46
47
  end
47
48
 
@@ -52,7 +53,8 @@ module RamlParser
52
53
  next unless trait["queryParameters"]
53
54
 
54
55
  trait["queryParameters"].each do |name, value|
55
- parameter_example[name] = value["example"]
56
+ example = find_example(value)
57
+ parameter_example[name] = example if example
56
58
  end
57
59
  end
58
60
  end
@@ -77,4 +79,25 @@ module RamlParser
77
79
  response_json
78
80
  end
79
81
  private_class_method :parse_response
82
+
83
+ def self.find_example(value)
84
+ example =
85
+ if value.has_key?("example")
86
+ value["example"]
87
+ elsif value.has_key?("default")
88
+ value["default"]
89
+ end
90
+
91
+ return nil if example.nil?
92
+
93
+ case example
94
+ when true
95
+ 1
96
+ when false
97
+ 0
98
+ else
99
+ example
100
+ end
101
+ end
102
+ private_class_method :find_example
80
103
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chatwork
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.2
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - asonas
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-01-31 00:00:00.000000000 Z
12
+ date: 2018-02-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: faraday
@@ -279,6 +279,7 @@ files:
279
279
  - lib/chatwork/entity_methods.rb
280
280
  - lib/chatwork/file.rb
281
281
  - lib/chatwork/incoming_request.rb
282
+ - lib/chatwork/invitation_link.rb
282
283
  - lib/chatwork/me.rb
283
284
  - lib/chatwork/member.rb
284
285
  - lib/chatwork/message.rb
@@ -295,6 +296,7 @@ files:
295
296
  - spec/lib/chatwork/entity_methods_spec.rb
296
297
  - spec/lib/chatwork/file_spec.rb
297
298
  - spec/lib/chatwork/incoming_request_spec.rb
299
+ - spec/lib/chatwork/invitation_link_spec.rb
298
300
  - spec/lib/chatwork/me_spec.rb
299
301
  - spec/lib/chatwork/member_spec.rb
300
302
  - spec/lib/chatwork/message_spec.rb
@@ -342,6 +344,7 @@ test_files:
342
344
  - spec/lib/chatwork/entity_methods_spec.rb
343
345
  - spec/lib/chatwork/file_spec.rb
344
346
  - spec/lib/chatwork/incoming_request_spec.rb
347
+ - spec/lib/chatwork/invitation_link_spec.rb
345
348
  - spec/lib/chatwork/me_spec.rb
346
349
  - spec/lib/chatwork/member_spec.rb
347
350
  - spec/lib/chatwork/message_spec.rb