knackhq-client 0.1.1 → 0.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 94825773af2c61878dc4ba69bb6447e920e195d4
4
- data.tar.gz: ef3535920cc26652c8dbaf265ae32470cf828399
3
+ metadata.gz: 0337d53689c433e99665facab6e5e64514ae31e7
4
+ data.tar.gz: ba92265868729d27ab8def0c31535359c610b17e
5
5
  SHA512:
6
- metadata.gz: 74f117f2e7ad9376d0f77f86598ee12d13aa60992192fc914ddb99fd99ddafd4c79f88577bb32fe271809058fe5c8254716f1a50939bdfa25e7b306466454972
7
- data.tar.gz: d81ee0e01c641a2991599957ec98fc8982a2fc938e01122241f4d28edeff800ab268712e377005407832f3d6fdf265692518f39a8c0cb2a308805e298987e506
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.1.1)
5
- blanket_wrapper (~> 1.1.0)
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.7)
13
- blanket_wrapper (1.1.0)
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.1)
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.1)
45
+ rspec-core (3.2.3)
46
46
  rspec-support (~> 3.2.0)
47
- rspec-expectations (3.2.0)
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
- #GET object_1 records by page
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
@@ -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', '~> 1.1.0'
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
@@ -16,53 +16,37 @@ module Knackhq
16
16
  hash_request = request
17
17
  .objects
18
18
  .get
19
- .to_h[:objects]
20
- return [] if hash_request.empty?
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.objects.get(key).to_h
26
- return [] if hash_request.empty?
27
- transform_hash_keys = hash_request[:object]['fields']
28
- symbolize_hash_keys!(transform_hash_keys)
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
- .records
49
- .get(:params => { :page => page_number,
50
- :rows_per_page => 500 })
51
- .to_h
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 records_info(object)
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 => { :rows_per_page => 500 })
62
- .to_h
63
- return [] if hash_request.empty?
64
- hash_request.delete(:records)
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
- .to_h
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 request_object(object, function)
88
- request.objects(object).send(function).get.to_h
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 symbolize_hash_keys!(transform_hash_keys)
92
- transform_hash_keys.map do |hash|
93
- Hashie.symbolize_keys!(hash)
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
@@ -1,5 +1,5 @@
1
1
  module Knackhq
2
2
  class Client
3
- VERSION = '0.1.1'
3
+ VERSION = '0.2.0'
4
4
  end
5
5
  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.1.1
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-09 00:00:00.000000000 Z
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: 1.1.0
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: 1.1.0
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.6
209
+ rubygems_version: 2.4.3
196
210
  signing_key:
197
211
  specification_version: 4
198
212
  summary: Knackhq.com API client