kintone 0.1.1 → 0.1.2

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
  SHA1:
3
- metadata.gz: eff478f183ba34b92fbe55e9cfc9430abc9b3bec
4
- data.tar.gz: 2b3d0878d64405acf03a17d3cb9a222e341c0497
3
+ metadata.gz: cf4c8005133bbbca3d1167a4d6b0465f01154176
4
+ data.tar.gz: 5ffb28f4d5f8c50e13d5c67beb5d8bdee900b497
5
5
  SHA512:
6
- metadata.gz: 9d6b91023cb5a2ce0a2a176b95bef60d32572f34e1125f5213469cebfbc5256fa3f7997fc2fe32a163d840548e1162a939620c28e542357e153fd5cbe8a4f783
7
- data.tar.gz: 82a7ea80e96892f8975a08be637a4f12bbf084b907abf64b464f6ce8d5b3231b2340ce381a20dabdeb423e709da82ba479ce0bcac3b6c870ecf605362eb48a67
6
+ metadata.gz: 6a5a62448f89a07c5fb8c6638e77f2dcbbeb813ce2698003ea92f27c55d35714644d5a059be98343ea5c63d21429a0b0163a1b9e0c77b01d069f510521212fa6
7
+ data.tar.gz: b4fe9f583b016bd39c86a9dac52b40c0c7d56dd449434c17cd74676bb8cb7294b8cb3636a802fe22e31ba345b835f2355794c0366808d98fe57c9acf558598fe
data/.gitignore CHANGED
@@ -16,3 +16,4 @@ test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
18
  vendor/
19
+ sample/
data/.travis.yml CHANGED
@@ -1,5 +1,13 @@
1
+ sudo: false
1
2
  language: ruby
2
3
  rvm:
3
4
  - 2.1.0
4
5
  - 2.1.1
5
6
  - 2.1.2
7
+ - 2.1.3
8
+ - 2.1.4
9
+ - 2.1.5
10
+ - 2.1.6
11
+ - 2.2.0
12
+ - 2.2.1
13
+ - 2.2.2
data/Guardfile CHANGED
@@ -1,10 +1,10 @@
1
- guard :rspec, all_after_pass: false, all_on_start: false do
1
+ guard :rspec, all_after_pass: false, all_on_start: false, cmd: 'bundle exec rspec' do
2
2
  watch(%r{spec/.+_spec\.rb$})
3
3
  watch(%r{lib/(.+)\.rb$}) {|m| "spec/#{m[1]}_spec.rb"}
4
4
  watch(%r{lib/(.+)/.+\.rb$}) {|m| "spec/#{m[1]}_spec.rb"}
5
5
  end
6
6
 
7
- guard :rubocop, all_on_start: false do
7
+ guard :rubocop, all_on_start: false, cmd: 'bundle exec rubocop' do
8
8
  watch(%r{.+\.rb$})
9
9
  watch(%r{(?:.+/)?\.rubocop\.yml$}) { |m| File.dirname(m[0]) }
10
10
  end
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # kintone
2
2
 
