cyby 0.1.0 → 0.1.1
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 +4 -4
- data/README.md +39 -4
- data/lib/cyby/kintone/app.rb +24 -6
- data/lib/cyby/kintone/record.rb +44 -3
- data/lib/cyby/kintone/rest_api.rb +24 -4
- data/lib/cyby/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 53aa37324f5116067ffb2c6f162f39582d9747c4
|
4
|
+
data.tar.gz: e690a048a7c5214b2859d7e984d2223a95c0000b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a52c55e6cdcd89396a46428f2a7886005b5a1e592fc0f201bbcab8a1cc4090773a58832ca09d2dbc971f2cbdda5784cb484174595a3d0c13fe3f24bb2f5a7ec0
|
7
|
+
data.tar.gz: 2e9463720c254d369bd1d597818c9ebf75fc9b792f33241d58272b6330fda7dbe146bdfeba9958eeeaabb7d874b82918aaf9fc39c554d5283c052a3bbe4287f5
|
data/README.md
CHANGED
@@ -24,7 +24,7 @@ And then create '.cyby.yml' file in your home dirctory.
|
|
24
24
|
|
25
25
|
### Usage
|
26
26
|
|
27
|
-
|
27
|
+
Get records.
|
28
28
|
|
29
29
|
require 'cyby'
|
30
30
|
|
@@ -50,9 +50,44 @@ Require in ruby script.
|
|
50
50
|
# Select the fields.
|
51
51
|
app.select("id", "name", "create_at").map { |record| [record.id, record.name, record.create_at] }
|
52
52
|
|
53
|
-
#
|
54
|
-
app.select("id", "name").where("name like ?, "Bob").asc("id").each
|
53
|
+
# Using method chain
|
54
|
+
app.select("id", "name").where("name like ?, "Bob").asc("id").each
|
55
|
+
|
56
|
+
# Building complex query
|
57
|
+
relation = app.relation
|
58
|
+
if num > 10
|
59
|
+
relation.and("id < ?", num)
|
60
|
+
end
|
61
|
+
if time < Time.new(2015, 1, 1)
|
62
|
+
relation.and("create_at < ?", time)
|
63
|
+
end
|
64
|
+
if str.length >= 8
|
65
|
+
relation.and("name like ?" str)
|
66
|
+
end
|
67
|
+
unless sort.nil?
|
68
|
+
relation.asc(sort)
|
69
|
+
end
|
70
|
+
records = relation.all
|
71
|
+
|
72
|
+
Create a record.
|
73
|
+
|
74
|
+
record = app.new_record
|
75
|
+
record.name = "hiroponz"
|
76
|
+
record.save
|
77
|
+
|
78
|
+
Update a record.
|
79
|
+
|
80
|
+
record = app.where("id = 1").first
|
81
|
+
record.age = 30
|
82
|
+
record.save
|
83
|
+
|
84
|
+
Delete a record.
|
85
|
+
|
86
|
+
record = app.where("id = 1").first
|
87
|
+
record.delete
|
88
|
+
|
89
|
+
See the [official reference](https://cybozudev.zendesk.com/hc/ja/categories/200147600-kintone-API) to know kintone API details.
|
55
90
|
|
56
91
|
### Author
|
57
92
|
|
58
|
-
Hiroyuki Sato <hiroyuki_sato@spiber.jp>
|
93
|
+
Hiroyuki Sato <hiroyuki_sato@spiber.jp>
|
data/lib/cyby/kintone/app.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
module Cyby
|
2
2
|
module Kintone
|
3
3
|
class App
|
4
|
-
attr_reader :last_response
|
5
4
|
LIMIT = 100
|
6
5
|
|
7
6
|
def initialize(id)
|
@@ -26,13 +25,32 @@ module Cyby
|
|
26
25
|
queries << "offset #{LIMIT * page}"
|
27
26
|
end
|
28
27
|
params_per_page[:query] = queries.join(" ")
|
29
|
-
|
30
|
-
|
31
|
-
|
28
|
+
response = @api.get('/records.json', params_per_page)
|
29
|
+
response['records'].map do |record|
|
30
|
+
Record.new(self, record)
|
32
31
|
end
|
33
|
-
|
34
|
-
|
32
|
+
end
|
33
|
+
|
34
|
+
def save(record)
|
35
|
+
json = record.to_json_for_save
|
36
|
+
if json[:id]
|
37
|
+
resp = @api.put("/record.json", json)
|
38
|
+
else
|
39
|
+
resp = @api.post("/record.json", json)
|
40
|
+
record["$id"] = resp["id"]
|
35
41
|
end
|
42
|
+
record["$revision"] = resp["revision"]
|
43
|
+
true
|
44
|
+
end
|
45
|
+
|
46
|
+
def delete(record)
|
47
|
+
json = { ids: [record["$id"]] }
|
48
|
+
@api.delete("/records.json", json)
|
49
|
+
true
|
50
|
+
end
|
51
|
+
|
52
|
+
def new_record
|
53
|
+
Record.new(self)
|
36
54
|
end
|
37
55
|
|
38
56
|
def relation
|
data/lib/cyby/kintone/record.rb
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
module Cyby
|
2
2
|
module Kintone
|
3
3
|
class Record
|
4
|
-
def initialize(raw)
|
4
|
+
def initialize(app, raw = {})
|
5
|
+
@app = app
|
5
6
|
@raw = raw
|
6
7
|
end
|
7
8
|
|
@@ -9,12 +10,28 @@ module Cyby
|
|
9
10
|
if @raw.key?(key)
|
10
11
|
convert(@raw[key])
|
11
12
|
else
|
12
|
-
fail "'#{key}'
|
13
|
+
fail "'#{key}' doesn't exist"
|
13
14
|
end
|
14
15
|
end
|
15
16
|
|
17
|
+
def []=(key, value)
|
18
|
+
@raw[key] ||= {}
|
19
|
+
case key
|
20
|
+
when "$id"
|
21
|
+
@raw[key]["type"] = "__ID__"
|
22
|
+
when "$revision"
|
23
|
+
@raw[key]["type"] = "__REVISION__"
|
24
|
+
end
|
25
|
+
@raw[key]["value"] = value
|
26
|
+
end
|
27
|
+
|
16
28
|
def method_missing(method_name, *args)
|
17
|
-
|
29
|
+
key = method_name.to_s
|
30
|
+
if key[-1] == "="
|
31
|
+
self.[]=(key[0..-2], args[0])
|
32
|
+
else
|
33
|
+
self.[](key)
|
34
|
+
end
|
18
35
|
end
|
19
36
|
|
20
37
|
def inspect
|
@@ -25,6 +42,30 @@ module Cyby
|
|
25
42
|
hash.inspect
|
26
43
|
end
|
27
44
|
|
45
|
+
def save
|
46
|
+
@app.save(self)
|
47
|
+
end
|
48
|
+
|
49
|
+
def delete
|
50
|
+
@app.delete(self)
|
51
|
+
end
|
52
|
+
|
53
|
+
def to_json_for_save
|
54
|
+
record = @raw.select do |key, value|
|
55
|
+
case value["type"]
|
56
|
+
when "CREATOR", "CREATED_TIME", "MODIFIER", "UPDATED_TIME", "STATUS", "STATUS_ASSIGNEE", "RECORD_NUMBER", "__REVISION__", "__ID__"
|
57
|
+
false
|
58
|
+
else
|
59
|
+
true
|
60
|
+
end
|
61
|
+
end
|
62
|
+
if @raw["$id"]
|
63
|
+
{ id: @raw["$id"]["value"], record: record }
|
64
|
+
else
|
65
|
+
{ record: record }
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
28
69
|
private
|
29
70
|
def convert(args)
|
30
71
|
type = args['type']
|
@@ -21,25 +21,45 @@ module Cyby
|
|
21
21
|
def get(path, body = {})
|
22
22
|
body.merge!(app: @app)
|
23
23
|
options = { headers: headers, body: body.to_json }
|
24
|
-
self.class.get(path, options)
|
24
|
+
resp = self.class.get(path, options)
|
25
|
+
if resp.code == 200
|
26
|
+
resp
|
27
|
+
else
|
28
|
+
fail resp["message"]
|
29
|
+
end
|
25
30
|
end
|
26
31
|
|
27
32
|
def post(path, body = {})
|
28
33
|
body.merge!(app: @app)
|
29
34
|
options = { headers: headers, body: body.to_json }
|
30
|
-
self.class.post(path, options)
|
35
|
+
resp = self.class.post(path, options)
|
36
|
+
if resp.code == 200
|
37
|
+
resp
|
38
|
+
else
|
39
|
+
fail resp["message"]
|
40
|
+
end
|
31
41
|
end
|
32
42
|
|
33
43
|
def put(path, body = {})
|
34
44
|
body.merge!(app: @app)
|
35
45
|
options = { headers: headers, body: body.to_json }
|
36
|
-
self.class.put(path, options)
|
46
|
+
resp = self.class.put(path, options)
|
47
|
+
if resp.code == 200
|
48
|
+
resp
|
49
|
+
else
|
50
|
+
fail resp["message"]
|
51
|
+
end
|
37
52
|
end
|
38
53
|
|
39
54
|
def delete(path, body = {})
|
40
55
|
body.merge!(app: @app)
|
41
56
|
options = { headers: headers, body: body.to_json }
|
42
|
-
self.class.delete(path, options)
|
57
|
+
resp = self.class.delete(path, options)
|
58
|
+
if resp.code == 200
|
59
|
+
resp
|
60
|
+
else
|
61
|
+
fail resp["message"]
|
62
|
+
end
|
43
63
|
end
|
44
64
|
end
|
45
65
|
end
|
data/lib/cyby/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cyby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hiroyuki Sato
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-04-
|
11
|
+
date: 2015-04-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|