# Zendesk2 [![Build Status](https://secure.travis-ci.org/lanej/zendesk2.png)](http://travis-ci.org/lanej/zendesk2) [![Gem Version](https://fury-badge.herokuapp.com/rb/zendesk2.png)](http://badge.fury.io/rb/zendesk2) [![Code Climate](https://codeclimate.com/badge.png)](https://codeclimate.com/github/lanej/zendesk2) [![Dependency Status](https://gemnasium.com/lanej/zendesk2.png)](https://gemnasium.com/lanej/zendesk2) Ruby client for the [Zendesk V2 API](http://developer.zendesk.com/documentation/rest_api/introduction.html) using [cistern](https://github.com/lanej/cistern) and [faraday](https://github.com/technoweenie/faraday) ## Installation Add this line to your application's Gemfile: ```ruby gem 'zendesk2' ``` Or install it yourself as: $ gem install zendesk2 ## Usage ### Defaults Default credentials will be read in from `~/.zendesk2` file in YAML format. ```yaml --- :subdomain: zendeskdev :username: zendeskedge@example.com :password: wickedsecurepassword ``` ### Creating the client Either the absolute url or the subdomain is required. Username and password is always required. ```ruby Zendesk2::Client.new(subdomain: "engineyard", username: "orchestra", password: "gwoo") => # ``` or ```ruby Zendesk2::Client.new(url: "http://support.cloud.engineyard.com", username: "mate", password: "bambilla") => # ``` ### Resources #### Collections Currently support resources * Audit Events * Categories * Forums * Organization * Ticket Audits * Tickets * Topic Comments * Topics * User Identities * Users All collection are accessed like so: ```ruby client.users.all => ] ``` Collections also respond to `create` and `new` ```ruby client.users.create(email: "ohhai@example.org", name: "lulz") => ``` ```ruby client.users.new(email: "ohhai@example.org") => ``` #### Paging Paged collections respond to `next_page` and `previous_page` when appropriate. `page_size` and `page` can be passed directly to the collection to control size and index. ```ruby page = client.users.all("per_page" => 1, "page" => 4) => ] ``` ```ruby page.next_page => ] ``` ```ruby page.previous_page => ] ``` #### Models All models respond to `destroy` and `save` if applicable. `save` performs a 'create' operation if there is no identity provided or an 'update' if there is an identity. ```ruby Zendesk2::Client::Ticket.new.save # performs a create Zendesk2::Client::Ticket.new(id: 1).save # performs an update ``` Attributes can be enumerated by the `attributes` method. ## Testing ### Running $ bundle exec rspec ### Testing Live Run against a real Zendesk installation by setting ```MOCK_ZENDESK=false``` $ MOCK_ZENDESK=false bundle exec rspec Credentials are sourced from your ```~/.zendesk2``` file Raw responses and requests can be echoed to STDOUT by adding ```VERBOSE=true``` $ VERBOSE=true bundle exec rspec ## Releasing $ gem install gem-release $ gem bump -trv (major|minor|patch) ## Contributing 1. Fork it 2. Create your feature branch (`git checkout -b my-new-feature`) 3. Commit your changes (`git commit -am 'Added some feature'`) 4. Push to the branch (`git push origin my-new-feature`) 5. Create new Pull Request