gimizen 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
+
[](https://travis-ci.org/GiMiScale/gimizen) [](https://codeclimate.com/github/GiMiScale/gimizen) [](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
|