VerbalizeItInc/verbalizeit

View on GitHub
README.md

Summary

Maintainability
Test Coverage
# Verbalizeit

The VerbalizeIt gem is a wrapper for [VerbalizeIt’s](https://www.verbalizeit.com) V2 API. Full documentation for the V2 API can be found [here](https://customers.verbalizeit.com/api_documentation). The VerbalizeIt API allows developers to submit files for translation or transcription directly, without using the Customer Dashboard.

## Code Status

[![Circle CI](https://circleci.com/gh/VerbalizeItInc/verbalizeit.svg?style=svg)](https://circleci.com/gh/VerbalizeItInc/verbalizeit)
[![Code Climate](https://codeclimate.com/github/VerbalizeItInc/verbalizeit/badges/gpa.svg)](https://codeclimate.com/github/VerbalizeItInc/verbalizeit)

## Installation

Add this line to your application's Gemfile:

    gem 'verbalizeit'

And then execute:

    $ bundle

Or install it yourself as:

    $ gem install verbalizeit

## Usage

The VerbalizeIt gem supports the same endpoints as the V2 API.

### Authentication

Initialize the VerbalizeIt client with your API key and the API environment. The supported API environments are `:staging` and `:production`.

```ruby
client = Verbalizeit::Client.new('my_key', :staging)
```

### Languages

##### List

Returns an array of `Verbalizeit::Language` objects.

```ruby
languages = client.languages
#=> [Verbalizeit::Language,...]
```

A `Verbalizeit::Language` has a `name` and a `language_region_code`

```ruby
language = languages.first

language.name
#=> "English"
language.language_region_code 
#=> "eng-US"
```

### Tasks

##### List

Returns an array of `Verbalizeit::Task` objects. `list_tasks` has three optional parameters: `start`, `limit`, and `status`. By default, the `limit` is set to 10.

```ruby
client.list_tasks({start: 0, limit: 5, status: 'preview'})
#=> {
#  total: 10,
#  start: 0,
#  limit: 5,
#  tasks: [Verbalizeit::Task,...]
# }
```

##### Show

Returns a `Verbalizeit::Task` object.

```ruby
id = 'T2EB60C'
task = client.get_task(id)
#=> Verbalizeit::Task
```

A task has methods for each attribute. See the [tasks show response](https://customers.verbalizeit.com/api_documentation#tasks_show) in the V2 API documentation for a full list of attributes.

```ruby
task.id
#=> 'T2EB60C'

task.status
#=> 'preview'

task.price_amount
#=> 11.22
```

##### Create

Creates a new task in the VerbalizeIt system. Returns a `Verbalizeit::Task`.

Required parameters: `source_language`, `target_language`, `operation` at least one of `file` or `media_resource_url`.
Optional parameters: `postback_url`, `status_url`, `start`, `rush_order`

Optional parameters, as well as the `file` and `media_resource_url`, are passed in through an options hash.

```ruby
client.create_task('eng-US', 'fra-FR', 'text_translation', {file: 'file.xliff', postback_url: 'https://www.postback.com'})
#=> Verbalizeit::Task
```

##### Start

Starts a created task. Returns a status code of `200`.

```ruby
id = 'T2EB60C'
client.start_task(id)
#=> true
```

##### Download Completed File

Returns a struct with the filename and body of a completed file for a task. Only available if the task is in the "complete" state.

```ruby
id = 'T2EB60C'
completed_file = client.task_completed_file(id)
completed_file.filename
#=> sample.txt
completed_file.content
#=> "This is some sample text. \n\n And here is another paragraph"
```

If you would like to write the file to your local filesytem, you could do something like this.

```ruby
file = File.open(completed_file.filename, "w")
file << completed_file.content
file.close
```

### Errors

There are 5 types of errors.

* `Verbalizeit::Error::Unauthorized` is raised if the `Verbalizeit::Client` is initialized with an invalid API key, or if the API key does not match the environement. API keys can be created from the customer dashboard under 'API' in the left-hand navigation.
* `Verbalizeit::Error::UnknownEnvironment` is raised if the client is initialized with an environment that does not exist. The available environments are `:staging` and `:production`.
* `Verbalizeit::Error::BadRequest` can be raised for a variety of reasons, the error message will help you debug why this is being raised. Common examples would be creating a task with an invalid `operation`, `source_language`, or `target_language`.
* `Verbalizeit::Error::Forbidden` is raised if the user tries to access a task that does not belong to them.
* `Verbalizeit::Error::NotFound` is raised if the user tries to access a task that does not exist.