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