chatwork 0.7.0 → 0.8.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 (64) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +9 -1
  3. data/README.md +113 -38
  4. data/lib/chatwork.rb +35 -3
  5. data/lib/chatwork/base_client.rb +9 -4
  6. data/lib/chatwork/client.rb +43 -8
  7. data/lib/chatwork/client/contacts_methods.rb +29 -0
  8. data/lib/chatwork/client/file_methods.rb +67 -0
  9. data/lib/chatwork/client/incoming_request_methods.rb +77 -0
  10. data/lib/chatwork/client/invitation_link_methods.rb +110 -0
  11. data/lib/chatwork/client/me_methods.rb +38 -0
  12. data/lib/chatwork/client/member_methods.rb +64 -0
  13. data/lib/chatwork/client/message_methods.rb +178 -0
  14. data/lib/chatwork/client/my_status_methods.rb +25 -0
  15. data/lib/chatwork/client/my_task_methods.rb +41 -0
  16. data/lib/chatwork/client/room_methods.rb +156 -0
  17. data/lib/chatwork/client/task_methods.rb +109 -0
  18. data/lib/chatwork/contacts.rb +6 -4
  19. data/lib/chatwork/converter.rb +18 -0
  20. data/lib/chatwork/file.rb +12 -6
  21. data/lib/chatwork/incoming_request.rb +18 -8
  22. data/lib/chatwork/invitation_link.rb +24 -20
  23. data/lib/chatwork/me.rb +6 -4
  24. data/lib/chatwork/member.rb +18 -12
  25. data/lib/chatwork/message.rb +42 -16
  26. data/lib/chatwork/my_status.rb +6 -4
  27. data/lib/chatwork/my_task.rb +6 -4
  28. data/lib/chatwork/oauth_client.rb +10 -2
  29. data/lib/chatwork/oauth_client/token_methods.rb +25 -0
  30. data/lib/chatwork/room.rb +37 -20
  31. data/lib/chatwork/task.rb +18 -14
  32. data/lib/chatwork/token.rb +1 -7
  33. data/lib/chatwork/version.rb +1 -1
  34. data/spec/lib/chatwork/client/contacts_methods_spec.rb +11 -0
  35. data/spec/lib/chatwork/client/file_methods_spec.rb +37 -0
  36. data/spec/lib/chatwork/client/incoming_request_methods_spec.rb +35 -0
  37. data/spec/lib/chatwork/client/invitation_link_methods_spec.rb +71 -0
  38. data/spec/lib/chatwork/client/me_methods_spec.rb +21 -0
  39. data/spec/lib/chatwork/client/member_methods_spec.rb +47 -0
  40. data/spec/lib/chatwork/client/message_methods_spec.rb +102 -0
  41. data/spec/lib/chatwork/client/my_status_methods_spec.rb +11 -0
  42. data/spec/lib/chatwork/client/my_task_methods_spec.rb +20 -0
  43. data/spec/lib/chatwork/client/room_methods_spec.rb +111 -0
  44. data/spec/lib/chatwork/client/task_methods_spec.rb +80 -0
  45. data/spec/lib/chatwork/client_spec.rb +8 -1
  46. data/spec/lib/chatwork/contacts_spec.rb +2 -2
  47. data/spec/lib/chatwork/{entity_methods_spec.rb → converter_spec.rb} +2 -2
  48. data/spec/lib/chatwork/file_spec.rb +2 -2
  49. data/spec/lib/chatwork/incoming_request_spec.rb +3 -3
  50. data/spec/lib/chatwork/invitation_link_spec.rb +4 -2
  51. data/spec/lib/chatwork/me_spec.rb +3 -21
  52. data/spec/lib/chatwork/member_spec.rb +2 -1
  53. data/spec/lib/chatwork/message_spec.rb +7 -7
  54. data/spec/lib/chatwork/my_status_spec.rb +1 -1
  55. data/spec/lib/chatwork/my_task_spec.rb +1 -0
  56. data/spec/lib/chatwork/{token_spec.rb → oauth_client/token_methods_spec.rb} +4 -7
  57. data/spec/lib/chatwork/oauth_client_spec.rb +7 -1
  58. data/spec/lib/chatwork/room_spec.rb +5 -2
  59. data/spec/lib/chatwork/task_spec.rb +3 -0
  60. data/spec/support/contexts/api_context.rb +4 -3
  61. data/spec/support/examples/a_chatwork_api.rb +22 -5
  62. data/spec/support/utils/raml_parser.rb +2 -3
  63. metadata +42 -8
  64. data/lib/chatwork/entity_methods.rb +0 -36
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4f74e386e6cd2bfdb296f318244c848833efe5281661a70fd5f2b25997e5bbcc
4
- data.tar.gz: ec96eec7324daf0413443dbae362119ed08191b89627269fdc5a757313a829c5
3
+ metadata.gz: 301622474ab7870e4bc7b6d51888c6af0f16224de722f865925b180ac8aa55b5
4
+ data.tar.gz: 745b6eaae10a5911cfd14ea8e53d587e8891e41e803fae50ba6ba502bb3b481c
5
5
  SHA512:
