zendesk-api-naoya 0.3.3

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.
@@ -0,0 +1,20 @@
1
+ Manifest
2
+ README.markdown
3
+ Rakefile
4
+ geminstaller.yml
5
+ lib/console.rb
6
+ lib/zendesk-api.rb
7
+ lib/zendesk.rb
8
+ lib/zendesk/attachment.rb
9
+ lib/zendesk/entry.rb
10
+ lib/zendesk/forum.rb
11
+ lib/zendesk/group.rb
12
+ lib/zendesk/main.rb
13
+ lib/zendesk/organization.rb
14
+ lib/zendesk/search.rb
15
+ lib/zendesk/tag.rb
16
+ lib/zendesk/ticket.rb
17
+ lib/zendesk/user.rb
18
+ lib/zendesk/user_identity.rb
19
+ spec/zendesk/main_spec.rb
20
+ spec/zendesk/user_spec.rb
@@ -0,0 +1,76 @@
1
+ Zendesk API
2
+ ------------
3
+
4
+ The unofficial Ruby Library for interacting with the [Zendesk REST API](http://www.zendesk.com/api)
5
+
6
+ ## Documentation & Requirements
7
+ * ActiveResource gem
8
+ * Curl
9
+ * Curb gem
10
+
11
+ ## What
12
+ * Ruby wrapper around the Zendesk REST API
13
+
14
+ ## Install Instructions
15
+ Normal install:
16
+
17
+ gem install zendesk-api
18
+
19
+ Bundler install:
20
+
21
+ gem "zendesk-api", "latestversion"
22
+
23
+ ## How to use it
24
+ ### Basic
25
+ Below outputs xml
26
+
27
+ z = Zendesk::Main.new('subdomain', 'username', 'password')
28
+ and outputs json
29
+
30
+ z = Zendesk::Main.new('subdomain', 'username', 'password', :format => 'json')
31
+
32
+ ### Show
33
+
34
+ z.get_function_name(user_id)
35
+
36
+ where function_name is one the following:
37
+ user, organization, group, ticket, attachement, tag, forum, entries, search
38
+
39
+ e.g.
40
+
41
+ z.get_user(121)
42
+ ### List
43
+
44
+ z.get_function_names #with a s in the end, for plural
45
+ e.g.
46
+
47
+ z.get_users
48
+
49
+ ### Create
50
+ with string
51
+
52
+ z.create_user("<user><email>email@company.com</email><name>John Doe</name></user>")
53
+ with hash(array is not supported yet)
54
+
55
+ z.create_user({:email => 'email@company.com', :name => 'John Doe'})
56
+
57
+ ### Update
58
+ Not supported yet
59
+
60
+ ### Destroy
61
+
62
+ z.destroy_function_name(id)
63
+ e.g.
64
+
65
+ z.destroy_user(234)
66
+
67
+
68
+ ## Using The Zendesk Console
69
+
70
+ The Zendesk library comes with a convenient console for testing and quick commands (or whatever else you want to use it for).
71
+
72
+ From /
73
+
74
+ irb -r lib/zendesk/console
75
+ z = Zendesk::Main.new('accountname', 'username', 'password')
76
+ z.get_users
@@ -0,0 +1,17 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+ require 'echoe'
4
+
5
+ Echoe.new('zendesk-api', '0.3.2') do |p|
6
+ p.description = "RubyGem wrapper for REST API to http://zendesk.com"
7
+ p.author = "Peter Ericson"
8
+ p.url = "http://github.com/pgericson/zendesk-api"
9
+ p.email = "pg.ericson@gmail.com"
10
+ p.ignore_pattern = ["tmp/*", "script/*"]
11
+ p.development_dependencies = []
12
+ p.runtime_dependencies = ["crack >=0.1.8", "activesupport >=2.3"]
13
+ end
14
+ # how to build the new gem ( I can't remember so here it is for all time)
15
+ # rake build_gemspec
16
+
17
+ Dir["#{File.dirname(__FILE__)}/tasks/*.rake"].sort.each { |ext| load ext }
@@ -0,0 +1,11 @@
1
+ defaults:
2
+ install_options: --source http://gems.github.com --source http://gems.rubyforge.org --no-ri --no-rdoc
3
+
4
+ gems:
5
+ - name: rspec
6
+ version: '=1.3.0'
7
+ - name: rspec-rails
8
+ version: '=1.3.2'
9
+ - name: curb
10
+ version: '=0.6.7'
11
+
@@ -0,0 +1,6 @@
1
+ require 'lib/zendesk-api'
2
+ puts <<-TXT
3
+ Stuff here to explain what it does
4
+ TXT
5
+
6
+ include Zendesk
@@ -0,0 +1,26 @@
1
+ require 'rubygems'
2
+ require 'curb'
3
+ require 'crack'
4
+ gem 'activesupport'
5
+ require 'active_support'
6
+ require 'active_support/version'
7
+ # need to pull in the pieces we want with Rails 3
8
+ require 'active_support/core_ext' if ActiveSupport::VERSION::MAJOR == 3
9
+
10
+ module Zendesk
11
+ class Error < StandardError; end
12
+ class CouldNotAuthenticateYou < StandardError; end
13
+ end
14
+
15
+ require 'zendesk/user'
16
+ require 'zendesk/user_identity'
17
+ require 'zendesk/organization'
18
+ require 'zendesk/group'
19
+ require 'zendesk/ticket'
20
+ require 'zendesk/attachment'
21
+ require 'zendesk/tag'
22
+ require 'zendesk/forum'
23
+ require 'zendesk/entry'
24
+ require 'zendesk/search'
25
+ require 'zendesk/comment'
26
+ require 'zendesk/main'
@@ -0,0 +1 @@
1
+ require File.dirname(__FILE__) + "/zendesk"
@@ -0,0 +1,5 @@
1
+ module Zendesk
2
+ module Attachment
3
+
4
+ end
5
+ end
@@ -0,0 +1,24 @@
1
+ module Zendesk
2
+ module Entry
3
+
4
+ def get_entries(forum_id)
5
+ make_request("forums/#{forum_id}/entries")
6
+ end
7
+
8
+ def get_entry(id)
9
+ make_request("entries/#{id}")
10
+ end
11
+
12
+ def create_entrie(input)
13
+ make_request("entries", :create => Zendesk::Main.to_xml('entrie', input))
14
+ end
15
+
16
+ def update_entrie(input)
17
+ make_request("entries", :update => Zendesk::Main.to_xml('entrie', input))
18
+ end
19
+
20
+ def delete_entrie(id)
21
+ make_request("entries/#{id}", :destroy => true)
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,24 @@
1
+ module Zendesk
2
+ module Forum
3
+
4
+ def get_forums
5
+ make_request("forums")
6
+ end
7
+
8
+ def get_forum(id)
9
+ make_request("forums/#{id}")
10
+ end
11
+
12
+ def create_forum(input)
13
+ make_request("forums", :create => Zendesk::Main.to_xml('forum', input))
14
+ end
15
+
16
+ def update_forum(input)
17
+ make_request("forums", :update => Zendesk::Main.to_xml('forum', input))
18
+ end
19
+
20
+ def delete_forum(id)
21
+ make_request("forums/#{id}", :destroy => true)
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,24 @@
1
+ module Zendesk
2
+ module Group
3
+
4
+ def get_groups
5
+ make_request("groups")
6
+ end
7
+
8
+ def get_group(id)
9
+ make_request("groups/#{id}")
10
+ end
11
+
12
+ def create_group(input)
13
+ make_request("groups", :create => Zendesk::Main.to_xml('group', input))
14
+ end
15
+
16
+ def update_group(input)
17
+ make_request("groups", :update => Zendesk::Main.to_xml('group', input))
18
+ end
19
+
20
+ def delete_group(id)
21
+ make_request("groups/#{id}", :destroy => true)
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,132 @@
1
+ module Zendesk
2
+ class Main
3
+ attr_accessor :main_url, :format
4
+ attr_reader :response_raw, :response
5
+
6
+ def initialize(account, username, password, options = {})
7
+ @account = account
8
+ @username = username
9
+ @password = password
10
+ @options = options
11
+ if options[:format] && ['xml', 'json'].any?{|f| f == options[:format]}
12
+ @format = options[:format]
13
+ else
14
+ @format = 'xml'
15
+ end
16
+ end
17
+
18
+ def main_url
19
+ url_prefix = @options[:ssl] ? "https://" : "http://"
20
+ url_postfix = @options[:url_postfix] ? @options[:url_postfix]: '.zendesk.com/'
21
+ url_postfix << "api/v#{@options[:api_version]}/" if @options[:api_version]
22
+
23
+ url = url_prefix + @account + url_postfix
24
+ end
25
+
26
+ def self.to_xml(function_name, input)
27
+ if input.is_a?(String)
28
+ input
29
+ else
30
+ input.to_xml({:root => function_name})
31
+ end
32
+ end
33
+
34
+
35
+ def params_list(list)
36
+ params = "?" + list.map do |k, v|
37
+ if v.is_a?(Array)
38
+ v.map do |val|
39
+ "#{k}[]=#{val}"
40
+ end.join("&")
41
+ else
42
+ "#{k}=#{v}"
43
+ end
44
+ end.join("&")
45
+ end
46
+
47
+ def string_body(body)
48
+ if body.values.first.is_a?(Hash)
49
+ body.values.first.to_xml.strip
50
+ elsif body.values.first.is_a?(String)
51
+ body.values.first
52
+ end
53
+ end
54
+
55
+ def make_request(end_url, body = {}, options = {})
56
+ options.reverse_merge!({:on_behalf_of => nil})
57
+
58
+ curl = Curl::Easy.new(main_url + end_url + ".#{@format}")
59
+ curl.userpwd = "#{@username}:#{@password}"
60
+
61
+ curl.headers={}
62
+ curl.headers.merge!({"X-On-Behalf-Of" => options[:on_behalf_of]}) if options[:on_behalf_of].present?
63
+
64
+ if body.empty? or body[:list]
65
+ curl.url = curl.url + params_list(body[:list]) if body[:list]
66
+ curl.perform
67
+ elsif body[:post]
68
+ curl.headers.merge!({"Content-Type" => "application/xml"})
69
+ curl.http_post
70
+ elsif body[:create]
71
+ curl.headers.merge!({"Content-Type" => "application/xml"})
72
+ curl.http_post(string_body(body))
73
+ elsif body[:update]
74
+ # PUT seems badly broken, at least I can't get it to work without always
75
+ # raising an exception about rewinding the data stream
76
+ # curl.http_put(final_body)
77
+ curl.headers.merge!({ "Content-Type" => "application/xml", "X-Http-Method-Override" => "put" })
78
+ curl.http_post(string_body(body))
79
+ elsif body[:destroy]
80
+ curl.http_delete
81
+ end
82
+
83
+ if curl.body_str == "<error>Couldn't authenticate you</error>"
84
+ return "string" #raise CouldNotAuthenticateYou
85
+ end
86
+ Response.new(curl, format)
87
+ end
88
+
89
+ class Response
90
+
91
+ attr_reader :status, :body, :headers_raw, :headers, :curl, :url, :data
92
+
93
+ def initialize(curl, format)
94
+ @format=format
95
+ @curl = curl
96
+ @url = curl.url
97
+ @status = curl.response_code
98
+ @body = curl.body_str
99
+ @headers_raw = curl.header_str
100
+ parse_headers
101
+ # parse the data coming back
102
+ @data = Crack::XML.parse(@body || "") if @format == "xml"
103
+ end
104
+
105
+ def parse_headers
106
+ hs={}
107
+ return hs if headers_raw.nil? or headers_raw==""
108
+ headers_raw.split("\r\n")[1..-1].each do |h|
109
+ # Rails.logger.info h
110
+ m=h.match(/([^:]+):\s?(.*)/)
111
+ next if m.nil? or m[2].nil?
112
+ # Rails.logger.info m.inspect
113
+ hs[m[1]]=m[2]
114
+ end
115
+ @headers=hs
116
+ end
117
+
118
+ end
119
+
120
+ include Zendesk::User
121
+ include Zendesk::UserIdentity
122
+ include Zendesk::Organization
123
+ include Zendesk::Group
124
+ include Zendesk::Ticket
125
+ include Zendesk::Attachment
126
+ include Zendesk::Tag
127
+ include Zendesk::Forum
128
+ include Zendesk::Entry
129
+ include Zendesk::Search
130
+ include Zendesk::Comment
131
+ end
132
+ end
@@ -0,0 +1,24 @@
1
+ module Zendesk
2
+ module Organization
3
+
4
+ def get_organizations
5
+ make_request("organizations")
6
+ end
7
+
8
+ def get_organization(id)
9
+ make_request("organizations/#{id}")
10
+ end
11
+
12
+ def create_organization(input)
13
+ make_request("organizations", :create => Zendesk::Main.to_xml('organization', input))
14
+ end
15
+
16
+ def update_organization(input)
17
+ make_request("organizations", :update => Zendesk::Main.to_xml('organization', input))
18
+ end
19
+
20
+ def delete_organization(id)
21
+ make_request("organizations/#{id}", :destroy => true)
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,7 @@
1
+ module Zendesk
2
+ module Search
3
+ def search(params)
4
+ make_request("search", :list => params)
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,13 @@
1
+ module Zendesk
2
+ module Tag
3
+
4
+ def get_tags(params = nil)
5
+ if params
6
+ make_request("tags", :list => params)
7
+ else
8
+ make_request("tags")
9
+ end
10
+ end
11
+
12
+ end
13
+ end
@@ -0,0 +1,24 @@
1
+ module Zendesk
2
+ module Ticket
3
+
4
+ def get_tickets(rule_id)
5
+ make_request("rules/#{rule_id}")
6
+ end
7
+
8
+ def get_ticket(id)
9
+ make_request("tickets/#{id}")
10
+ end
11
+
12
+ def create_ticket(input, options = {})
13
+ make_request("tickets", {:create => Zendesk::Main.to_xml('ticket', input)}, options)
14
+ end
15
+
16
+ def update_ticket(id, input, options = {})
17
+ make_request("tickets/#{id}", {:update => Zendesk::Main.to_xml('ticket', input)}, options)
18
+ end
19
+
20
+ def delete_ticket(id)
21
+ make_request("tickets/#{id}", :destroy => true)
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,28 @@
1
+ module Zendesk
2
+ module User
3
+
4
+ def get_users(params = nil)
5
+ if params
6
+ make_request("users", :list => params)
7
+ else
8
+ make_request("users")
9
+ end
10
+ end
11
+
12
+ def get_user(id)
13
+ make_request("users/#{id}")
14
+ end
15
+
16
+ def create_user(input)
17
+ make_request("users", :create => Zendesk::Main.to_xml('user', input))
18
+ end
19
+
20
+ def update_user(id, input)
21
+ make_request("users/#{id}", :update => Zendesk::Main.to_xml('user', input))
22
+ end
23
+
24
+ def delete_user(id)
25
+ make_request("users/#{id}", :destroy => true)
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,25 @@
1
+ module Zendesk
2
+ module UserIdentity
3
+
4
+ def user_add_twitter(user_id, twitter)
5
+ make_request("users/#{user_id}/user_identities", :create => "<twitter>#{twitter}</twitter>")
6
+ end
7
+
8
+ def user_primary_identity(user_id, id)
9
+ make_request("users/#{user_id}/user_identities/#{id}/make_primary", :post => true)
10
+ end
11
+
12
+ def user_add_email(user_id, email)
13
+ make_request("users/#{user_id}/user_identities", :create => "<email>#{email}</email>")
14
+ end
15
+
16
+ def user_delete_identity(user_id, id)
17
+ make_request("users/#{user_id}/user_identities/#{id}", :destroy => true)
18
+ end
19
+
20
+ def user_identities(user_id)
21
+ make_request("users/#{user_id}/user_identities")
22
+ end
23
+
24
+ end
25
+ end
@@ -0,0 +1,123 @@
1
+ require "spec"
2
+ require 'zendesk-api'
3
+
4
+ describe Zendesk::Main do
5
+ describe "basic" do
6
+ before(:each) do
7
+ @account = "this_account"
8
+ @username = "this_username"
9
+ @password = "this_password"
10
+ @zendesk = Zendesk::Main.new(@account, @username, @password)
11
+ end
12
+
13
+ it "should have the correct mail_url with no ssl options" do
14
+ @zendesk.main_url.should == "http://#{@account}.zendesk.com/"
15
+ end
16
+
17
+ it "should have the correct mail_url with ssl options" do
18
+ @zendesk = Zendesk::Main.new(@account, @username, @password, :ssl => true)
19
+ @zendesk.main_url.should == "https://#{@account}.zendesk.com/"
20
+ end
21
+
22
+ it "should add the api version to the URL if one is specified" do
23
+ @zendesk = Zendesk::Main.new(@account, @username, @password, :ssl => true, :api_version => 1)
24
+ @zendesk.main_url.should == "https://#{@account}.zendesk.com/api/v1/"
25
+ end
26
+ end
27
+
28
+ describe 'make_request' do
29
+ context "searching" do
30
+ before do
31
+ curl_object = Curl::Easy.method(:new)
32
+ Curl::Easy.stub!(:new).and_return do |* args|
33
+ curl = curl_object.call(* args)
34
+ curl.should_receive(:perform)
35
+ curl
36
+ end
37
+ end
38
+
39
+ it "should construct array url for search" do
40
+ zendesk = Zendesk::Main.new('my_company', "some_login", "some_password")
41
+ params = {
42
+ :foo => "bar",
43
+ :foo_list => [1, 2, 3]
44
+ }
45
+
46
+ response = zendesk.make_request("search", :list => params)
47
+ response.url.should =~ /foo=bar/
48
+ response.url.should =~ /foo_list\[\]=1/
49
+ response.url.should =~ /foo_list\[\]=2/
50
+ response.url.should =~ /foo_list\[\]=3/
51
+
52
+ end
53
+ end
54
+
55
+ context "headers" do
56
+ before(:each) do
57
+ @zendesk = Zendesk::Main.new('my_company', "some_login", "some_password")
58
+ @mock_object = mock('curl_connection')
59
+ @mock_object.stub!(:userpwd=).and_return(true)
60
+ @mock_object.stub!(:headers=).and_return({})
61
+ @mock_object.stub!(:headers).and_return({})
62
+ @mock_object.stub!(:body_str).and_return("body")
63
+ @mock_object.stub!(:header_str).and_return("header")
64
+ @mock_object.stub!(:url).and_return("url")
65
+ @mock_object.stub!(:response_code).and_return("response_code")
66
+ @mock_object.should_receive(:http_post).and_return(true)
67
+ @curl_object = Curl::Easy.should_receive(:new).and_return(@mock_object)
68
+ end
69
+ it "should use default options if none are passed" do
70
+ params = {"subject" => "rspec rulez", "description" => "description", "status_id"=>1}
71
+ options_hash = {:on_behalf_of => "test@test.com"}
72
+
73
+ options_hash.should_receive(:reverse_merge!).once.with({:on_behalf_of => nil})
74
+ @mock_object.headers.should_receive(:merge!).once.with({"Content-Type" => "application/xml"}).and_return(true)
75
+ @mock_object.headers.should_receive(:merge!).once.with({"X-On-Behalf-Of" => "test@test.com"}).and_return(true)
76
+
77
+ @zendesk.make_request("ticket", {:create => params}, options_hash)
78
+ end
79
+
80
+ it "should format headers for creation" do
81
+ params = {"subject" => "rspec rulez", "description" => "description", "status_id"=>1}
82
+
83
+ @mock_object.headers.should_receive(:merge!).with({"Content-Type" => "application/xml"}).any_number_of_times.and_return(true)
84
+
85
+ @zendesk.make_request("ticket", :create => params)
86
+ end
87
+ it "should add X-On-Behalf-Of if passed in options" do
88
+ params = {"subject" => "rspec rulez", "description" => "description", "status_id"=>1}
89
+
90
+ @mock_object.headers.should_receive(:merge!).once.with({"Content-Type" => "application/xml"}).and_return(true)
91
+ @mock_object.headers.should_receive(:merge!).once.with({"X-On-Behalf-Of" => "test@test.com"}).and_return(true)
92
+
93
+ @zendesk.make_request("ticket", {:create => params}, {:on_behalf_of => "test@test.com"})
94
+ end
95
+ it "should not add X-On-Behalf-Of if not passed in options" do
96
+ params = {"subject" => "rspec rulez", "description" => "description", "status_id"=>1}
97
+
98
+ @mock_object.headers.should_receive(:merge!).once.with({"Content-Type" => "application/xml"}).and_return(true)
99
+ @mock_object.headers.should_not_receive(:merge!).with({"X-On-Behalf-Of" => ""}).and_return(true)
100
+
101
+ @zendesk.make_request("ticket", {:create => params}, {:on_behalf_of => ""})
102
+ end
103
+ end
104
+ end
105
+
106
+ describe "#self.to_xml" do
107
+ context "comments" do
108
+ it "should output correctly formatted XML" do
109
+ input = {"value" => "new comment", "public" => true}
110
+ xml = Zendesk::Main.to_xml('comment', input)
111
+ xml.should =~ /<comment>\s*<public type=\"boolean\">true<\/public>\s*<value>new comment<\/value>\s*<\/comment>/
112
+ end
113
+ end
114
+
115
+ context "tickets" do
116
+ it "should output correctly formatted XML" do
117
+ input = {"subject" => "rspec rulez", "description" => "description", "status_id"=>1}
118
+ xml = Zendesk::Main.to_xml('ticket', input)
119
+ xml.should =~ /<ticket>\s*<subject>rspec rulez<\/subject>\s*<status-id type=\"integer\">1<\/status-id>\s*<description>description<\/description>\s*<\/ticket>/
120
+ end
121
+ end
122
+ end
123
+ end
@@ -0,0 +1,92 @@
1
+ require "spec"
2
+ require 'zendesk-api'
3
+
4
+ describe Zendesk::Main, 'user api' do
5
+ # before do
6
+ # end
7
+
8
+ it "should be able to create" do
9
+ data={"email" => "bob@aol.com", "name" => "Bob Jones", "roles" => 0, "restriction-id" => 4}
10
+ curl_object = Curl::Easy.method(:new)
11
+ Curl::Easy.stub!(:new).and_return do |*args|
12
+ curl = curl_object.call(*args)
13
+ # curl.stub!(:http_post)
14
+ body=Zendesk::Main.to_xml('user', data)
15
+ curl.should_receive(:http_post).with(body)
16
+ curl.stub!(:perform)
17
+ curl.stub!(:header_str) { "\r\nLocation: http://account.zendesk.com/users/23.xml\r\ndsaf: smoke"}
18
+ curl.stub!(:response_code).and_return(201)
19
+ curl
20
+ end
21
+ zendesk = Zendesk::Main.new('my_company', "some_login", "some_password")
22
+ response = zendesk.create_user(data)
23
+ response.url.should =~ %r{/users.xml}
24
+ response.headers["Location"].should =~ %r{/users/23.xml}
25
+ response.status.should == 201
26
+ end
27
+
28
+ it "should be able to update" do
29
+ data={"email" => "bob@aol.com", "name" => "Bob Jones", "roles" => 0, "restriction-id" => 4}
30
+ curl_object = Curl::Easy.method(:new)
31
+ Curl::Easy.stub!(:new).and_return do |*args|
32
+ curl = curl_object.call(*args)
33
+ curl.stub!(:perform)
34
+ body=Zendesk::Main.to_xml('user', data)
35
+ curl.should_receive(:http_post).with(body)
36
+ curl.stub!(:header_str) { "\r\ntest: blah"}
37
+ curl.stub!(:response_code).and_return(200)
38
+ curl
39
+ end
40
+ zendesk = Zendesk::Main.new('my_company', "some_login", "some_password")
41
+ response = zendesk.update_user(39,data)
42
+ response.curl.headers["X-Http-Method-Override"].should == "put"
43
+ response.url.should =~ %r{/users/39.xml$}
44
+ response.status.should == 200
45
+ end
46
+
47
+ it "should be able to get" do
48
+ curl_object = Curl::Easy.method(:new)
49
+ Curl::Easy.stub!(:new).and_return do |*args|
50
+ curl = curl_object.call(*args)
51
+ curl.stub!(:perform)
52
+ curl.stub!(:header_str) { "\r\ntest: blah"}
53
+ curl.stub!(:response_code).and_return(200)
54
+ curl
55
+ end
56
+ zendesk = Zendesk::Main.new('my_company', "some_login", "some_password")
57
+ response = zendesk.get_user(13)
58
+ response.url.should =~ %r{/users/13.xml$}
59
+ response.status.should == 200
60
+ end
61
+
62
+ it "should be able to list all" do
63
+ curl_object = Curl::Easy.method(:new)
64
+ Curl::Easy.stub!(:new).and_return do |*args|
65
+ curl = curl_object.call(*args)
66
+ curl.stub!(:perform)
67
+ curl.stub!(:header_str) { "\r\ntest: blah"}
68
+ curl.stub!(:response_code).and_return(200)
69
+ curl
70
+ end
71
+ zendesk = Zendesk::Main.new('my_company', "some_login", "some_password")
72
+ response = zendesk.get_users
73
+ response.url.should =~ %r{/users.xml$}
74
+ response.status.should == 200
75
+ end
76
+
77
+ it "should be able to delete" do
78
+ curl_object = Curl::Easy.method(:new)
79
+ Curl::Easy.stub!(:new).and_return do |*args|
80
+ curl = curl_object.call(*args)
81
+ curl.stub!(:http_delete)
82
+ curl.stub!(:perform)
83
+ curl.stub!(:response_code).and_return(200)
84
+ curl.stub!(:header_str) { "\r\nadsf\r\ndsaf"}
85
+ curl
86
+ end
87
+ zendesk = Zendesk::Main.new('my_company', "some_login", "some_password")
88
+ response = zendesk.delete_user(12)
89
+ response.url.should =~ %r{/users/12.xml}
90
+ response.status.should == 200
91
+ end
92
+ end
@@ -0,0 +1,36 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{zendesk-api-naoya}
5
+ s.version = "0.3.3"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Peter Ericson"]
9
+ s.date = %q{2010-12-27}
10
+ s.description = %q{RubyGem wrapper for REST API to http://zendesk.com}
11
+ s.email = %q{pg.ericson@gmail.com}
12
+ s.extra_rdoc_files = ["README.markdown", "lib/console.rb", "lib/zendesk-api.rb", "lib/zendesk.rb", "lib/zendesk/attachment.rb", "lib/zendesk/entry.rb", "lib/zendesk/forum.rb", "lib/zendesk/group.rb", "lib/zendesk/main.rb", "lib/zendesk/organization.rb", "lib/zendesk/search.rb", "lib/zendesk/tag.rb", "lib/zendesk/ticket.rb", "lib/zendesk/user.rb", "lib/zendesk/user_identity.rb"]
13
+ s.files = ["Manifest", "README.markdown", "Rakefile", "geminstaller.yml", "lib/console.rb", "lib/zendesk-api.rb", "lib/zendesk.rb", "lib/zendesk/attachment.rb", "lib/zendesk/entry.rb", "lib/zendesk/forum.rb", "lib/zendesk/group.rb", "lib/zendesk/main.rb", "lib/zendesk/organization.rb", "lib/zendesk/search.rb", "lib/zendesk/tag.rb", "lib/zendesk/ticket.rb", "lib/zendesk/user.rb", "lib/zendesk/user_identity.rb", "spec/zendesk/main_spec.rb", "spec/zendesk/user_spec.rb", "zendesk-api.gemspec"]
14
+ s.homepage = %q{http://github.com/pgericson/zendesk-api}
15
+ s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Zendesk-api", "--main", "README.markdown"]
16
+ s.require_paths = ["lib"]
17
+ s.rubyforge_project = %q{zendesk-api}
18
+ s.rubygems_version = %q{1.3.7}
19
+ s.summary = %q{RubyGem wrapper for REST API to http://zendesk.com}
20
+
21
+ if s.respond_to? :specification_version then
22
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
23
+ s.specification_version = 3
24
+
25
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
26
+ s.add_runtime_dependency(%q<crack>, [">= 0.1.8"])
27
+ s.add_runtime_dependency(%q<activesupport>, [">= 2.3"])
28
+ else
29
+ s.add_dependency(%q<crack>, [">= 0.1.8"])
30
+ s.add_dependency(%q<activesupport>, [">= 2.3"])
31
+ end
32
+ else
33
+ s.add_dependency(%q<crack>, [">= 0.1.8"])
34
+ s.add_dependency(%q<activesupport>, [">= 2.3"])
35
+ end
36
+ end
metadata ADDED
@@ -0,0 +1,135 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: zendesk-api-naoya
3
+ version: !ruby/object:Gem::Version
4
+ hash: 21
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 3
9
+ - 3
10
+ version: 0.3.3
11
+ platform: ruby
12
+ authors:
13
+ - Peter Ericson
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-12-27 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: crack
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ hash: 11
29
+ segments:
30
+ - 0
31
+ - 1
32
+ - 8
33
+ version: 0.1.8
34
+ type: :runtime
35
+ version_requirements: *id001
36
+ - !ruby/object:Gem::Dependency
37
+ name: activesupport
38
+ prerelease: false
39
+ requirement: &id002 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ hash: 5
45
+ segments:
46
+ - 2
47
+ - 3
48
+ version: "2.3"
49
+ type: :runtime
50
+ version_requirements: *id002
51
+ description: RubyGem wrapper for REST API to http://zendesk.com
52
+ email: pg.ericson@gmail.com
53
+ executables: []
54
+
55
+ extensions: []
56
+
57
+ extra_rdoc_files:
58
+ - README.markdown
59
+ - lib/console.rb
60
+ - lib/zendesk-api.rb
61
+ - lib/zendesk.rb
62
+ - lib/zendesk/attachment.rb
63
+ - lib/zendesk/entry.rb
64
+ - lib/zendesk/forum.rb
65
+ - lib/zendesk/group.rb
66
+ - lib/zendesk/main.rb
67
+ - lib/zendesk/organization.rb
68
+ - lib/zendesk/search.rb
69
+ - lib/zendesk/tag.rb
70
+ - lib/zendesk/ticket.rb
71
+ - lib/zendesk/user.rb
72
+ - lib/zendesk/user_identity.rb
73
+ files:
74
+ - Manifest
75
+ - README.markdown
76
+ - Rakefile
77
+ - geminstaller.yml
78
+ - lib/console.rb
79
+ - lib/zendesk-api.rb
80
+ - lib/zendesk.rb
81
+ - lib/zendesk/attachment.rb
82
+ - lib/zendesk/entry.rb
83
+ - lib/zendesk/forum.rb
84
+ - lib/zendesk/group.rb
85
+ - lib/zendesk/main.rb
86
+ - lib/zendesk/organization.rb
87
+ - lib/zendesk/search.rb
88
+ - lib/zendesk/tag.rb
89
+ - lib/zendesk/ticket.rb
90
+ - lib/zendesk/user.rb
91
+ - lib/zendesk/user_identity.rb
92
+ - spec/zendesk/main_spec.rb
93
+ - spec/zendesk/user_spec.rb
94
+ - zendesk-api.gemspec
95
+ homepage: http://github.com/pgericson/zendesk-api
96
+ licenses: []
97
+
98
+ post_install_message:
99
+ rdoc_options:
100
+ - --line-numbers
101
+ - --inline-source
102
+ - --title
103
+ - Zendesk-api
104
+ - --main
105
+ - README.markdown
106
+ require_paths:
107
+ - lib
108
+ required_ruby_version: !ruby/object:Gem::Requirement
109
+ none: false
110
+ requirements:
111
+ - - ">="
112
+ - !ruby/object:Gem::Version
113
+ hash: 3
114
+ segments:
115
+ - 0
116
+ version: "0"
117
+ required_rubygems_version: !ruby/object:Gem::Requirement
118
+ none: false
119
+ requirements:
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ hash: 11
123
+ segments:
124
+ - 1
125
+ - 2
126
+ version: "1.2"
127
+ requirements: []
128
+
129
+ rubyforge_project: zendesk-api
130
+ rubygems_version: 1.8.10
131
+ signing_key:
132
+ specification_version: 3
133
+ summary: RubyGem wrapper for REST API to http://zendesk.com
134
+ test_files: []
135
+