README.md

Summary

Maintainability
Test Coverage
# Kami

[![Build Status](https://travis-ci.org/jheth/kami.svg)](https://travis-ci.org/jheth/kami)
[![Code Climate](https://codeclimate.com/github/jheth/kami/badges/gpa.svg)](https://codeclimate.com/github/jheth/kami)


Formerly NotablePDF, [Kami](https://www.kamihq.com/) provides Beautiful Document Viewer and Annotation Software.

API Overview: https://www.kamihq.com/api/

API Documentation: http://docs.kamiembeddingapi.apiary.io/


## Installation

Add this line to your application's Gemfile:

```ruby
gem 'kami'
```

And then execute:

    $ bundle

Or install it yourself as:

    $ gem install kami

## Usage

### Create Client

An API Key is required to communicate with Kami. Contact them for details.

```ruby
client = Kami::Client.new('ABC-vRXxiGb7Nty9mXYZ')
```

### List Documents

Return a list of all documents previously uploaded.

```ruby
list = client.documents
# =>
[
  {
    "name": "example.pdf",
    "document_identifier": "797003eeefa82bd465e9b806a592b005",
    "file_status": "done",
    "file_error_message": null,
    "created_at": "2016-04-27T22:32:32.098Z"
  }
]
```

### Upload Document

File uploads can be done from the local file system or via publicly available URLs.

```ruby
client.upload(name: 'sample.pdf', file: '/path/to/file')
# OR
client.upload(name: 'sample.pdf', document_url: 'https://path/to/file')

# =>
{
  "name": "example.pdf",
  "document_identifier": "797003eeefa82bd465e9b806a592b005",
  "file_status": "processing",
  "file_error_message": null,
  "created_at": "2016-04-27T22:32:32.098Z"
}
```

### Delete Document

Delete document by passing the Kami document identifier

```ruby
client.delete_document('797003eeefa82bd465e9b806a592b005')
```

### Retrieve Document

```ruby
client.document('797003eeefa82bd465e9b806a592b005')
# =>
Kami::Document(document_id: '797003eeefa82bd465e9b806a592b005')
```

### Load Document

```ruby
document = Kami::Document.new('797003eeefa82bd465e9b806a592b005')
```

### Document Status

```ruby
document.status
#=>
{
  "name": "example.pdf",
  "document_identifier": "797003eeefa82bd465e9b806a592b005",
  "file_status": "done",
  "file_error_message": null,
  "created_at": "2016-04-27T22:32:32.098Z"
}
```

### Session View URL

Creates an active viewer session and URL to be used in an embedded iframe.

```ruby
document.session_view_url
#=>
"https://embed.kamihq.com/web/viewer.html?source=embed_api..."
```

```ruby
document.session_view
#=>
{
  "view_session_key": "ANgoQRGNgj-YF8rdfoTk",
  "viewer_url": "https://embed.kamihq.com/web/viewer.html?source=embed_api...",
  "session_expiry": "2016-04-28T04:22:09.000Z"
}
```

### Document Comments

Returns list of authors and comments associated with the document.

```ruby
document.comments
#=>
{
  "authors":  [{}, ...],
  "comments": [{}, ...]
}
```

### Create Document Export

A Document is scheduled for export, which creates a unique job ID.

```ruby
document.create_export(type: 'annotation')

#=>
{
  "id": '6cb4de71-c3d5-40c2-8b88-4774ea92db9a',
  "status": 'pending',
  "file_url": null,
  "error_type": null
}
```

### Get a Document Export

```ruby
document.export_file('6cb4de71-c3d5-40c2-8b88-4774ea92db9a')
#=>
{
  "id": "6cb4de71-c3d5-40c2-8b88-4774ea92db9a",
  "status": "done",
  "file_url": "https://s3.amazonaws.com/FILE_URL",
  "error_type": null
}
```

## Development

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.

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

## Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/jheth/kami.


## License

The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).