knackhq-client 0.1.1 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +8 -7
- data/README.md +12 -8
- data/knackhq-client.gemspec +2 -1
- data/lib/knackhq/client.rb +25 -42
- data/lib/knackhq/client/version.rb +1 -1
- metadata +19 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0337d53689c433e99665facab6e5e64514ae31e7
|
4
|
+
data.tar.gz: ba92265868729d27ab8def0c31535359c610b17e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ceb159c096f87ce1e6c3472f784f7a6f60e828e5c1759b1fc6f9be015d661b9e3c19b632ceb9cececcfb8fd7824f9eaea1d1f595f06cf22b44394749f5bc28e0
|
7
|
+
data.tar.gz: fb6b2ab515bb757fe1c13c52485c3c016e5d63164a0980e8d895076e2136a65e22c28eb4be46edcfcdb87a31aa005e87bb2f9d4c654be8b54d4ae8e1b79e13ed
|
data/Gemfile.lock
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
knackhq-client (0.
|
5
|
-
blanket_wrapper (~>
|
4
|
+
knackhq-client (0.2.0)
|
5
|
+
blanket_wrapper (~> 2.0.1)
|
6
6
|
hashie
|
7
7
|
rest-client
|
8
8
|
|
9
9
|
GEM
|
10
10
|
remote: https://rubygems.org/
|
11
11
|
specs:
|
12
|
-
addressable (2.3.
|
13
|
-
blanket_wrapper (
|
12
|
+
addressable (2.3.8)
|
13
|
+
blanket_wrapper (2.0.1)
|
14
14
|
httparty
|
15
15
|
recursive-open-struct
|
16
16
|
codeclimate-test-reporter (0.4.7)
|
@@ -33,7 +33,7 @@ GEM
|
|
33
33
|
multi_xml (0.5.5)
|
34
34
|
netrc (0.10.3)
|
35
35
|
rake (10.4.2)
|
36
|
-
recursive-open-struct (0.6.
|
36
|
+
recursive-open-struct (0.6.3)
|
37
37
|
rest-client (1.8.0)
|
38
38
|
http-cookie (>= 1.0.2, < 2.0)
|
39
39
|
mime-types (>= 1.16, < 3.0)
|
@@ -42,9 +42,9 @@ GEM
|
|
42
42
|
rspec-core (~> 3.2.0)
|
43
43
|
rspec-expectations (~> 3.2.0)
|
44
44
|
rspec-mocks (~> 3.2.0)
|
45
|
-
rspec-core (3.2.
|
45
|
+
rspec-core (3.2.3)
|
46
46
|
rspec-support (~> 3.2.0)
|
47
|
-
rspec-expectations (3.2.
|
47
|
+
rspec-expectations (3.2.1)
|
48
48
|
diff-lcs (>= 1.2.0, < 2.0)
|
49
49
|
rspec-support (~> 3.2.0)
|
50
50
|
rspec-its (1.2.0)
|
@@ -78,5 +78,6 @@ DEPENDENCIES
|
|
78
78
|
rake (~> 10.0)
|
79
79
|
rspec (~> 3.2.0)
|
80
80
|
rspec-its (~> 1.2.0)
|
81
|
+
simplecov (~> 0.9.0)
|
81
82
|
vcr (~> 2.9.0)
|
82
83
|
webmock (~> 1.20.0)
|
data/README.md
CHANGED
@@ -22,30 +22,34 @@ Or install it yourself as:
|
|
22
22
|
api = Knackhq::Client.new('knack-api-url',
|
23
23
|
x_knack_application_id,
|
24
24
|
x_knack_rest_api_key)
|
25
|
-
#GETs the request.
|
26
|
-
api.request.get
|
27
25
|
|
28
26
|
#GET all objects in api.
|
29
27
|
api.objects
|
28
|
+
#Output:
|
29
|
+
[{:name=>"Foo", :key=>"object_1"}
|
30
|
+
{:name=>"Bar", :key=>"object_2"}]
|
30
31
|
|
31
32
|
#GET object_1 fields
|
32
33
|
api.fields('object_1')
|
34
|
+
#Output:
|
35
|
+
[{:label=>"Number", :key=>"field_1", :type=>"float", :required=>false, :field_type=>"number"},
|
36
|
+
{:label=>"Last Date", :key=>"field_12", :type=>"datetime", :required=>false, :field_type=>"date_time"}]
|
33
37
|
|
34
38
|
#GET object_1 records
|
35
39
|
api.records('object_1')
|
36
|
-
|
37
|
-
|
38
|
-
api.records_by_page('object_1')
|
39
|
-
|
40
|
-
#Get object_1 info on records
|
41
|
-
api.records_info('object_1')
|
40
|
+
#Output:
|
41
|
+
{:total_pages=>2, :current_page=>1, :total_records=>28, :records=>[{:id=>"23456", :account_status=>"active", :approval_status=>"approved", :profile_keys=>"Bar", :profile_keys_raw=>[{:id=>"12345", :identifier=>"Bar"}], :field_32=>"First Name", :field_32_raw=>{:last=>"Last", :first=>"First"}, :field_33=>"<a href=\"mailto:flast@example.com\">flast@example.com</a>", :field_33_raw=>{:email=>"flast@example.com"}, :field_34=>"*********", :field_34_raw=>"**********", :field_188=>"<span class=\"23456\">Bar</span>", :field_188_raw=>[{:id=>"23456", :identifier=>"Bar"}]}]}
|
42
42
|
|
43
43
|
#GET object_1
|
44
44
|
api.object('object_1')
|
45
|
+
#Output
|
46
|
+
{:id=>"34567", :default=>"", :key=>"field_1", :name=>"Foo", :rules=>[], :conditional=>false, :user=>false, :unique=>true, :required=>true, :immutable=>false, :type=>"short_text"}
|
45
47
|
|
46
48
|
#PUT object_1 record
|
47
49
|
#Knackhq ID is 12345
|
48
50
|
api.update_record('object_1', '12345', { field_name: value }.to_json)
|
51
|
+
#Output:
|
52
|
+
true/false
|
49
53
|
```
|
50
54
|
|
51
55
|
## Contributing
|
data/knackhq-client.gemspec
CHANGED
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
|
|
20
20
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
21
21
|
spec.require_paths = ['lib']
|
22
22
|
|
23
|
-
spec.add_dependency 'blanket_wrapper', '~>
|
23
|
+
spec.add_dependency 'blanket_wrapper', '~> 2.0.1'
|
24
24
|
spec.add_dependency 'rest-client'
|
25
25
|
spec.add_dependency 'hashie'
|
26
26
|
spec.add_development_dependency 'bundler', '~> 1.7'
|
@@ -30,4 +30,5 @@ Gem::Specification.new do |spec|
|
|
30
30
|
spec.add_development_dependency 'rspec-its', '~> 1.2.0'
|
31
31
|
spec.add_development_dependency 'vcr', '~> 2.9.0'
|
32
32
|
spec.add_development_dependency 'webmock', '~> 1.20.0'
|
33
|
+
spec.add_development_dependency 'simplecov', '~> 0.9.0'
|
33
34
|
end
|
data/lib/knackhq/client.rb
CHANGED
@@ -16,53 +16,37 @@ module Knackhq
|
|
16
16
|
hash_request = request
|
17
17
|
.objects
|
18
18
|
.get
|
19
|
-
|
20
|
-
|
21
|
-
symbolize_hash_keys!(hash_request)
|
19
|
+
payload = payload_hash(hash_request)
|
20
|
+
translate_payload(payload) { payload[:objects] }
|
22
21
|
end
|
23
22
|
|
24
23
|
def object(key)
|
25
|
-
hash_request = request
|
26
|
-
|
27
|
-
|
28
|
-
|
24
|
+
hash_request = request
|
25
|
+
.objects
|
26
|
+
.get(key)
|
27
|
+
payload = payload_hash(hash_request)
|
28
|
+
translate_payload(payload) { payload[:object][:fields] }
|
29
29
|
end
|
30
30
|
|
31
31
|
def fields(object)
|
32
|
-
hash_request = request_object(object, :fields)
|
33
|
-
return [] if hash_request.empty?
|
34
|
-
transform_hash_keys = hash_request[:fields]
|
35
|
-
symbolize_hash_keys!(transform_hash_keys)
|
36
|
-
end
|
37
|
-
|
38
|
-
def records(object)
|
39
|
-
hash_request = request_object(object, :records)
|
40
|
-
return [] if hash_request.empty?
|
41
|
-
transform_hash_keys = hash_request[:records]
|
42
|
-
symbolize_hash_keys!(transform_hash_keys)
|
43
|
-
end
|
44
|
-
|
45
|
-
def records_by_page(object, page_number)
|
46
32
|
hash_request = request
|
47
33
|
.objects(object)
|
48
|
-
.
|
49
|
-
.get
|
50
|
-
|
51
|
-
|
52
|
-
return [] if hash_request.empty?
|
53
|
-
transform_hash_keys = hash_request[:records]
|
54
|
-
symbolize_hash_keys!(transform_hash_keys)
|
34
|
+
.fields
|
35
|
+
.get
|
36
|
+
payload = payload_hash(hash_request)
|
37
|
+
translate_payload(payload) { payload[:fields] }
|
55
38
|
end
|
56
39
|
|
57
|
-
def
|
40
|
+
def records(object, options = {})
|
41
|
+
rows_per_page = options[:rows_per_page] || 25
|
42
|
+
page_number = options[:page_number] || 1
|
58
43
|
hash_request = request
|
59
44
|
.objects(object)
|
60
45
|
.records
|
61
|
-
.get(:params => { :
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
[hash_request]
|
46
|
+
.get(:params => { :page => page_number,
|
47
|
+
:rows_per_page => rows_per_page })
|
48
|
+
payload = payload_hash(hash_request)
|
49
|
+
translate_payload(payload) { payload }
|
66
50
|
end
|
67
51
|
|
68
52
|
def update_record(object, knackhq_id, json)
|
@@ -70,8 +54,7 @@ module Knackhq
|
|
70
54
|
.objects(object)
|
71
55
|
.records(knackhq_id)
|
72
56
|
.put(:body => json)
|
73
|
-
|
74
|
-
!hash_request.empty?
|
57
|
+
!payload_hash(hash_request).empty?
|
75
58
|
end
|
76
59
|
|
77
60
|
private
|
@@ -84,14 +67,14 @@ module Knackhq
|
|
84
67
|
:headers => headers)
|
85
68
|
end
|
86
69
|
|
87
|
-
def
|
88
|
-
|
70
|
+
def payload_hash(hash_request)
|
71
|
+
payload = hash_request.first.to_h
|
72
|
+
Hashie.symbolize_keys!(payload)
|
89
73
|
end
|
90
74
|
|
91
|
-
def
|
92
|
-
|
93
|
-
|
94
|
-
end
|
75
|
+
def translate_payload(payload, &block)
|
76
|
+
return [] if payload.empty?
|
77
|
+
block.call
|
95
78
|
end
|
96
79
|
end
|
97
80
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: knackhq-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- MichaelAChrisco
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-04-
|
11
|
+
date: 2015-04-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: blanket_wrapper
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 2.0.1
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 2.0.1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rest-client
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -150,6 +150,20 @@ dependencies:
|
|
150
150
|
- - "~>"
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: 1.20.0
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: simplecov
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - "~>"
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: 0.9.0
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - "~>"
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: 0.9.0
|
153
167
|
description: Knackhq.com API client
|
154
168
|
email:
|
155
169
|
- michaelachrisco@gmail.com
|
@@ -192,7 +206,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
192
206
|
version: '0'
|
193
207
|
requirements: []
|
194
208
|
rubyforge_project:
|
195
|
-
rubygems_version: 2.4.
|
209
|
+
rubygems_version: 2.4.3
|
196
210
|
signing_key:
|
197
211
|
specification_version: 4
|
198
212
|
summary: Knackhq.com API client
|