kintone 0.1.1 → 0.1.2

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
  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