6
- metadata.gz: cade7059d99ac62bb9245a8f0089007605fb0f29f887c4bfa7947165180649388cfc1466dd760491023feb523584fedc0a4288d5d4f4b252d5e5e63c81374ebd
7
- data.tar.gz: 0e7b226006c9a84f650139ca991b2eebfda2576f6cad148da5b8fde20deceba3d00fd07de10d18588b2913c09384661e05d65e4b5149b2bfb886ac956a9aa651
6
+ metadata.gz: 6d3b4a9e19b02158ca9939980ab02e2f5665a98d5d004b8d63d4f2eda7e76eacddf253c1ef1c16cb17b24780bce853c04814bd3dd98763c372148fd777ca89dd
7
+ data.tar.gz: 0e65991b921fb0e541a50c2aa6cc92ac700ebcde31539bc8a562cb47d244956790f0dec64c033717fc87ca2315ef8c135fd42461d531c9a1353059357c494b58
@@ -1,6 +1,14 @@
1
1
  # Change Log
2
2
  ## Unreleased
3
- [Full Changelog](https://github.com/asonas/chatwork-ruby/compare/v0.7.0...master)
3
+ [Full Changelog](https://github.com/asonas/chatwork-ruby/compare/v0.8.0...master)
4
+
5
+ ## v0.8.0
6
+ [Full Changelog](https://github.com/asonas/chatwork-ruby/compare/v0.7.0...v0.8.0)
7
+
8
+ * Add instance methods of `ChatWork::Client`
9
+ * https://github.com/asonas/chatwork-ruby/pull/49
10
+ * Fixed. API method did not accept block
11
+ * https://github.com/asonas/chatwork-ruby/pull/50
4
12
 
5
13
  ## v0.7.0
6
14
  [Full Changelog](https://github.com/asonas/chatwork-ruby/compare/v0.6.2...v0.7.0)
data/README.md CHANGED
@@ -22,50 +22,45 @@ Or install it yourself as:
22
22
  $ gem install chatwork
23
23
 
24
24
  ## Usage
25
+ `chatwork` gem provides class method APIs and instance method APIs
25
26
 
26
- ### Case 1. with API Key
27
+ ### Class method APIs
28
+ At first, set `ChatWork.api_key` or `ChatWork.access_token`.
27
29
 
28
- ``` ruby
29
- require "chatwork"
30
-
31
- # Create message
30
+ ```ruby
32
31
  ChatWork.api_key = "XXX"
33
- ChatWork::Message.create(room_id: 1234, body: "Hello, ChatWork!")
32
+ # or
33
+ ChatWork.access_token = "XXX"
34
34
  ```
35
35
 
36
- or
37
-
38
- ``` sh
39
- $ cat send_message.rb
40
- require "chatwork"
36
+ Another way, you can use `ENV["CHATWORK_API_TOKEN"]` or `ENV["CHATWORK_ACCESS_TOKEN"]` instead of `ChatWork.api_key` or `ChatWork.access_token`.
41
37
 
42
- ChatWork::Message.create(room_id: 1234, body: "Hello, ChatWork!")
43
- $ CHATWORK_API_TOKEN=xxx ruby send_message.rb
44
- ```
38
+ Then call class methods.
45
39
 
46
- ### Case 2. with OAuth access token
47
- ``` ruby
48
- require "chatwork"
40
+ e.g. post message.
49
41
 
50
- # Create message
51
- ChatWork.access_token = "XXX"
42
+ ```ruby
52
43
  ChatWork::Message.create(room_id: 1234, body: "Hello, ChatWork!")
44
+ #=> #<Hashie::Mash message_id="1234567890">
53
45
  ```
54
46
 
55
- or
56
-
57
- ``` sh
58
- $ cat send_message_with_access_token.rb
59
- require "chatwork"
47
+ All available APIs are followings.
60
48
 
61
- ChatWork::Message.create(room_id: 1234, body: "Hello, ChatWork!")
62
- $ CHATWORK_ACCESS_TOKEN=xxx ruby send_message_with_access_token.rb
63
- ```
49
+ * [ChatWork::Contacts](lib/chatwork/contacts.rb)
50
+ * [ChatWork::File](lib/chatwork/file.rb)
51
+ * [ChatWork::IncomingRequest](lib/chatwork/incoming_request.rb)
52
+ * [ChatWork::InvitationLink](lib/chatwork/invitation_link.rb)
53
+ * [ChatWork::Me](lib/chatwork/me.rb)
54
+ * [ChatWork::Member](lib/chatwork/member.rb)
55
+ * [ChatWork::Message](lib/chatwork/message.rb)
56
+ * [ChatWork::MyStatus](lib/chatwork/my_status.rb)
57
+ * [ChatWork::MyTask](lib/chatwork/my_task.rb)
58
+ * [ChatWork::Room](lib/chatwork/room.rb)
59
+ * [ChatWork::Task](lib/chatwork/task.rb)
64
60
 
65
- ### Case 3. Refresh access token with refresh token
66
- ``` ruby
67
- require "chatwork"
61
+ When you want to refresh access token, call [`ChatWork::Token.refresh_access_token`](lib/chatwork/token.rb).
68
62
 
63
+ ```ruby
69
64
  ChatWork.client_id = "XXX"
70
65
  ChatWork.client_secret = "XXX"
71
66
  refresh_token = "XXX"
@@ -77,19 +72,99 @@ ChatWork.access_token = new_access_token
77
72
  ChatWork::Message.create(room_id: 1234, body: "Hello, ChatWork!")
78
73
  ```
79
74
 
80
- or
75
+ Another way, you can use `ENV["CHATWORK_CLIENT_ID"]` or `ENV["CHATWORK_CLIENT_SECRET"]` instead of `ChatWork.api_key` or `ChatWork.access_token`.
76
+
77
+ ### Instance method APIs
78
+ ```ruby
79
+ client = ChatWork::Client.new(api_key: "XXX")
80
+ #or
81
+ client = ChatWork::Client.new(access_token: "XXX")
82
+ ```
83
+
84
+ Then call instance methods.
85
+
86
+ e.g. post message.
87
+
88
+ ```ruby
89
+ client.create_message(room_id: 1234, body: "Hello, ChatWork!")
90
+ #=> #<Hashie::Mash message_id="1234567890">
91
+ ```
92
+
93
+ All available APIs are followings.
94
+
95
+ http://www.rubydoc.info/gems/chatwork/ChatWork/Client
81
96
 
82
- ``` sh
83
- $ cat refresh_access_token.rb
84
- require "chatwork"
97
+ When you want to refresh access token, call [`ChatWork::OAuthClient#refresh_access_token`](lib/chatwork/oauth_client/token_methods.rb).
85
98
 
86
- token = ChatWork::Token.refresh_access_token(ENV["REFRESH_TOKEN"])
99
+ ```ruby
100
+ refresh_token = "XXX"
101
+ oauth_client = ChatWork::OAuthClient.new(client_id: "xxx", client_secret: "xxx")
102
+ token = oauth_client.refresh_access_token(refresh_token)
87
103
  new_access_token = token["access_token"]
88
104
 
89
105
  # Create message
90
- ChatWork.access_token = new_access_token
91
- ChatWork::Message.create(room_id: 1234, body: "Hello, ChatWork!")
92
- $ CHATWORK_CLIENT_ID=xxx CHATWORK_CLIENT_SECRET=xxx REFRESH_TOKEN=xxx ruby refresh_access_token.rb
106
+ client = ChatWork::Client.new(access_token: new_access_token)
107
+ client.create_message(room_id: 1234, body: "Hello, ChatWork!")
108
+ ```
109
+
110
+ ### Pros/Cons
111
+ Class method APIs are simple, but **not threadsafe**. Instance method APIs are **threadsafe**.
112
+
113
+ If you are using multiple `api_key` or `access_token` in an app and using multithreaded server (e.g. [puma](https://github.com/puma/puma)), we recommend instance method APIs.
114
+
115
+ ## Tips
116
+ ### Hashie::Mash
117
+ All API methods returns `Hashie::Mash` instance.
118
+
119
+ https://github.com/intridea/hashie#mash
120
+
121
+ `Hashie::Mash` is very useful!
122
+
123
+ ```ruby
124
+ body = ChatWork::Message.create(room_id: 1234, body: "Hello, ChatWork!")
125
+ #=> #<Hashie::Mash message_id="1234567890">
126
+
127
+ body["message_id"]
128
+ #=> "1234567890"
129
+
130
+ body[:message_id]
131
+ #=> "1234567890"
132
+
133
+ body.message_id
134
+ #=> "1234567890"
135
+ ```
136
+
137
+ ### Block arguments
138
+ All API methods supports block argument.
139
+
140
+ If block was given, return response body and response header through block arguments.
141
+
142
+ ```ruby
143
+ ChatWork::Message.create(room_id: 1234, body: "Hello, ChatWork!") do |body, header|
144
+ body
145
+ #=> #<Hashie::Mash message_id="1234567890">
146
+
147
+ header["X-RateLimit-Limit"]
148
+ #=> "100"
149
+ header["X-RateLimit-Remaining"]
150
+ #=> "0"
151
+ header["X-RateLimit-Reset"]
152
+ #=> "1390941626"
153
+ end
154
+ ```
155
+
156
+ ```ruby
157
+ client.create_message(room_id: 1234, body: "Hello, ChatWork!") do |body, header|
158
+ body
159
+ #=> #<Hashie::Mash message_id="1234567890">
160
+
161
+ header["X-RateLimit-Limit"]
162
+ #=> "100"
163
+ header["X-RateLimit-Remaining"]
164
+ #=> "0"
165
+ header["X-RateLimit-Reset"]
166
+ #=> "1390941626"
167
+ end
93
168
  ```
94
169
 
95
170
  ## Reference
@@ -9,7 +9,7 @@ module ChatWork
9
9
  autoload :ChatWorkError, "chatwork/chatwork_error"
10
10
  autoload :Client, "chatwork/client"
11
11
  autoload :Contacts, "chatwork/contacts"
12
- autoload :EntityMethods, "chatwork/entity_methods"
12
+ autoload :Converter, "chatwork/converter"
13
13
  autoload :File, "chatwork/file"
14
14
  autoload :IncomingRequest, "chatwork/incoming_request"
15
15
  autoload :InvitationLink, "chatwork/invitation_link"
@@ -32,64 +32,96 @@ module ChatWork
32
32
  @client_secret = nil
33
33
 
34
34
  class << self
35
+ # @!attribute [r] api_base
36
+ # @return [String]
35
37
  attr_reader :api_base
36
38
 
39
+ # @!attribute [r] oauth_api_base
40
+ # @return [String]
37
41
  attr_reader :oauth_api_base
38
42
 
43
+ # @!attribute [r] api_version
44
+ # @return [String]
39
45
  attr_reader :api_version
40
46
 
47
+ # @return [ChatWork::Client]
41
48
  def client
42
- @client ||= Client.new(api_key, access_token, api_base, api_version)
49
+ @client ||= Client.new(api_key: api_key, access_token: access_token)
43
50
  end
44
51
 
52
+ # @return [ChatWork::OAuthClient]
45
53
  def oauth_client
46
- @oauth_client ||= OAuthClient.new(client_id, client_secret, oauth_api_base)
54
+ @oauth_client ||= OAuthClient.new(client_id: client_id, client_secret: client_secret)
47
55
  end
48
56
 
57
+ # @param new_value [String]
49
58
  def api_base=(new_value)
50
59
  @api_base = new_value
51
60
  @client = nil
52
61
  end
53
62
 
63
+ # @param new_value [String]
64
+ def api_version=(new_value)
65
+ @api_version = new_value
66
+ @client = nil
67
+ end
68
+
69
+ # @param new_value [String]
54
70
  def oauth_api_base=(new_value)
55
71
  @oauth_api_base = new_value
56
72
  @oauth_client = nil
57
73
  end
58
74
 
75
+ # @param new_value [String]
59
76
  def api_key=(new_value)
60
77
  @api_key = new_value
61
78
  @access_token = nil
62
79
  @client = nil
63
80
  end
64
81
 
82
+ # @param new_value [String]
65
83
  def access_token=(new_value)
66
84
  @api_key = nil
67
85
  @access_token = new_value
68
86
  @client = nil
69
87
  end
70
88
 
89
+ # @param new_value [String]
71
90
  def client_id=(new_value)
72
91
  @client_id = new_value
73
92
  @oauth_client = nil
74
93
  end
75
94
 
95
+ # @param new_value [String]
76
96
  def client_secret=(new_value)
77
97
  @client_secret = new_value
78
98
  @oauth_client = nil
79
99
  end
80
100
 
101
+ # @return [String]
102
+ #
103
+ # @note if {ChatWork.api_key} is not defined, returns `ENV["CHATWORK_API_TOKEN"]`
81
104
  def api_key
82
105
  @api_key || ENV["CHATWORK_API_TOKEN"]
83
106
  end
84
107
 
108
+ # @return [String]
109
+ #
110
+ # @note if {ChatWork.access_token} is not defined, returns `ENV["CHATWORK_ACCESS_TOKEN"]`
85
111
  def access_token
86
112
  @access_token || ENV["CHATWORK_ACCESS_TOKEN"]
87
113
  end
88
114
 
115
+ # @return [String]
116
+ #
117
+ # @note if {ChatWork.client_id} is not defined, returns `ENV["CHATWORK_CLIENT_ID"]`
89
118
  def client_id
90
119
  @client_id || ENV["CHATWORK_CLIENT_ID"]
91
120
  end
92
121
 
122
+ # @return [String]
123
+ #
124
+ # @note if {ChatWork.client_secret} is not defined, returns `ENV["CHATWORK_CLIENT_SECRET"]`
93
125
  def client_secret
94
126
  @client_secret || ENV["CHATWORK_CLIENT_SECRET"]
95
127
  end
@@ -3,14 +3,19 @@ require "faraday_middleware"
3
3
 
4
4
  module ChatWork
5
5
  class BaseClient
6
- def initialize(api_base, api_version, header)
6
+ include Converter
7
+
8
+ # @param api_base [String]
9
+ # @param api_version [String]
10
+ # @param header [Hash<String,String>]
11
+ def initialize(api_base:, api_version: "", header:)
7
12
  default_header = {
8
13
  "User-Agent" => "ChatWork#{api_version} RubyBinding/#{ChatWork::VERSION}",
9
14
  }
10
15
 
11
16
  default_header.merge!(header)
12
17
 
13
- @conn = Faraday.new("#{api_base}#{api_version}", headers: default_header) do |builder|
18
+ @conn = Faraday.new(api_base, headers: default_header) do |builder|
14
19
  builder.request :url_encoded
15
20
  builder.response :mashify
16
21
  builder.response :json
@@ -29,9 +34,9 @@ module ChatWork
29
34
  end
30
35
 
31
36
  Faraday::Connection::METHODS.each do |method|
32
- define_method(method) do |url, *args, &block|
37
+ define_method(method) do |url, args = {}, &block|
33
38
  begin
34
- response = @conn.__send__(method, @api_version + url, *args)
39
+ response = @conn.__send__(method, @api_version + url, hash_compact(args))
35
40
  rescue Faraday::Error::ClientError => e
36
41
  raise ChatWork::APIConnectionError.faraday_error(e)
37
42
  end
@@ -1,13 +1,48 @@
1
1
  module ChatWork
2
2
  class Client < BaseClient
3
- def initialize(api_key, access_token, api_base, api_version)
4
- if api_key
5
- super(api_base, api_version, { "X-ChatWorkToken" => api_key })
6
- elsif access_token
7
- super(api_base, api_version, { "Authorization" => "Bearer #{access_token}" })
8
- else
9
- raise "Either api_key or access_token is required"
10
- end
3
+ require "chatwork/client/contacts_methods"
4
+ require "chatwork/client/file_methods"
5
+ require "chatwork/client/incoming_request_methods"
6
+ require "chatwork/client/invitation_link_methods"
7
+ require "chatwork/client/me_methods"
8
+ require "chatwork/client/member_methods"
9
+ require "chatwork/client/message_methods"
10
+ require "chatwork/client/my_status_methods"
11
+ require "chatwork/client/my_task_methods"
12
+ require "chatwork/client/room_methods"
13
+ require "chatwork/client/task_methods"
14
+
15
+ include ContactsMethods
16
+ include FileMethods
17
+ include IncomingRequestMethods
18
+ include InvitationLinkMethods
19
+ include MeMethods
20
+ include MemberMethods
21
+ include MessageMethods
22
+ include MyStatusMethods
23
+ include MyTaskMethods
24
+ include RoomMethods
25
+ include TaskMethods
26
+
27
+ # @param api_key [String]
28
+ # @param access_token [String]
29
+ # @param api_base [String] default is {ChatWork.api_base}
30
+ # @param api_version [String] default is {ChatWork.api_version}
31
+ # @note Either api_key or access_token is required
32
+ def initialize(api_key: nil, access_token: nil, api_base: nil, api_version: nil)
33
+ api_base ||= ChatWork.api_base
34
+ api_version ||= ChatWork.api_version
35
+
36
+ header =
37
+ if api_key
38
+ { "X-ChatWorkToken" => api_key }
39
+ elsif access_token
40
+ { "Authorization" => "Bearer #{access_token}" }
41
+ else
42
+ raise "Either api_key or access_token is required"
43
+ end
44
+
45
+ super(api_base: api_base, api_version: api_version, header: header)
11
46
  end
12
47
  end
13
48
  end
@@ -0,0 +1,29 @@
1
+ module ChatWork::Client::ContactsMethods
2
+ # Get the list of your contacts
3
+ #
4
+ # @see http://developer.chatwork.com/ja/endpoint_contacts.html#GET-contacts
5
+ # @see http://download.chatwork.com/ChatWork_API_Documentation.pdf
6
+ #
7
+ # @yield [response_body, response_header] if block was given, return response body and response header through block arguments
8
+ # @yieldparam response_body [Array<Hashie::Mash>] response body
9
+ # @yieldparam response_header [Hash<String, String>] response header (e.g. X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset)
10
+ #
11
+ # @return [Array<Hashie::Mash>]
12
+ #
13
+ # @example response format
14
+ # [
15
+ # {
16
+ # "account_id": 123,
17
+ # "room_id": 322,
18
+ # "name": "John Smith",
19
+ # "chatwork_id": "tarochatworkid",
20
+ # "organization_id": 101,
21
+ # "organization_name": "Hello Company",
22
+ # "department": "Marketing",
23
+ # "avatar_image_url": "https://example.com/abc.png"
24
+ # }
25
+ # ]
26
+ def get_contacts(&block)
27
+ get("/contacts", &block)
28
+ end
29
+ end
@@ -0,0 +1,67 @@
1
+ module ChatWork::Client::FileMethods
2
+ # Get the list of files associated with the specified chat
3
+ #
4
+ # @param room_id [Integer]
5
+ # @param account_id [Integer]
6
+ #
7
+ # @see http://developer.chatwork.com/ja/endpoint_rooms.html#GET-rooms-room_id-files
8
+ # @see http://download.chatwork.com/ChatWork_API_Documentation.pdf
9
+ #
10
+ # @yield [response_body, response_header] if block was given, return response body and response header through block arguments
11
+ # @yieldparam response_body [Array<Hashie::Mash>] response body
12
+ # @yieldparam response_header [Hash<String, String>] response header (e.g. X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset)
13
+ #
14
+ # @return [Array<Hashie::Mash>]
15
+ #
16
+ # @example response format
17
+ # [
18
+ # {
19
+ # "file_id": 3,
20
+ # "account": {
21
+ # "account_id": 123,
22
+ # "name": "Bob",
23
+ # "avatar_image_url": "https://example.com/ico_avatar.png"
24
+ # },
25
+ # "message_id": "22",
26
+ # "filename": "README.md",
27
+ # "filesize": 2232,
28
+ # "upload_time": 1384414750
29
+ # }
30
+ # ]
31
+ def get_files(room_id:, account_id:, &block)
32
+ get("/rooms/#{room_id}/files", account_id: account_id, &block)
33
+ end
34
+
35
+ # Get information about the specified file
36
+ #
37
+ # @see http://developer.chatwork.com/ja/endpoint_rooms.html#GET-rooms-room_id-files-file_id
38
+ # @see http://download.chatwork.com/ChatWork_API_Documentation.pdf
39
+ #
40
+ # @param room_id [Integer]
41
+ # @param file_id [Integer]
42
+ # @param create_download_url [Boolean] whether or not to create a download link.
43
+ # If set to true, download like will be created for 30 seconds
44
+ #
45
+ # @yield [response_body, response_header] if block was given, return response body and response header through block arguments
46
+ # @yieldparam response_body [Hashie::Mash] response body
47
+ # @yieldparam response_header [Hash<String, String>] response header (e.g. X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset)
48
+ #
49
+ # @return [Hashie::Mash]
50
+ #
51
+ # @example response format
52
+ # {
53
+ # "file_id":3,
54
+ # "account": {
55
+ # "account_id":123,
56
+ # "name":"Bob",
57
+ # "avatar_image_url": "https://example.com/ico_avatar.png"
58
+ # },
59
+ # "message_id": "22",
60
+ # "filename": "README.md",
61
+ # "filesize": 2232,
62
+ # "upload_time": 1384414750
63
+ # }
64
+ def find_file(room_id:, file_id:, create_download_url: nil, &block)
65
+ get("/rooms/#{room_id}/files/#{file_id}", create_download_url: boolean_to_integer(create_download_url), &block)
66
+ end
67
+ end