chatwork 0.5.0 → 0.6.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 (58) hide show
  1. checksums.yaml +5 -5
  2. data/.env.example +4 -0
  3. data/.gitignore +1 -0
  4. data/.gitmodules +3 -0
  5. data/.rubocop.yml +10 -0
  6. data/.travis.yml +26 -0
  7. data/.yardopts +2 -0
  8. data/CHANGELOG.md +33 -1
  9. data/Gemfile +13 -1
  10. data/README.md +15 -2
  11. data/Rakefile +2 -2
  12. data/bin/console +10 -0
  13. data/chatwork.gemspec +20 -9
  14. data/lib/chatwork.rb +32 -36
  15. data/lib/chatwork/base_client.rb +8 -11
  16. data/lib/chatwork/chatwork_error.rb +6 -16
  17. data/lib/chatwork/client.rb +2 -2
  18. data/lib/chatwork/contacts.rb +24 -8
  19. data/lib/chatwork/entity_methods.rb +36 -0
  20. data/lib/chatwork/file.rb +63 -0
  21. data/lib/chatwork/incoming_request.rb +71 -0
  22. data/lib/chatwork/me.rb +33 -8
  23. data/lib/chatwork/member.rb +55 -4
  24. data/lib/chatwork/message.rb +147 -6
  25. data/lib/chatwork/my_status.rb +25 -0
  26. data/lib/chatwork/my_task.rb +36 -8
  27. data/lib/chatwork/oauth_client.rb +3 -3
  28. data/lib/chatwork/room.rb +119 -6
  29. data/lib/chatwork/task.rb +96 -4
  30. data/lib/chatwork/token.rb +2 -2
  31. data/lib/chatwork/version.rb +1 -1
  32. data/spec/lib/chatwork/chatwork_error_spec.rb +10 -8
  33. data/spec/lib/chatwork/client_spec.rb +14 -14
  34. data/spec/lib/chatwork/contacts_spec.rb +11 -0
  35. data/spec/lib/chatwork/entity_methods_spec.rb +21 -0
  36. data/spec/lib/chatwork/file_spec.rb +37 -0
  37. data/spec/lib/chatwork/incoming_request_spec.rb +35 -0
  38. data/spec/lib/chatwork/me_spec.rb +39 -0
  39. data/spec/lib/chatwork/member_spec.rb +40 -9
  40. data/spec/lib/chatwork/message_spec.rb +102 -0
  41. data/spec/lib/chatwork/my_status_spec.rb +13 -0
  42. data/spec/lib/chatwork/my_task_spec.rb +19 -0
  43. data/spec/lib/chatwork/oauth_client_spec.rb +7 -7
  44. data/spec/lib/chatwork/room_spec.rb +102 -0
  45. data/spec/lib/chatwork/task_spec.rb +77 -0
  46. data/spec/lib/chatwork/token_spec.rb +26 -7
  47. data/spec/lib/chatwork_spec.rb +26 -19
  48. data/spec/lib/support/utils/raml_parser_spec.rb +96 -0
  49. data/spec/spec_helper.rb +32 -6
  50. data/spec/support/contexts/api_context.rb +43 -0
  51. data/spec/support/examples/a_chatwork_api.rb +12 -0
  52. data/spec/support/matchers/match_example.rb +16 -0
  53. data/spec/support/utils/raml_parser.rb +86 -0
  54. metadata +214 -10
  55. data/lib/chatwork/entity.rb +0 -29
  56. data/lib/chatwork/operations.rb +0 -48
  57. data/spec/shared_oauth_stubs.rb +0 -49
  58. data/spec/shared_stubs.rb +0 -39
