kami 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: a5342eb9b1cdbe018eabea5a31d2670f1bc9ad0f
4
+ data.tar.gz: 70404c9e0997fec6e700017cc2ee62b92ef941ca
5
+ SHA512:
6
+ metadata.gz: b9d883bbbac8e54788eddd339c9c276a032c2eb4d23a25551a7ecc857286e5113b12d3d7c3fd1078b21781e7bb81dea9490f3a1d4d2a26082721f2405842694c
7
+ data.tar.gz: 44a85c42abab52b40bcd0eb4aa89bfc7ef92295dfbeeb304090ba1b36d9e8ff4e2504577aa811929e21f38c01680a0f7992e7379ee273dfdccb8fb3a4d9fdf29
@@ -0,0 +1,10 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ /vendor/
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.1.6
4
+ before_install: gem install bundler -v 1.11.2
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in kami.gemspec
4
+ gemspec
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2016 Joe Heth
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,188 @@
1
+ # Kami
2
+
3
+ [![Build Status](https://travis-ci.org/jheth/kami.svg)](https://travis-ci.org/jheth/kami)
4
+ [![Code Climate](https://codeclimate.com/github/jheth/kami/badges/gpa.svg)](https://codeclimate.com/github/jheth/kami)
5
+
6
+
7
+ Formerly NotablePDF, [Kami](https://www.kamihq.com/) provides Beautiful Document Viewer and Annotation Software.
8
+
9
+ API Overview: https://www.kamihq.com/api/
10
+
11
+ API Documentation: http://docs.kamiembeddingapi.apiary.io/
12
+
13
+
14
+ ## Installation
15
+
16
+ Add this line to your application's Gemfile:
17
+
18
+ ```ruby
19
+ gem 'kami', github: 'jheth/kami'
20
+ ```
21
+
22
+ And then execute:
23
+
24
+ $ bundle
25
+
26
+ Or install it yourself as:
27
+
28
+ $ gem install kami
29
+
30
+ ## Usage
31
+
32
+ ### Create Client
33
+
34
+ An API Key is required to communicate with Kami. Contact them for details.
35
+
36
+ ```ruby
37
+ client = Kami::Client.new('ABC-vRXxiGb7Nty9mXYZ')
38
+ ```
39
+
40
+ ### List Documents
41
+
42
+ Return a list of all documents previously uploaded.
43
+
44
+ ```ruby
45
+ list = client.documents
46
+ # =>
47
+ [
48
+ {
49
+ "name": "example.pdf",
50
+ "document_identifier": "797003eeefa82bd465e9b806a592b005",
51
+ "file_status": "done",
52
+ "file_error_message": null,
53
+ "created_at": "2016-04-27T22:32:32.098Z"
54
+ }
55
+ ]
56
+ ```
57
+
58
+ ### Upload Document
59
+
60
+ File uploads can be done from the local file system or via publicly available URLs.
61
+
62
+ ```ruby
63
+ client.upload(name: 'sample.pdf', file: '/path/to/file')
64
+ # OR
65
+ client.upload(name: 'sample.pdf', document_url: 'https://path/to/file')
66
+
67
+ # =>
68
+ {
69
+ "name": "example.pdf",
70
+ "document_identifier": "797003eeefa82bd465e9b806a592b005",
71
+ "file_status": "processing",
72
+ "file_error_message": null,
73
+ "created_at": "2016-04-27T22:32:32.098Z"
74
+ }
75
+ ```
76
+
77
+ ### Delete Document
78
+
79
+ Delete document by passing the Kami document identifier
80
+
81
+ ```ruby
82
+ client.delete_document('797003eeefa82bd465e9b806a592b005')
83
+ ```
84
+
85
+ ### Retrieve Document
86
+
87
+ ```ruby
88
+ client.document('797003eeefa82bd465e9b806a592b005')
89
+ # =>
90
+ Kami::Document(document_id: '797003eeefa82bd465e9b806a592b005')
91
+ ```
92
+
93
+ ### Load Document
94
+
95
+ ```ruby
96
+ document = Kami::Document.new('797003eeefa82bd465e9b806a592b005')
97
+ ```
98
+
99
+ ### Document Status
100
+
101
+ ```ruby
102
+ document.status
103
+ #=>
104
+ {
105
+ "name": "example.pdf",
106
+ "document_identifier": "797003eeefa82bd465e9b806a592b005",
107
+ "file_status": "done",
108
+ "file_error_message": null,
109
+ "created_at": "2016-04-27T22:32:32.098Z"
110
+ }
111
+ ```
112
+
113
+ ### Session View URL
114
+
115
+ Creates an active viewer session and URL to be used in an embedded iframe.
116
+
117
+ ```ruby
118
+ document.session_view_url
119
+ #=>
120
+ "https://embed.kamihq.com/web/viewer.html?source=embed_api..."
121
+ ```
122
+
123
+ ```ruby
124
+ document.session_view
125
+ #=>
126
+ {
127
+ "view_session_key": "ANgoQRGNgj-YF8rdfoTk",
128
+ "viewer_url": "https://embed.kamihq.com/web/viewer.html?source=embed_api...",
129
+ "session_expiry": "2016-04-28T04:22:09.000Z"
130
+ }
131
+ ```
132
+
133
+ ### Document Comments
134
+
135
+ Returns list of authors and comments associated with the document.
136
+
137
+ ```ruby
138
+ document.comments
139
+ #=>
140
+ {
141
+ "authors": [{}, ...],
142
+ "comments": [{}, ...]
143
+ }
144
+ ```
145
+
146
+ ### Create Document Export
147
+
148
+ A Document is scheduled for export, which creates a unique job ID.
149
+
150
+ ```ruby
151
+ document.create_export(type: 'annotation')
152
+
153
+ #=>
154
+ {
155
+ "id": '6cb4de71-c3d5-40c2-8b88-4774ea92db9a',
156
+ "status": 'pending',
157
+ "file_url": null,
158
+ "error_type": null
159
+ }
160
+ ```
161
+
162
+ ### Get a Document Export
163
+
164
+ ```ruby
165
+ document.export_file('6cb4de71-c3d5-40c2-8b88-4774ea92db9a')
166
+ #=>
167
+ {
168
+ "id": "6cb4de71-c3d5-40c2-8b88-4774ea92db9a",
169
+ "status": "done",
170
+ "file_url": "https://s3.amazonaws.com/FILE_URL",
171
+ "error_type": null
172
+ }
173
+ ```
174
+
175
+ ## Development
176
+
177
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
178
+
179
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
180
+
181
+ ## Contributing
182
+
183
+ Bug reports and pull requests are welcome on GitHub at https://github.com/jheth/kami.
184
+
185
+
186
+ ## License
187
+
188
+ The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "kami"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,32 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'kami/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "kami"
8
+ spec.version = Kami::VERSION
9
+ spec.authors = ["Joe Heth"]
10
+ spec.email = ["joeheth@gmail.com"]
11
+
12
+ spec.summary = %q{A lightweight ruby client for the Kami REST API.}
13
+ spec.description = %q{A lightweight ruby client for the Kami REST API.}
14
+ spec.homepage = "https://github.com/jheth/kami"
15
+ spec.license = "MIT"
16
+
17
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
18
+ spec.bindir = "exe"
19
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
+ spec.require_paths = ["lib"]
21
+
22
+ spec.add_runtime_dependency "rest-client", ">= 1.8.0", "< 1.9.0"
23
+
24
+ spec.add_development_dependency "bundler", ">= 1.11", "< 2.0"
25
+ spec.add_development_dependency "rake", ">= 10.0", "< 12.0"
26
+ spec.add_development_dependency "rspec", ">= 3.0", "< 4.0"
27
+ spec.add_development_dependency "simplecov", ">= 0.11", "< 1.0"
28
+ spec.add_development_dependency "webmock", ">= 2.0.0", "< 3.0"
29
+ spec.add_development_dependency "vcr", ">= 2.9.3", "< 4.0"
30
+ spec.add_development_dependency "pry-byebug", ">= 3.3.0", "< 4.0"
31
+ spec.add_development_dependency "awesome_print", ">= 1.6.1", "< 2.0"
32
+ end
@@ -0,0 +1,10 @@
1
+ require "kami/version"
2
+ require "kami/client"
3
+ require "kami/document"
4
+
5
+ require 'json'
6
+ require 'rest-client'
7
+
8
+ module Kami
9
+ # Your code goes here...
10
+ end
@@ -0,0 +1,74 @@
1
+ module Kami
2
+ class Client
3
+ HOSTNAME = 'api.notablepdf.com'.freeze
4
+
5
+ def initialize(key)
6
+ @kami_api_key = key
7
+ end
8
+
9
+ def documents
10
+ response = get('documents')
11
+ response['documents'].map do |hash|
12
+ Kami::Document.new(client: self, data: hash)
13
+ end
14
+ end
15
+
16
+ def document(id)
17
+ Kami::Document.new(client: self, id: id)
18
+ end
19
+
20
+ def upload(name: nil, document_url: nil, file: nil)
21
+ path = url('documents')
22
+
23
+ if document_url
24
+ payload = { name: name, document_url: document_url }
25
+ elsif file
26
+ payload = { name: name, document: File.open(file, 'rb'), multipart: true }
27
+ # Path changes for multipart uploads
28
+ path = base_url + '/upload/embed/documents'
29
+ end
30
+ raise 'Must provide document_url or file' if payload.nil?
31
+
32
+ post(path, payload)
33
+ end
34
+
35
+ def delete_document(document_id)
36
+ delete("documents/#{document_id}")
37
+ true
38
+ end
39
+
40
+ def get(path)
41
+ response = RestClient.get(url(path), request_headers)
42
+ JSON[response]
43
+ end
44
+
45
+ def post(path, payload)
46
+ data = payload[:multipart] ? payload : payload.to_json
47
+
48
+ path = path.include?(base_url) ? path : url(path)
49
+ response = RestClient.post(path, data, request_headers)
50
+
51
+ JSON[response]
52
+ end
53
+
54
+ def delete(path)
55
+ RestClient.delete(url(path), request_headers)
56
+ end
57
+
58
+ def url(path)
59
+ base_url + "/embed/#{path}"
60
+ end
61
+
62
+ def base_url
63
+ "https://#{HOSTNAME}"
64
+ end
65
+
66
+ def request_headers
67
+ {
68
+ accept: 'application/json',
69
+ content_type: 'application/json',
70
+ authorization: "Token #{@kami_api_key}"
71
+ }
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,79 @@
1
+ module Kami
2
+ class Document
3
+ attr_reader :name, :document_identifier, :file_status, :file_error_message,
4
+ :created_at, :session_view
5
+
6
+ def initialize(client: nil, id: nil, data: nil)
7
+ @client = client
8
+ @document_identifier = id
9
+ @raw_data = data
10
+
11
+ if data.is_a?(Hash)
12
+ @name = data['name']
13
+ @document_identifier = data['document_identifier']
14
+ @file_status = data['file_status']
15
+ @file_error_message = data['file_error_message']
16
+ @created_at = data['created_at']
17
+ end
18
+ end
19
+
20
+ def to_hash
21
+ @raw_data || status
22
+ end
23
+
24
+ def status
25
+ @status ||= @client.get("documents/#{@document_identifier}")
26
+ end
27
+
28
+ def create_export(type: 'annotation')
29
+ payload = {
30
+ document_identifier: @document_identifier,
31
+ export_type: type
32
+ }
33
+ @export = @client.post('exports', payload)
34
+ end
35
+
36
+ def export_file(id = nil)
37
+ export_id = id
38
+ export_id ||= @export['id'] if @export.is_a?(Hash)
39
+
40
+ @client.get("exports/#{export_id}")
41
+ end
42
+
43
+ def delete
44
+ @client.delete("documents/#{@document_identifier}")
45
+ true
46
+ end
47
+
48
+ def comments
49
+ @client.get("documents/#{@document_identifier}/comments")
50
+ end
51
+
52
+ def session_view(name: 'Guest', user_id: 0, expires_at: nil, theme: 'light', show_sync: true, show_save: true)
53
+ return unless @document_identifier
54
+
55
+ expires_at = (Time.now + (60 * 60)) if expires_at.nil?
56
+
57
+ payload = {
58
+ document_identifier: @document_identifier,
59
+ user: {
60
+ name: name,
61
+ user_id: user_id
62
+ },
63
+ expires_at: expires_at,
64
+ viewer_options: {
65
+ theme: theme,
66
+ show_sync: show_sync,
67
+ show_save: show_save
68
+ }
69
+ }
70
+
71
+ @session_view = @client.post('sessions', payload)
72
+ end
73
+
74
+ def session_view_url(name: 'Guest', user_id: 0, expires_at: nil, theme: 'light', show_sync: true, show_save: true)
75
+ view = session_view(name: name, user_id: user_id, expires_at: expires_at, theme: theme, show_sync: show_sync, show_save: show_save)
76
+ view['viewer_url']
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,3 @@
1
+ module Kami
2
+ VERSION = "1.0.0"
3
+ end
metadata ADDED
@@ -0,0 +1,238 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: kami
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Joe Heth
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2016-07-18 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rest-client
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 1.8.0
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: 1.9.0
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: 1.8.0
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: 1.9.0
33
+ - !ruby/object:Gem::Dependency
34
+ name: bundler
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '1.11'
40
+ - - "<"
41
+ - !ruby/object:Gem::Version
42
+ version: '2.0'
43
+ type: :development
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: '1.11'
50
+ - - "<"
51
+ - !ruby/object:Gem::Version
52
+ version: '2.0'
53
+ - !ruby/object:Gem::Dependency
54
+ name: rake
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: '10.0'
60
+ - - "<"
61
+ - !ruby/object:Gem::Version
62
+ version: '12.0'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: '10.0'
70
+ - - "<"
71
+ - !ruby/object:Gem::Version
72
+ version: '12.0'
73
+ - !ruby/object:Gem::Dependency
74
+ name: rspec
75
+ requirement: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: '3.0'
80
+ - - "<"
81
+ - !ruby/object:Gem::Version
82
+ version: '4.0'
83
+ type: :development
84
+ prerelease: false
85
+ version_requirements: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '3.0'
90
+ - - "<"
91
+ - !ruby/object:Gem::Version
92
+ version: '4.0'
93
+ - !ruby/object:Gem::Dependency
94
+ name: simplecov
95
+ requirement: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ version: '0.11'
100
+ - - "<"
101
+ - !ruby/object:Gem::Version
102
+ version: '1.0'
103
+ type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '0.11'
110
+ - - "<"
111
+ - !ruby/object:Gem::Version
112
+ version: '1.0'
113
+ - !ruby/object:Gem::Dependency
114
+ name: webmock
115
+ requirement: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - ">="
118
+ - !ruby/object:Gem::Version
119
+ version: 2.0.0
120
+ - - "<"
121
+ - !ruby/object:Gem::Version
122
+ version: '3.0'
123
+ type: :development
124
+ prerelease: false
125
+ version_requirements: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - ">="
128
+ - !ruby/object:Gem::Version
129
+ version: 2.0.0
130
+ - - "<"
131
+ - !ruby/object:Gem::Version
132
+ version: '3.0'
133
+ - !ruby/object:Gem::Dependency
134
+ name: vcr
135
+ requirement: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ version: 2.9.3
140
+ - - "<"
141
+ - !ruby/object:Gem::Version
142
+ version: '4.0'
143
+ type: :development
144
+ prerelease: false
145
+ version_requirements: !ruby/object:Gem::Requirement
146
+ requirements:
147
+ - - ">="
148
+ - !ruby/object:Gem::Version
149
+ version: 2.9.3
150
+ - - "<"
151
+ - !ruby/object:Gem::Version
152
+ version: '4.0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: pry-byebug
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: 3.3.0
160
+ - - "<"
161
+ - !ruby/object:Gem::Version
162
+ version: '4.0'
163
+ type: :development
164
+ prerelease: false
165
+ version_requirements: !ruby/object:Gem::Requirement
166
+ requirements:
167
+ - - ">="
168
+ - !ruby/object:Gem::Version
169
+ version: 3.3.0
170
+ - - "<"
171
+ - !ruby/object:Gem::Version
172
+ version: '4.0'
173
+ - !ruby/object:Gem::Dependency
174
+ name: awesome_print
175
+ requirement: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - ">="
178
+ - !ruby/object:Gem::Version
179
+ version: 1.6.1
180
+ - - "<"
181
+ - !ruby/object:Gem::Version
182
+ version: '2.0'
183
+ type: :development
184
+ prerelease: false
185
+ version_requirements: !ruby/object:Gem::Requirement
186
+ requirements:
187
+ - - ">="
188
+ - !ruby/object:Gem::Version
189
+ version: 1.6.1
190
+ - - "<"
191
+ - !ruby/object:Gem::Version
192
+ version: '2.0'
193
+ description: A lightweight ruby client for the Kami REST API.
194
+ email:
195
+ - joeheth@gmail.com
196
+ executables: []
197
+ extensions: []
198
+ extra_rdoc_files: []
199
+ files:
200
+ - ".gitignore"
201
+ - ".rspec"
202
+ - ".travis.yml"
203
+ - Gemfile
204
+ - LICENSE.txt
205
+ - README.md
206
+ - Rakefile
207
+ - bin/console
208
+ - bin/setup
209
+ - kami.gemspec
210
+ - lib/kami.rb
211
+ - lib/kami/client.rb
212
+ - lib/kami/document.rb
213
+ - lib/kami/version.rb
214
+ homepage: https://github.com/jheth/kami
215
+ licenses:
216
+ - MIT
217
+ metadata: {}
218
+ post_install_message:
219
+ rdoc_options: []
220
+ require_paths:
221
+ - lib
222
+ required_ruby_version: !ruby/object:Gem::Requirement
223
+ requirements:
224
+ - - ">="
225
+ - !ruby/object:Gem::Version
226
+ version: '0'
227
+ required_rubygems_version: !ruby/object:Gem::Requirement
228
+ requirements:
229
+ - - ">="
230
+ - !ruby/object:Gem::Version
231
+ version: '0'
232
+ requirements: []
233
+ rubyforge_project:
234
+ rubygems_version: 2.4.8
235
+ signing_key:
236
+ specification_version: 4
237
+ summary: A lightweight ruby client for the Kami REST API.
238
+ test_files: []