3
+ [![Build Status](https://travis-ci.org/jue58/kintone.svg?branch=master)](https://travis-ci.org/jue58/kintone)
4
+
3
5
  A Ruby gem for communicating with the [kintone](https://kintone.cybozu.com/us/) REST API
4
6
 
5
7
  ## Requirements
@@ -26,6 +28,7 @@ api = Kintone::Api.new("example.cybozu.com", "Administrator", "cybozu")
26
28
  - [Record register](#record_register)
27
29
  - [Record update](#record_update)
28
30
  - [Record delete](#record_delete)
31
+ - [Bulk request](#bulk_request)
29
32
  - [Format retrieval](#format_retrieval)
30
33
  - [Permissions](#permissions)
31
34
  - [Space management](#space_management)
@@ -58,6 +61,16 @@ query =
58
61
  limit(10)
59
62
  offset(20)
60
63
  end
64
+ # or
65
+ query =
66
+ Kintone::Query.new do
67
+ f(:updated_time) > "2012-02-03T09:00:00+0900"
68
+ and!
69
+ f(:updated_time) < "2012-02-03T10:00:00+0900"
70
+ order_by(:record_id)
71
+ limit(10)
72
+ offset(20)
73
+ end
61
74
  query.to_s # => "updated_time > \"2012-02-03T09:00:00+0900\" and updated_time < \"2012-02-03T10:00:00+0900\" order by record_id asc limit 10 offset 20"
62
75
  api.records.get(app, query, fields)
63
76
 
@@ -121,12 +134,12 @@ offset | offset(30)
121
134
  # Use Hash
122
135
  app = 7
123
136
  record = {"number" => {"value" => "123456"}}
124
- api.record.register(app, record) # => {"id" => "100"}
137
+ api.record.register(app, record) # => {"id" => "100", "revision" => "1"}
125
138
 
126
139
  # Use Kintone::Type::Record
127
140
  app = 7
128
141
  record = Kintone::Type::Record.new(number: "123456")
129
- api.record.register(app, record) # => {"id" => "100"}
142
+ api.record.register(app, record) # => {"id" => "100", "revision" => "1"}
130
143
 
131
144
  # Records register(batch)
132
145
  # Use Hash
@@ -135,7 +148,7 @@ records = [
135
148
  {"number" => {"value" => "123456"}},
136
149
  {"number" => {"value" => "7890"}}
137
150
  ]
138
- api.records.register(app, records) # => {"ids" => ["100", "101"]}
151
+ api.records.register(app, records) # => {"ids" => ["100", "101"], "revisions" => ["1", "1"]}
139
152
 
140
153
  # Use Kintone::Type::Record
141
154
  app = 7
@@ -143,7 +156,7 @@ records = [
143
156
  Kintone::Type::Record.new(number: "123456"),
144
157
  Kintone::Type::Record.new(number: "7890")
145
158
  ]
146
- api.records.register(app, records) # => {"ids" => ["100", "101"]}
159
+ api.records.register(app, records) # => {"ids" => ["100", "101"], "revisions" => ["1", "1"]}
147
160
 
148
161
  # Deprecated
149
162
  api.record.create(app, record)
@@ -157,12 +170,15 @@ api.records.create(app, records)
157
170
  # Use Hash
158
171
  app = 4; id = 1
159
172
  record = {"string_multi" => {"value" => "changed!"}}
160
- api.record.update(app, id, record) # => {}
173
+ api.record.update(app, id, record) # => {"revision" => "2"}
161
174
 
162
175
  # Use Kintone::Type::Record
163
176
  app = 4; id = 1
164
177
  record = Kintone::Type::Record.new({string_multi: "changed!"})
165
- api.record.update(app, id, record) # => {}
178
+ api.record.update(app, id, record) # => {"revision" => "2"}
179
+
180
+ # With revision
181
+ api.record.update(app, id, record, revision: 1)
166
182
 
167
183
  # Records update(batch)
168
184
  # Use Hash
@@ -171,7 +187,7 @@ records = [
171
187
  {"id" => 1, "record" => {"string_multi" => {"value" => "abcdef"}}},
172
188
  {"id" => 2, "record" => {"string_multi" => {"value" => "opqrstu"}}}
173
189
  ]
174
- api.records.update(app, records) # => {}
190
+ api.records.update(app, records) # => {"records" => [{"id" => "1", "revision" => "2"}, {"id" => "2", "revision" => "2"}]}
175
191
 
176
192
  # Use Kintone::Type::Record
177
193
  app = 4
@@ -179,7 +195,14 @@ records = [
179
195
  {id: 1, record: Kintone::Type::Record.new(string_multi: "abcdef")},
180
196
  {id: 2, record: Kintone::Type::Record.new(string_multi: "opqrstu")}
181
197
  ]
182
- api.records.update(app, records) # => {}
198
+ api.records.update(app, records) # => {"records" => [{"id" => "1", "revision" => "2"}, {"id" => "2", "revision" => "2"}]}
199
+
200
+ # with revision
201
+ records = [
202
+ {id: 1, revision: 1, record: Kintone::Type::Record.new(string_multi: "abcdef")},
203
+ {id: 2, revision: 1, record: Kintone::Type::Record.new(string_multi: "opqrstu")}
204
+ ]
205
+ api.records.update(app, records)
183
206
  ```
184
207
 
185
208
  ### <a name="record_delete"> Record delete
@@ -187,6 +210,17 @@ api.records.update(app, records) # => {}
187
210
  ```ruby
188
211
  app = 8; ids = [100, 80]
189
212
  api.records.delete(app, ids) # => {}
213
+
214
+ # With revision
215
+ revisions = [1, 1]
216
+ api.records.delete(app, ids, revisions: revisions)
217
+ ```
218
+
219
+ ### <a name="bulk_request"> Bulk request
220
+
221
+ ```ruby
222
+ requests = {"requests" => [{"method" => "POST", ...}, {"method" => "PUT", ...}]}
223
+ api.bulk.request(requests) # => {"results" => [...]}
190
224
  ```
191
225
 
192
226
  ### <a name="format_retrieval"> Format retrieval
data/lib/kintone/api.rb CHANGED
@@ -2,27 +2,32 @@ require 'faraday'
2
2
  require 'faraday_middleware'
3
3
  require 'base64'
4
4
  require 'json'
5
- require 'kintone/command/record'
6
- require 'kintone/command/records'
7
- require 'kintone/command/form'
8
- require 'kintone/command/app_acl'
9
- require 'kintone/command/record_acl'
10
- require 'kintone/command/field_acl'
11
- require 'kintone/command/template_space'
12
- require 'kintone/command/space'
13
- require 'kintone/command/space_body'
14
- require 'kintone/command/space_thread'
15
- require 'kintone/command/space_members'
16
- require 'kintone/command/guests'
17
- require 'kintone/command/app'
18
- require 'kintone/command/apps'
19
- require 'kintone/command/apis'
5
+ require 'kintone/command/accessor'
20
6
  require 'kintone/api/guest'
21
7
  require 'kintone/query'
22
8
 
23
9
  class Kintone::Api
24
10
  BASE_PATH = '/k/v1/'
25
11
  COMMAND = '%s.json'
12
+ ACCESSIBLE_COMMAND = [
13
+ :record,
14
+ :records,
15
+ :form,
16
+ :app_acl,
17
+ :record_acl,
18
+ :field_acl,
19
+ :template_space,
20
+ :space,
21
+ :space_body,
22
+ :space_thread,
23
+ :space_members,
24
+ :guests,
25
+ :app,
26
+ :apps,
27
+ :apis,
28
+ :bulk_request,
29
+ :bulk
30
+ ].freeze
26
31
 
27
32
  def initialize(domain, user, password)
28
33
  token = Base64.encode64("#{user}:#{password}")
@@ -83,63 +88,15 @@ class Kintone::Api
83
88
  response.body
84
89
  end
85
90
 
86
- def record
87
- Kintone::Command::Record.new(self)
91
+ def method_missing(name, *args)
92
+ if ACCESSIBLE_COMMAND.include?(name)
93
+ CommandAccessor.send(name, self)
94
+ else
95
+ super(name, *args)
96
+ end
88
97
  end
89
98
 
90
- def records
91
- Kintone::Command::Records.new(self)
92
- end
93
-
94
- def form
95
- Kintone::Command::Form.new(self)
96
- end
97
-
98
- def app_acl
99
- Kintone::Command::AppAcl.new(self)
100
- end
101
-
102
- def record_acl
103
- Kintone::Command::RecordAcl.new(self)
104
- end
105
-
106
- def field_acl
107
- Kintone::Command::FieldAcl.new(self)
108
- end
109
-
110
- def template_space
111
- Kintone::Command::TemplateSpace.new(self)
112
- end
113
-
114
- def space
115
- Kintone::Command::Space.new(self)
116
- end
117
-
118
- def space_body
119
- Kintone::Command::SpaceBody.new(self)
120
- end
121
-
122
- def space_thread
123
- Kintone::Command::SpaceThread.new(self)
124
- end
125
-
126
- def space_members
127
- Kintone::Command::SpaceMembers.new(self)
128
- end
129
-
130
- def guests
131
- Kintone::Command::Guests.new(self)
132
- end
133
-
134
- def app
135
- Kintone::Command::App.new(self)
136
- end
137
-
138
- def apps
139
- Kintone::Command::Apps.new(self)
140
- end
141
-
142
- def apis
143
- Kintone::Command::Apis.new(self)
99
+ class CommandAccessor
100
+ extend Kintone::Command::Accessor
144
101
  end
145
102
  end
@@ -1,12 +1,31 @@
1
1
  require 'forwardable'
2
2
  require 'kintone/api'
3
- require 'kintone/command/space_guests'
3
+ require 'kintone/command/accessor'
4
4
 
5
5
  class Kintone::Api
6
6
  class Guest
7
7
  extend Forwardable
8
8
 
9
9
  GUEST_PATH = '/k/guest/%s/v1/'
10
+ ACCESSIBLE_COMMAND = [
11
+ :record,
12
+ :records,
13
+ :form,
14
+ :app_acl,
15
+ :record_acl,
16
+ :field_acl,
17
+ :space,
18
+ :space_body,
19
+ :space_thread,
20
+ :space_members,
21
+ :space_guests,
22
+ :app,
23
+ :apps,
24
+ :bulk_request,
25
+ :bulk
26
+ ].freeze
27
+
28
+ def_delegators :@api, :get, :post, :put, :delete
10
29
 
11
30
  def initialize(space_id, api)
12
31
  @api = api
@@ -17,58 +36,16 @@ class Kintone::Api
17
36
  @guest_path + (COMMAND % command)
18
37
  end
19
38
 
20
- def record
21
- Kintone::Command::Record.new(self)
22
- end
23
-
24
- def records
25
- Kintone::Command::Records.new(self)
26
- end
27
-
28
- def form
29
- Kintone::Command::Form.new(self)
30
- end
31
-
32
- def app_acl
33
- Kintone::Command::AppAcl.new(self)
34
- end
35
-
36
- def record_acl
37
- Kintone::Command::RecordAcl.new(self)
38
- end
39
-
40
- def field_acl
41
- Kintone::Command::FieldAcl.new(self)
42
- end
43
-
44
- def space
45
- Kintone::Command::Space.new(self)
46
- end
47
-
48
- def space_body
49
- Kintone::Command::SpaceBody.new(self)
50
- end
51
-
52
- def space_thread
53
- Kintone::Command::SpaceThread.new(self)
54
- end
55
-
56
- def space_members
57
- Kintone::Command::SpaceMembers.new(self)
39
+ def method_missing(name, *args)
40
+ if ACCESSIBLE_COMMAND.include?(name)
41
+ CommandAccessor.send(name, self)
42
+ else
43
+ super(name, *args)
44
+ end
58
45
  end
59
46
 
60
- def space_guests
61
- Kintone::Command::SpaceGuests.new(self)
47
+ class CommandAccessor
48
+ extend Kintone::Command::Accessor
62
49
  end
63
-
64
- def app
65
- Kintone::Command::App.new(self)
66
- end
67
-
68
- def apps
69
- Kintone::Command::Apps.new(self)
70
- end
71
-
72
- def_delegators :@api, :get, :post, :put, :delete
73
50
  end
74
51
  end
@@ -0,0 +1,99 @@
1
+ class Kintone::Command
2
+ # common
3
+ autoload :Record, 'kintone/command/record'
4
+ autoload :Records, 'kintone/command/records'
5
+ autoload :BulkRequest, 'kintone/command/bulk_request'
6
+ autoload :Form, 'kintone/command/form'
7
+ autoload :App, 'kintone/command/app'
8
+ autoload :Apps, 'kintone/command/apps'
9
+ autoload :AppAcl, 'kintone/command/app_acl'
10
+ autoload :RecordAcl, 'kintone/command/record_acl'
11
+ autoload :FieldAcl, 'kintone/command/field_acl'
12
+ autoload :Space, 'kintone/command/space'
13
+ autoload :SpaceBody, 'kintone/command/space_body'
14
+ autoload :SpaceThread, 'kintone/command/space_thread'
15
+ autoload :SpaceMembers, 'kintone/command/space_members'
16
+
17
+ # other than guest
18
+ autoload :TemplateSpace, 'kintone/command/template_space'
19
+ autoload :Guests, 'kintone/command/guests'
20
+ autoload :Apis, 'kintone/command/apis'
21
+
22
+ # guest only
23
+ autoload :SpaceGuests, 'kintone/command/space_guests'
24
+
25
+ module Accessor
26
+ # common
27
+ def record(api)
28
+ Record.new(api)
29
+ end
30
+
31
+ def records(api)
32
+ Records.new(api)
33
+ end
34
+
35
+ def bulk_request(api)
36
+ BulkRequest.new(api)
37
+ end
38
+
39
+ def form(api)
40
+ Form.new(api)
41
+ end
42
+
43
+ def app(api)
44
+ App.new(api)
45
+ end
46
+
47
+ def apps(api)
48
+ Apps.new(api)
49
+ end
50
+
51
+ def app_acl(api)
52
+ AppAcl.new(api)
53
+ end
54
+
55
+ def record_acl(api)
56
+ RecordAcl.new(api)
57
+ end
58
+
59
+ def field_acl(api)
60
+ FieldAcl.new(api)
61
+ end
62
+
63
+ def space(api)
64
+ Space.new(api)
65
+ end
66
+
67
+ def space_body(api)
68
+ SpaceBody.new(api)
69
+ end
70
+
71
+ def space_thread(api)
72
+ SpaceThread.new(api)
73
+ end
74
+
75
+ def space_members(api)
76
+ SpaceMembers.new(api)
77
+ end
78
+
79
+ # other than guest
80
+ def template_space(api)
81
+ TemplateSpace.new(api)
82
+ end
83
+
84
+ def guests(api)
85
+ Guests.new(api)
86
+ end
87
+
88
+ def apis(api)
89
+ Apis.new(api)
90
+ end
91
+
92
+ # guest only
93
+ def space_guests(api)
94
+ SpaceGuests.new(api)
95
+ end
96
+
97
+ alias_method :bulk, :bulk_request
98
+ end
99
+ end