gimizen 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +17 -0
- data/.travis.yml +3 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +61 -0
- data/Rakefile +1 -0
- data/gimizen.gemspec +29 -0
- data/lib/gimizen/version.rb +3 -0
- data/lib/gimizen.rb +84 -0
- data/spec/lib/gimizen_spec.rb +48 -0
- data/spec/spec_helper.rb +16 -0
- data/spec/vcr/create_ticket.yml +153 -0
- metadata +189 -0
data/.gitignore
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2013 GiMiScale - Developed by: Nick den Engelsman
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,61 @@
|
|
1
|
+
[![Build Status](https://travis-ci.org/GiMiScale/gimizen.png?branch=master)](https://travis-ci.org/GiMiScale/gimizen) [![Code Climate](https://codeclimate.com/github/GiMiScale/gimizen.png)](https://codeclimate.com/github/GiMiScale/gimizen) [![Gem Version](https://badge.fury.io/rb/gimizen.png)](http://badge.fury.io/rb/gimizen)
|
2
|
+
|
3
|
+
# Gimizen
|
4
|
+
|
5
|
+
Simple API wrapper for Zendesk. Creating tickets for Zendesk should be as simple as 'zen'.
|
6
|
+
|
7
|
+
## Installation
|
8
|
+
|
9
|
+
Add this line to your application's Gemfile:
|
10
|
+
|
11
|
+
gem 'gimizen'
|
12
|
+
|
13
|
+
And then execute:
|
14
|
+
|
15
|
+
$ bundle
|
16
|
+
|
17
|
+
Or install it yourself:
|
18
|
+
|
19
|
+
$ gem install gimizen
|
20
|
+
|
21
|
+
## Setup
|
22
|
+
|
23
|
+
Add file `config/initializers/gimizen.rb`.
|
24
|
+
|
25
|
+
require 'gimizen'
|
26
|
+
Gimizen.configure do |config|
|
27
|
+
config.domain = 'https://gimiscale.zendesk.com/api/v2'
|
28
|
+
config.email_address = 'zendesk@gimiscale.com'
|
29
|
+
config.api_token = '123456789AbCdEfGhIjKlMnOpQrStUvWxYz'
|
30
|
+
end
|
31
|
+
|
32
|
+
## Example usage
|
33
|
+
|
34
|
+
Simple Zendesk ticket creation:
|
35
|
+
|
36
|
+
response = Gimizen.create_ticket({subject: 'Gimizen', comment: 'This is a test ticket'})
|
37
|
+
# => #<OpenStruct created=true>
|
38
|
+
response.created
|
39
|
+
# => true
|
40
|
+
|
41
|
+
Create a Zendesk ticket and receive the response:
|
42
|
+
|
43
|
+
response = Gimizen.create_ticket({subject: 'Gimizen', comment: 'This is a test ticket'}, true)
|
44
|
+
# => #<OpenStruct url="https://gimiscale.zendesk.com/api/v2/tickets/942.json", id=942, external_id=nil, via={:channel=>"api", :source=>{:from=>{}, :to=>{}, :rel=>nil}}, created_at="2013-09-25T13:13:54Z", updated_at="2013-09-25T13:13:54Z", type=nil, subject="Gimizen", description="This is a test ticket", priority=nil, status="new", recipient=nil, requester_id=275909116, submitter_id=275909116, assignee_id=nil, organization_id=nil, group_id=20329092, collaborator_ids=[], forum_topic_id=nil, problem_id=nil, has_incidents=false, due_at=nil, tags=["gimiscale"], custom_fields=[], satisfaction_rating=nil, sharing_agreement_ids=[], fields=[]>
|
45
|
+
|
46
|
+
You can then use:
|
47
|
+
|
48
|
+
response.id
|
49
|
+
# => 942
|
50
|
+
response.subject
|
51
|
+
# => "Gimizen"
|
52
|
+
response.description
|
53
|
+
# => "This is a test ticket"
|
54
|
+
|
55
|
+
## Contributing
|
56
|
+
|
57
|
+
1. Fork it
|
58
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
59
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
60
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
61
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'bundler/gem_tasks'
|
data/gimizen.gemspec
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'gimizen/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |gem|
|
7
|
+
gem.name = 'gimizen'
|
8
|
+
gem.version = Gimizen::VERSION
|
9
|
+
gem.authors = ['GiMiScale', 'Nick den Engelsman']
|
10
|
+
gem.email = ['nick.denengelsman@gimiscale.com']
|
11
|
+
gem.description = %q{API wrapper for Zendesk}
|
12
|
+
gem.summary = %q{Creating tickets for Zendesk should be as simple as 'zen'.}
|
13
|
+
gem.homepage = 'https://github.com/GiMiScale/gimizen'
|
14
|
+
|
15
|
+
gem.files = `git ls-files`.split($/)
|
16
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
17
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
18
|
+
gem.require_paths = ['lib']
|
19
|
+
|
20
|
+
gem.add_runtime_dependency 'httparty', '~> 0.11.0'
|
21
|
+
gem.add_runtime_dependency 'json', '~> 1.8.0'
|
22
|
+
gem.add_runtime_dependency 'hash_symbolizer', '~> 1.0.1'
|
23
|
+
|
24
|
+
gem.add_development_dependency 'rspec', '~> 2.13.0'
|
25
|
+
gem.add_development_dependency 'capybara', '~> 2.1.0'
|
26
|
+
gem.add_development_dependency 'vcr', '~> 2.4.0'
|
27
|
+
gem.add_development_dependency 'webmock', '~> 1.8.0'
|
28
|
+
gem.add_development_dependency 'simplecov', '~> 0.7.1'
|
29
|
+
end
|
data/lib/gimizen.rb
ADDED
@@ -0,0 +1,84 @@
|
|
1
|
+
require 'httparty'
|
2
|
+
require 'json'
|
3
|
+
require 'hash_symbolizer'
|
4
|
+
require 'ostruct'
|
5
|
+
require 'gimizen/version'
|
6
|
+
|
7
|
+
module Gimizen
|
8
|
+
class << self
|
9
|
+
attr_accessor :api_url, :api_key
|
10
|
+
def configure(&blk); class_eval(&blk); end
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.create_ticket(hash, full_response=false)
|
14
|
+
# Format the subject and comment
|
15
|
+
subject = format_subject(hash[:subject])
|
16
|
+
comment = format_comment(hash[:comment])
|
17
|
+
# Format json data
|
18
|
+
json_data = format_json_data(hash)
|
19
|
+
# Perform request
|
20
|
+
return post_to_zendesk("#{@domain}/tickets.json", json_data, full_response)
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.format_subject(subject = nil)
|
24
|
+
raise Exception.new('No subject provided') if subject.nil? || subject.empty?
|
25
|
+
subject
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.format_comment(comment = nil)
|
29
|
+
raise Exception.new('No comment provided') if comment.nil? || comment.empty?
|
30
|
+
comment
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.format_json_data(hash)
|
34
|
+
json_data = {
|
35
|
+
ticket: {
|
36
|
+
subject: hash[:subject],
|
37
|
+
comment: {
|
38
|
+
body: hash[:comment]
|
39
|
+
}
|
40
|
+
}
|
41
|
+
}.to_json
|
42
|
+
end
|
43
|
+
|
44
|
+
def self.post_to_zendesk(url, data, full_response=false)
|
45
|
+
# Post method to Zendesk
|
46
|
+
response = HTTParty.post(
|
47
|
+
url,
|
48
|
+
body: data,
|
49
|
+
basic_auth: {username: "#{@email_address}/token", password: @api_token},
|
50
|
+
headers: {'Content-Type' => 'application/json'}
|
51
|
+
)
|
52
|
+
# Return full response or succes message
|
53
|
+
full_response ? handle_response(response.body) : succes_message(response.code)
|
54
|
+
end
|
55
|
+
|
56
|
+
def self.handle_response(response)
|
57
|
+
# Format Zendesk response
|
58
|
+
response = JSON.parse(response).symbolize_keys(true)
|
59
|
+
response = OpenStruct.new response[:ticket]
|
60
|
+
response
|
61
|
+
end
|
62
|
+
|
63
|
+
def self.succes_message(response_code)
|
64
|
+
# Format status message
|
65
|
+
status_message = {
|
66
|
+
created: true
|
67
|
+
}
|
68
|
+
# Change hash if tickets was nit created
|
69
|
+
status_message[:created] = false if response_code != 201
|
70
|
+
# Return status message
|
71
|
+
OpenStruct.new status_message
|
72
|
+
end
|
73
|
+
|
74
|
+
def self.version_string
|
75
|
+
"Gimizen version #{Gimizen::VERSION}"
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
# Set default configuration
|
80
|
+
Gimizen.configure do
|
81
|
+
@domain = 'https://gimiscale.zendesk.com/api/v2'
|
82
|
+
@email_address = 'zendesk@gimiscale.com'
|
83
|
+
@api_token = '123456789AbCdEfGhIjKlMnOpQrStUvWxYz'
|
84
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Gimizen do
|
4
|
+
it 'raises an exception for empty subjects' do
|
5
|
+
expect { Gimizen.format_subject(nil) }.to raise_error
|
6
|
+
expect { Gimizen.format_subject('') }.to raise_error
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'raises an exception for empty comments' do
|
10
|
+
expect { Gimizen.format_comment(nil) }.to raise_error
|
11
|
+
expect { Gimizen.format_comment('') }.to raise_error
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'format the json data' do
|
15
|
+
json = Gimizen.format_json_data({subject: 'Gimizen', comment: 'This is a test ticket'})
|
16
|
+
json = JSON.parse(json)
|
17
|
+
json.should_not eq nil
|
18
|
+
json['ticket'].should_not eq nil
|
19
|
+
json['ticket'].should have_key('subject')
|
20
|
+
json['ticket'].should have_key('comment')
|
21
|
+
json['ticket']['comment'].should have_key('body')
|
22
|
+
json['ticket']['subject'].should eq 'Gimizen'
|
23
|
+
json['ticket']['comment']['body'].should eq 'This is a test ticket'
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'creates a zendesk ticket' do
|
27
|
+
VCR.use_cassette('create_ticket') do
|
28
|
+
response = Gimizen.create_ticket({subject: 'Gimizen', comment: 'This is a test ticket'})
|
29
|
+
puts response
|
30
|
+
response.should_not eq nil
|
31
|
+
response.created.should_not eq nil
|
32
|
+
response.created.should eq true
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'creates a zendesk ticket with full response body' do
|
37
|
+
VCR.use_cassette('create_ticket') do
|
38
|
+
response = Gimizen.create_ticket({subject: 'Gimizen', comment: 'This is a test ticket'}, true)
|
39
|
+
response.id.should_not eq nil
|
40
|
+
response.subject.should eq 'Gimizen'
|
41
|
+
response.description.should eq 'This is a test ticket'
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'should return correct version string' do
|
46
|
+
Gimizen.version_string.should eq "Gimizen version #{Gimizen::VERSION}"
|
47
|
+
end
|
48
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'rspec'
|
2
|
+
require 'vcr'
|
3
|
+
require 'webmock'
|
4
|
+
require 'simplecov'
|
5
|
+
SimpleCov.start
|
6
|
+
require 'gimizen'
|
7
|
+
|
8
|
+
RSpec.configure do |config|
|
9
|
+
config.color_enabled = true
|
10
|
+
config.formatter = 'documentation'
|
11
|
+
end
|
12
|
+
|
13
|
+
VCR.configure do |config|
|
14
|
+
config.cassette_library_dir = 'spec/vcr'
|
15
|
+
config.hook_into :webmock
|
16
|
+
end
|
@@ -0,0 +1,153 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: https://zendesk%40gimiscale.com%2Ftoken:123456789AbCdEfGhIjKlMnOpQrStUvWxYz@gimiscale.zendesk.com/api/v2/tickets.json
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: ! '{"ticket":{"subject":"Gimizen","comment":{"body":"This is a test
|
9
|
+
ticket"}}}'
|
10
|
+
headers:
|
11
|
+
Content-Type:
|
12
|
+
- application/json
|
13
|
+
response:
|
14
|
+
status:
|
15
|
+
code: 201
|
16
|
+
message: !binary |-
|
17
|
+
Q3JlYXRlZA==
|
18
|
+
headers:
|
19
|
+
!binary "U2VydmVy":
|
20
|
+
- !binary |-
|
21
|
+
bmdpbngvMS40LjI=
|
22
|
+
!binary "RGF0ZQ==":
|
23
|
+
- !binary |-
|
24
|
+
V2VkLCAyNSBTZXAgMjAxMyAxMzoxMzo1NCBHTVQ=
|
25
|
+
!binary "Q29udGVudC1UeXBl":
|
26
|
+
- !binary |-
|
27
|
+
YXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOA==
|
28
|
+
!binary "Q29udGVudC1MZW5ndGg=":
|
29
|
+
- !binary |-
|
30
|
+
Mzg0Mw==
|
31
|
+
!binary "Q29ubmVjdGlvbg==":
|
32
|
+
- !binary |-
|
33
|
+
a2VlcC1hbGl2ZQ==
|
34
|
+
!binary "U3RhdHVz":
|
35
|
+
- !binary |-
|
36
|
+
MjAxIENyZWF0ZWQ=
|
37
|
+
!binary "Q2FjaGUtQ29udHJvbA==":
|
38
|
+
- !binary |-
|
39
|
+
bm8tY2FjaGU=
|
40
|
+
!binary "WC1aZW5kZXNrLUFwaS1WZXJzaW9u":
|
41
|
+
- !binary |-
|
42
|
+
djI=
|
43
|
+
!binary "TG9jYXRpb24=":
|
44
|
+
- !binary |-
|
45
|
+
aHR0cHM6Ly9naW1pc2NhbGUuemVuZGVzay5jb20vYXBpL3YyL3RpY2tldHMv
|
46
|
+
OTQyLmpzb24=
|
47
|
+
!binary "WC1SdW50aW1l":
|
48
|
+
- !binary |-
|
49
|
+
NDUw
|
50
|
+
!binary "WC1aZW5kZXNrLU9yaWdpbi1TZXJ2ZXI=":
|
51
|
+
- !binary |-
|
52
|
+
YXBwMTUucG9kMS5vcmQuemRzeXMuY29t
|
53
|
+
!binary "WC1aZW5kZXNrLVVzZXItSWQ=":
|
54
|
+
- !binary |-
|
55
|
+
Mjc1OTA5MTE2
|
56
|
+
!binary "WC1aZW5kZXNrLVJlcXVlc3QtSWQ=":
|
57
|
+
- !binary |-
|
58
|
+
ZGFkNDkyNWI5MmZjNDA0YzVlNTE=
|
59
|
+
!binary "WC1Db250ZW50LVR5cGUtT3B0aW9ucw==":
|
60
|
+
- !binary |-
|
61
|
+
bm9zbmlmZg==
|
62
|
+
body:
|
63
|
+
encoding: ASCII-8BIT
|
64
|
+
string: !binary |-
|
65
|
+
eyJ0aWNrZXQiOnsidXJsIjoiaHR0cHM6Ly9naW1pc2NhbGUuemVuZGVzay5j
|
66
|
+
b20vYXBpL3YyL3RpY2tldHMvOTQyLmpzb24iLCJpZCI6OTQyLCJleHRlcm5h
|
67
|
+
bF9pZCI6bnVsbCwidmlhIjp7ImNoYW5uZWwiOiJhcGkiLCJzb3VyY2UiOnsi
|
68
|
+
ZnJvbSI6e30sInRvIjp7fSwicmVsIjpudWxsfX0sImNyZWF0ZWRfYXQiOiIy
|
69
|
+
MDEzLTA5LTI1VDEzOjEzOjU0WiIsInVwZGF0ZWRfYXQiOiIyMDEzLTA5LTI1
|
70
|
+
VDEzOjEzOjU0WiIsInR5cGUiOm51bGwsInN1YmplY3QiOiJHaW1pemVuIiwi
|
71
|
+
ZGVzY3JpcHRpb24iOiJUaGlzIGlzIGEgdGVzdCB0aWNrZXQiLCJwcmlvcml0
|
72
|
+
eSI6bnVsbCwic3RhdHVzIjoibmV3IiwicmVjaXBpZW50IjpudWxsLCJyZXF1
|
73
|
+
ZXN0ZXJfaWQiOjI3NTkwOTExNiwic3VibWl0dGVyX2lkIjoyNzU5MDkxMTYs
|
74
|
+
ImFzc2lnbmVlX2lkIjpudWxsLCJvcmdhbml6YXRpb25faWQiOm51bGwsImdy
|
75
|
+
b3VwX2lkIjoyMDMyOTA5MiwiY29sbGFib3JhdG9yX2lkcyI6W10sImZvcnVt
|
76
|
+
X3RvcGljX2lkIjpudWxsLCJwcm9ibGVtX2lkIjpudWxsLCJoYXNfaW5jaWRl
|
77
|
+
bnRzIjpmYWxzZSwiZHVlX2F0IjpudWxsLCJ0YWdzIjpbImdpbWlzY2FsZSJd
|
78
|
+
LCJjdXN0b21fZmllbGRzIjpbXSwic2F0aXNmYWN0aW9uX3JhdGluZyI6bnVs
|
79
|
+
bCwic2hhcmluZ19hZ3JlZW1lbnRfaWRzIjpbXSwiZmllbGRzIjpbXX0sImF1
|
80
|
+
ZGl0Ijp7ImlkIjoxNzYxNjMyMDIxMywidGlja2V0X2lkIjo5NDIsImNyZWF0
|
81
|
+
ZWRfYXQiOiIyMDEzLTA5LTI1VDEzOjEzOjU0WiIsImF1dGhvcl9pZCI6Mjc1
|
82
|
+
OTA5MTE2LCJ2aWEiOnsiY2hhbm5lbCI6ImFwaSIsInNvdXJjZSI6eyJmcm9t
|
83
|
+
Ijp7fSwidG8iOnt9LCJyZWwiOm51bGx9fSwibWV0YWRhdGEiOnsic3lzdGVt
|
84
|
+
Ijp7ImlwX2FkZHJlc3MiOiIzNy4xNy4yMTAuNzQiLCJsb2NhdGlvbiI6Ik5l
|
85
|
+
dGhlcmxhbmRzIiwibGF0aXR1ZGUiOjUyLjUsImxvbmdpdHVkZSI6NS43NX0s
|
86
|
+
ImN1c3RvbSI6e319LCJldmVudHMiOlt7ImlkIjoxNzYxNjMyMDIyMywidHlw
|
87
|
+
ZSI6IkNvbW1lbnQiLCJhdXRob3JfaWQiOjI3NTkwOTExNiwiYm9keSI6IlRo
|
88
|
+
aXMgaXMgYSB0ZXN0IHRpY2tldCIsImh0bWxfYm9keSI6IjxwPlRoaXMgaXMg
|
89
|
+
YSB0ZXN0IHRpY2tldDwvcD4iLCJwdWJsaWMiOnRydWUsInRydXN0ZWQiOnRy
|
90
|
+
dWUsImF0dGFjaG1lbnRzIjpbXX0seyJpZCI6MTc2MTYzMjAyMzMsInR5cGUi
|
91
|
+
OiJDcmVhdGUiLCJ2YWx1ZSI6IkdpbWl6ZW4iLCJmaWVsZF9uYW1lIjoic3Vi
|
92
|
+
amVjdCJ9LHsiaWQiOjE3NjE2MzIwMjQzLCJ0eXBlIjoiQ3JlYXRlIiwidmFs
|
93
|
+
dWUiOjI3NTkwOTExNiwiZmllbGRfbmFtZSI6InJlcXVlc3Rlcl9pZCJ9LHsi
|
94
|
+
aWQiOjE3NjE2MzIwMjUzLCJ0eXBlIjoiQ3JlYXRlIiwidmFsdWUiOiJuZXci
|
95
|
+
LCJmaWVsZF9uYW1lIjoic3RhdHVzIn0seyJpZCI6MTc2MTYzMjAyNjMsInR5
|
96
|
+
cGUiOiJDcmVhdGUiLCJ2YWx1ZSI6bnVsbCwiZmllbGRfbmFtZSI6InByaW9y
|
97
|
+
aXR5In0seyJpZCI6MTc2MTYzMjAyNzMsInR5cGUiOiJDcmVhdGUiLCJ2YWx1
|
98
|
+
ZSI6bnVsbCwiZmllbGRfbmFtZSI6InR5cGUifSx7ImlkIjoxNzYxNjMyMDI4
|
99
|
+
MywidHlwZSI6IkNyZWF0ZSIsInZhbHVlIjpbImdpbWlzY2FsZSJdLCJmaWVs
|
100
|
+
ZF9uYW1lIjoidGFncyJ9LHsiaWQiOjE3NjE2MzIwMjkzLCJ0eXBlIjoiQ3Jl
|
101
|
+
YXRlIiwidmFsdWUiOjIwMzI5MDkyLCJmaWVsZF9uYW1lIjoiZ3JvdXBfaWQi
|
102
|
+
fSx7ImlkIjoxNzYxNjMyMDMwMywidHlwZSI6Ik5vdGlmaWNhdGlvbiIsInZp
|
103
|
+
YSI6eyJjaGFubmVsIjoicnVsZSIsInNvdXJjZSI6eyJ0byI6e30sImZyb20i
|
104
|
+
OnsiaWQiOjMxODYxNjEzLCJ0aXRsZSI6IkluZm9ybSBCb3lzIn0sInJlbCI6
|
105
|
+
InRyaWdnZXIifX0sInN1YmplY3QiOiJUaWNrZXQgcmVjZWl2ZWQ6IHt7dGlj
|
106
|
+
a2V0LnRpdGxlfX0iLCJib2R5IjoiTmljayBlbiBUaG9tYXMsIDxicj5cblxu
|
107
|
+
QmV0ZXIgZ2EgamUgYWxzIGRlIHdpZWRld2VlcmdhIG5hYXIgWmVuZGVzay4g
|
108
|
+
RXIgaXMgbmFtZWxpamsgZWVuIHRpY2tldCBiaW5uZW5nZWtvbWVuLjxicj5c
|
109
|
+
blxuaHR0cDovL3t7dGlja2V0LnVybH19XG5cbjxicj5cblxuXG57e3RpY2tl
|
110
|
+
dC5jb21tZW50c19mb3JtYXR0ZWR9fVxuXG48aDI+IFdlIGRlbGl2ZXIgc21h
|
111
|
+
cnQsIHJlbGlhYmxlLCBzdXN0YWluYWJsZSBhbmQgc2NhbGFibGUgSVQgc29s
|
112
|
+
dXRpb25zIDxoMj4iLCJyZWNpcGllbnRzIjpbMjc1OTA5MTE2XX0seyJpZCI6
|
113
|
+
MTc2MTYzMjAzMTMsInR5cGUiOiJOb3RpZmljYXRpb24iLCJ2aWEiOnsiY2hh
|
114
|
+
bm5lbCI6InJ1bGUiLCJzb3VyY2UiOnsidG8iOnt9LCJmcm9tIjp7ImlkIjoz
|
115
|
+
MTg2MTYxMywidGl0bGUiOiJJbmZvcm0gQm95cyJ9LCJyZWwiOiJ0cmlnZ2Vy
|
116
|
+
In19LCJzdWJqZWN0IjoiVGlja2V0IHJlY2VpdmVkOiB7e3RpY2tldC50aXRs
|
117
|
+
ZX19IiwiYm9keSI6IlRlZCwgPGJyPlxyXG5cclxuSMOpw6ksIGVyIGlzIGVl
|
118
|
+
biB0aWNrZXQuLi4gSGVsbHVwIGhlbGx1cCEgTm8gd29ycmllcywgZ2V3b29u
|
119
|
+
IHJlc2N1ZSwgZWYgZWxsdWYsIG1ldCBlZW4gbGFuZ2UgZWYhIE9mIERJRUxF
|
120
|
+
VD88YnI+XHJcblxyXG5odHRwOi8ve3t0aWNrZXQudXJsfX1cclxuXHJcbjxi
|
121
|
+
cj5cclxuXHJcblxyXG57e3RpY2tldC5jb21tZW50c19mb3JtYXR0ZWR9fVxy
|
122
|
+
XG5cclxuPGgyPiBXZSBkZWxpdmVyIHNtYXJ0LCByZWxpYWJsZSwgc3VzdGFp
|
123
|
+
bmFibGUgYW5kIHNjYWxhYmxlIElUIHNvbHV0aW9ucyA8aDI+IiwicmVjaXBp
|
124
|
+
ZW50cyI6WzI1NDQ1MzczN119LHsiaWQiOjE3NjE2MzIwMzIzLCJ0eXBlIjoi
|
125
|
+
RXh0ZXJuYWwiLCJ2aWEiOnsiY2hhbm5lbCI6InJ1bGUiLCJzb3VyY2UiOnsi
|
126
|
+
dG8iOnt9LCJmcm9tIjp7ImlkIjozMzExMzI0MywidGl0bGUiOiJDbGlja2F0
|
127
|
+
ZWxsIn0sInJlbCI6InRyaWdnZXIifX0sInJlc291cmNlIjoiMjAwMjUxMDEi
|
128
|
+
LCJib2R5Ijoie3t0aWNrZXQudGl0bGV9fSByZWNlaXZlZCBmcm9tIHt7dGlj
|
129
|
+
a2V0LnJlcXVlc3Rlci5uYW1lfX0iLCJzdWNjZXNzIjpudWxsfSx7ImlkIjox
|
130
|
+
NzYxNjMyMDMzMywidHlwZSI6IkV4dGVybmFsIiwidmlhIjp7ImNoYW5uZWwi
|
131
|
+
OiJydWxlIiwic291cmNlIjp7InRvIjp7fSwiZnJvbSI6eyJpZCI6MzMxMTMy
|
132
|
+
NDMsInRpdGxlIjoiQ2xpY2thdGVsbCJ9LCJyZWwiOiJ0cmlnZ2VyIn19LCJy
|
133
|
+
ZXNvdXJjZSI6IjIwMDM1MjY4IiwiYm9keSI6Int7dGlja2V0LnRpdGxlfX0g
|
134
|
+
cmVjZWl2ZWQgZnJvbSB7e3RpY2tldC5yZXF1ZXN0ZXIubmFtZX19Iiwic3Vj
|
135
|
+
Y2VzcyI6bnVsbH0seyJpZCI6MTc2MTYzMjAzNDMsInR5cGUiOiJFeHRlcm5h
|
136
|
+
bCIsInZpYSI6eyJjaGFubmVsIjoicnVsZSIsInNvdXJjZSI6eyJ0byI6e30s
|
137
|
+
ImZyb20iOnsiaWQiOjMzMTEzMjQzLCJ0aXRsZSI6IkNsaWNrYXRlbGwifSwi
|
138
|
+
cmVsIjoidHJpZ2dlciJ9fSwicmVzb3VyY2UiOiIyMDAyNTcxMyIsImJvZHki
|
139
|
+
OiJ7e3RpY2tldC50aXRsZX19IHJlY2VpdmVkIGZyb20ge3t0aWNrZXQucmVx
|
140
|
+
dWVzdGVyLm5hbWV9fSIsInN1Y2Nlc3MiOm51bGx9LHsiaWQiOjE3NjE2MzIw
|
141
|
+
MzUzLCJ0eXBlIjoiRXh0ZXJuYWwiLCJ2aWEiOnsiY2hhbm5lbCI6InJ1bGUi
|
142
|
+
LCJzb3VyY2UiOnsidG8iOnt9LCJmcm9tIjp7ImlkIjozMzExMzI0MywidGl0
|
143
|
+
bGUiOiJDbGlja2F0ZWxsIn0sInJlbCI6InRyaWdnZXIifX0sInJlc291cmNl
|
144
|
+
IjoiMjAwNDk3OTciLCJib2R5Ijoie3t0aWNrZXQudGl0bGV9fSByZWNlaXZl
|
145
|
+
ZCBmcm9tIHt7dGlja2V0LnJlcXVlc3Rlci5uYW1lfX0iLCJzdWNjZXNzIjpu
|
146
|
+
dWxsfSx7ImlkIjoxNzYxNjMyMDM2MywidHlwZSI6IkV4dGVybmFsIiwidmlh
|
147
|
+
Ijp7ImNoYW5uZWwiOiJydWxlIiwic291cmNlIjp7InRvIjp7fSwiZnJvbSI6
|
148
|
+
eyJpZCI6Mzc4NjEwNzcsInRpdGxlIjoiRmxvd2RvY2sgTWFpbiJ9LCJyZWwi
|
149
|
+
OiJ0cmlnZ2VyIn19LCJyZXNvdXJjZSI6IjIwMDQ5Nzk3IiwiYm9keSI6IiIs
|
150
|
+
InN1Y2Nlc3MiOm51bGx9XX19
|
151
|
+
http_version:
|
152
|
+
recorded_at: Wed, 25 Sep 2013 13:13:55 GMT
|
153
|
+
recorded_with: VCR 2.4.0
|
metadata
ADDED
@@ -0,0 +1,189 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: gimizen
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- GiMiScale
|
9
|
+
- Nick den Engelsman
|
10
|
+
autorequire:
|
11
|
+
bindir: bin
|
12
|
+
cert_chain: []
|
13
|
+
date: 2013-09-25 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: httparty
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
|
+
none: false
|
19
|
+
requirements:
|
20
|
+
- - ~>
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 0.11.0
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - ~>
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: 0.11.0
|
31
|
+
- !ruby/object:Gem::Dependency
|
32
|
+
name: json
|
33
|
+
requirement: !ruby/object:Gem::Requirement
|
34
|
+
none: false
|
35
|
+
requirements:
|
36
|
+
- - ~>
|
37
|
+
- !ruby/object:Gem::Version
|
38
|
+
version: 1.8.0
|
39
|
+
type: :runtime
|
40
|
+
prerelease: false
|
41
|
+
version_requirements: !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - ~>
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: 1.8.0
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: hash_symbolizer
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 1.0.1
|
55
|
+
type: :runtime
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - ~>
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: 1.0.1
|
63
|
+
- !ruby/object:Gem::Dependency
|
64
|
+
name: rspec
|
65
|
+
requirement: !ruby/object:Gem::Requirement
|
66
|
+
none: false
|
67
|
+
requirements:
|
68
|
+
- - ~>
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: 2.13.0
|
71
|
+
type: :development
|
72
|
+
prerelease: false
|
73
|
+
version_requirements: !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - ~>
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: 2.13.0
|
79
|
+
- !ruby/object:Gem::Dependency
|
80
|
+
name: capybara
|
81
|
+
requirement: !ruby/object:Gem::Requirement
|
82
|
+
none: false
|
83
|
+
requirements:
|
84
|
+
- - ~>
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: 2.1.0
|
87
|
+
type: :development
|
88
|
+
prerelease: false
|
89
|
+
version_requirements: !ruby/object:Gem::Requirement
|
90
|
+
none: false
|
91
|
+
requirements:
|
92
|
+
- - ~>
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: 2.1.0
|
95
|
+
- !ruby/object:Gem::Dependency
|
96
|
+
name: vcr
|
97
|
+
requirement: !ruby/object:Gem::Requirement
|
98
|
+
none: false
|
99
|
+
requirements:
|
100
|
+
- - ~>
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: 2.4.0
|
103
|
+
type: :development
|
104
|
+
prerelease: false
|
105
|
+
version_requirements: !ruby/object:Gem::Requirement
|
106
|
+
none: false
|
107
|
+
requirements:
|
108
|
+
- - ~>
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 2.4.0
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: webmock
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
none: false
|
115
|
+
requirements:
|
116
|
+
- - ~>
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: 1.8.0
|
119
|
+
type: :development
|
120
|
+
prerelease: false
|
121
|
+
version_requirements: !ruby/object:Gem::Requirement
|
122
|
+
none: false
|
123
|
+
requirements:
|
124
|
+
- - ~>
|
125
|
+
- !ruby/object:Gem::Version
|
126
|
+
version: 1.8.0
|
127
|
+
- !ruby/object:Gem::Dependency
|
128
|
+
name: simplecov
|
129
|
+
requirement: !ruby/object:Gem::Requirement
|
130
|
+
none: false
|
131
|
+
requirements:
|
132
|
+
- - ~>
|
133
|
+
- !ruby/object:Gem::Version
|
134
|
+
version: 0.7.1
|
135
|
+
type: :development
|
136
|
+
prerelease: false
|
137
|
+
version_requirements: !ruby/object:Gem::Requirement
|
138
|
+
none: false
|
139
|
+
requirements:
|
140
|
+
- - ~>
|
141
|
+
- !ruby/object:Gem::Version
|
142
|
+
version: 0.7.1
|
143
|
+
description: API wrapper for Zendesk
|
144
|
+
email:
|
145
|
+
- nick.denengelsman@gimiscale.com
|
146
|
+
executables: []
|
147
|
+
extensions: []
|
148
|
+
extra_rdoc_files: []
|
149
|
+
files:
|
150
|
+
- .gitignore
|
151
|
+
- .travis.yml
|
152
|
+
- Gemfile
|
153
|
+
- LICENSE.txt
|
154
|
+
- README.md
|
155
|
+
- Rakefile
|
156
|
+
- gimizen.gemspec
|
157
|
+
- lib/gimizen.rb
|
158
|
+
- lib/gimizen/version.rb
|
159
|
+
- spec/lib/gimizen_spec.rb
|
160
|
+
- spec/spec_helper.rb
|
161
|
+
- spec/vcr/create_ticket.yml
|
162
|
+
homepage: https://github.com/GiMiScale/gimizen
|
163
|
+
licenses: []
|
164
|
+
post_install_message:
|
165
|
+
rdoc_options: []
|
166
|
+
require_paths:
|
167
|
+
- lib
|
168
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
169
|
+
none: false
|
170
|
+
requirements:
|
171
|
+
- - ! '>='
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
174
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
175
|
+
none: false
|
176
|
+
requirements:
|
177
|
+
- - ! '>='
|
178
|
+
- !ruby/object:Gem::Version
|
179
|
+
version: '0'
|
180
|
+
requirements: []
|
181
|
+
rubyforge_project:
|
182
|
+
rubygems_version: 1.8.25
|
183
|
+
signing_key:
|
184
|
+
specification_version: 3
|
185
|
+
summary: Creating tickets for Zendesk should be as simple as 'zen'.
|
186
|
+
test_files:
|
187
|
+
- spec/lib/gimizen_spec.rb
|
188
|
+
- spec/spec_helper.rb
|
189
|
+
- spec/vcr/create_ticket.yml
|