@@ -1,29 +0,0 @@
1
- module ChatWork
2
- class Entity
3
- class << self
4
- include Operations
5
- def convert(hash)
6
- # not implement
7
- #converter = ResponseConverter.new
8
- #converter.convert(hash)
9
- return hash
10
- end
11
- end
12
-
13
- attr_reader :attributes
14
-
15
- def initialize(attributes)
16
- @attributes = attributes
17
- end
18
-
19
- private
20
-
21
- # not implement
22
- def update_attributes(attributes)
23
- raise "unexpected object" if attributes['object'] != @attributes['object']
24
- new_object = ResponseConverter.new.convert(attributes)
25
- @attributes = new_object.attributes
26
- self
27
- end
28
- end
29
- end
@@ -1,48 +0,0 @@
1
- module ChatWork
2
- module Operations
3
- ACCEPT_PARAMS_ID = %i(file_id task_id message_id)
4
-
5
- attr_accessor :assign_path
6
-
7
- def install_class_operations(*operations)
8
- define_create if operations.include?(:create)
9
- define_get if operations.include?(:get)
10
- end
11
-
12
- def define_get
13
- instance_eval do
14
- def get(params = {}, &block)
15
- @assign_path = parse_if_hash_key_exists(path, params, :room_id)
16
- attach_nested_resource_id(params)
17
- convert(ChatWork.client.get(@assign_path, params, &block))
18
- end
19
- end
20
- end
21
-
22
- def define_create
23
- instance_eval do
24
- def create(params = {}, &block)
25
- @assign_path = parse_if_hash_key_exists(path, params, :room_id)
26
- attach_nested_resource_id(params)
27
- convert(ChatWork.client.post(@assign_path, params, &block))
28
- end
29
- end
30
- end
31
-
32
- private
33
- def parse_if_hash_key_exists(string, hash, key)
34
- if hash.include?(key)
35
- string % hash.delete(key)
36
- else
37
- string
38
- end
39
- end
40
-
41
- def attach_nested_resource_id(params)
42
- ACCEPT_PARAMS_ID.each do |id_name|
43
- next unless params.include? id_name
44
- @assign_path += "/#{params.delete(id_name)}"
45
- end
46
- end
47
- end
48
- end
@@ -1,49 +0,0 @@
1
- require 'faraday'
2
-
3
- RSpec.shared_context "shared oauth stubs" do
4
- let(:client_id) { 'client_id' }
5
- let(:client_secret) { 'client_secret' }
6
- let(:refresh_token) { 'refresh_token' }
7
- let(:api_version) { ChatWork.api_version }
8
- let(:oauth_api_base) { ChatWork.oauth_api_base }
9
- let(:signature) { 'Y2xpZW50X2lkOmNsaWVudF9zZWNyZXQ=' }
10
-
11
- let(:test_adapter) {
12
- token = {
13
- access_token: 'new_access_token',
14
- token_type: 'Bearer',
15
- expires_in: '1800',
16
- refresh_token: refresh_token,
17
- scope: 'users.all:read rooms.all:read_write contacts.all:read_write'
18
- }
19
-
20
- Faraday::Adapter::Test::Stubs.new do |stub|
21
- stub.post("/token") {
22
- [200,
23
- {"Content-Type" => "application/json"},
24
- token.to_json ]
25
- }
26
- end
27
- }
28
-
29
- let(:faraday) {
30
- default_header = {
31
- 'Authorization': "Basic #{signature}",
32
- 'User-Agent': "ChatWork#{api_version} RubyBinding/#{ChatWork::VERSION}"
33
- }
34
- Faraday.new(oauth_api_base, headers: default_header) do |builder|
35
- builder.request :url_encoded
36
- builder.adapter Faraday.default_adapter
37
- builder.adapter :test, test_adapter
38
- end
39
- }
40
-
41
- let(:oauth_client) {
42
- allow(Faraday).to receive(:new).and_return(faraday)
43
- ChatWork::OAuthClient.new(client_id, client_secret, oauth_api_base)
44
- }
45
-
46
- before(:each) do
47
- allow(ChatWork).to receive(:oauth_client).and_return(oauth_client)
48
- end
49
- end
@@ -1,39 +0,0 @@
1
- require 'faraday'
2
-
3
- RSpec.shared_context "shared stubs" do
4
- let(:api_key) { 'api_key' }
5
- let(:access_token) { nil }
6
- let(:api_version) { ChatWork.api_version }
7
- let(:api_base) { ChatWork.api_base }
8
-
9
- let(:test_adapter) {
10
- Faraday::Adapter::Test::Stubs.new do |stub|
11
- stub.get("#{api_version}/rooms/1/members") { [200,
12
- {'X-RateLimit-Limit': '100', 'X-RateLimit-Remaining': '44'},
13
- [{ "account_id"=> 123, "name"=> "John Smith"}].to_json ]
14
- }
15
- end
16
- }
17
-
18
- let(:faraday) {
19
- default_header = {
20
- 'X-ChatWorkToken': api_key,
21
- 'User-Agent': "ChatWork#{api_version} RubyBinding/#{ChatWork::VERSION}"
22
- }
23
- Faraday.new("#{api_base}#{api_version}", headers: default_header) do |builder|
24
- builder.request :url_encoded
25
- builder.adapter Faraday.default_adapter
26
- builder.adapter :test, test_adapter
27
- end
28
- }
29
-
30
- let(:client) {
31
- allow(Faraday).to receive(:new).and_return(faraday)
32
- client = ChatWork::Client.new(api_key, access_token, api_base, api_version)
33
- client
34
- }
35
-
36
- before(:each) do
37
- allow(ChatWork).to receive(:client).and_return(client)
38
- end
39
- end