taskmapper-zendesk 0.5.0

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,40 @@
1
+ require 'taskmapper'
2
+ module TaskMapper::Provider
3
+ # This is the Zendesk Provider for taskmapper
4
+ module Zendesk
5
+ include TaskMapper::Provider::Base
6
+ #PROJECT_API = ZendeskAPI::Organization
7
+
8
+ # This is for cases when you want to instantiate using TaskMapper::Provider::Yoursystem.new(auth)
9
+ def self.new(auth = {})
10
+ TaskMapper.new(:zendesk, auth)
11
+ end
12
+
13
+ # The authorize and initializer for this provider
14
+ def authorize(auth = {})
15
+ @authentication ||= TaskMapper::Authenticator.new(auth)
16
+ auth = @authentication
17
+ if (auth.account.nil? and auth.username.nil? and auth.password.nil?)
18
+ raise "Please provide at least an url (subdomain), username and password)"
19
+ end
20
+ ZendeskAPI.authenticate(auth.account, auth.username, auth.password)
21
+ end
22
+
23
+ def projects(*options)
24
+ [Project.new({:account => @authentication.account, :username => @authentication.username, :name => "#{@authentication.account}-project"})]
25
+ end
26
+
27
+ def project(*options)
28
+ unless options.empty?
29
+ Project.new({:account => @authentication.account, :username => @authentication.username, :name => "#{@authentication.account}-project"})
30
+ else
31
+ TaskMapper::Provider::Zendesk::Project
32
+ end
33
+ end
34
+
35
+ def valid?
36
+ ZendeskAPI::Search.find(:first, :params => {:query => "status:open"})
37
+ end
38
+
39
+ end
40
+ end
@@ -0,0 +1,6 @@
1
+ require File.dirname(__FILE__) + '/zendesk/zendesk-api'
2
+
3
+ %w{ zendesk ticket project comment }.each do |f|
4
+ require File.dirname(__FILE__) + '/provider/' + f + '.rb';
5
+ end
6
+
@@ -0,0 +1,52 @@
1
+ require 'rubygems'
2
+ require 'active_support'
3
+ require 'active_resource'
4
+
5
+ module ZendeskAPI
6
+ class Error < StandardError; end
7
+
8
+ class << self
9
+
10
+ def authenticate(account, username, password)
11
+ @username = username
12
+ @password = password
13
+ self::Base.user = username
14
+ self::Base.password = password
15
+ self::Base.site = "http://#{account}.zendesk.com"
16
+ end
17
+
18
+ def resources
19
+ @resources ||= []
20
+ end
21
+
22
+ end
23
+
24
+ class Base < ActiveResource::Base
25
+ self.format = :json
26
+ def self.inherited(base)
27
+ ZendeskAPI.resources << base
28
+ super
29
+ end
30
+ end
31
+
32
+ class Search < Base
33
+
34
+ def self.collection_path(prefix_options = {}, query_options = nil)
35
+ prefix_options, query_options = split_options(prefix_options) if query_options.nil?
36
+ "#{prefix(prefix_options)}search.#{format.extension}#{query_string(query_options)}"
37
+ end
38
+
39
+ def self.element_path(id, prefix_options = {}, query_options = nil)
40
+ prefix_options, query_options = split_options(prefix_options) if query_options.nil?
41
+ "#{prefix(prefix_options)}search.#{format.extension}#{query_string(query_options)}"
42
+ end
43
+
44
+ end
45
+
46
+ class Ticket < Base
47
+ end
48
+
49
+ class User < Base
50
+ end
51
+
52
+ end
data/spec/.DS_Store ADDED
Binary file
@@ -0,0 +1,55 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe TaskMapper::Provider::Zendesk::Comment do
4
+
5
+ before(:all) do
6
+ @project_id = 'hybridgroup-project'
7
+ @ticket_id = 1
8
+ headers = {'Authorization' => 'Basic cmFmYWVsQGh5YnJpZGdyb3VwLmNvbToxMjM0NTY=','Accept' => 'application/json'}
9
+ ActiveResource::HttpMock.respond_to do |mock|
10
+ mock.get '/tickets/1.json', headers, fixture_for('ticket','json'), 200
11
+ mock.get '/users/26218414.json', headers, fixture_for('users/55030073', 'json'), 200
12
+ mock.get '/users/26220353.json', headers, fixture_for('users/55030073', 'json'), 200
13
+ end
14
+ end
15
+
16
+ before(:each) do
17
+ @taskmapper = TaskMapper.new(:zendesk, :account => 'hybridgroup', :username => 'rafael@hybridgroup.com', :password => '123456')
18
+ project = @taskmapper.project(@project_id)
19
+ @ticket = project.ticket(@ticket_id)
20
+ @klass = TaskMapper::Provider::Zendesk::Comment
21
+ end
22
+
23
+ it "should be able to load all comments" do
24
+ comments = @ticket.comments
25
+ comments.should be_an_instance_of(Array)
26
+ comments.first.should be_an_instance_of(@klass)
27
+ end
28
+
29
+ it "should be able to load all comments based on an array of id's" do
30
+ comments = @ticket.comments([1])
31
+ comments.should be_an_instance_of(Array)
32
+ comments.first.should be_an_instance_of(@klass)
33
+ comments.first.id.should == 1
34
+ end
35
+
36
+ it "should be able to load all comments based on attributes" do
37
+ comments = @ticket.comments(:ticket_id => @ticket.id)
38
+ comments.should be_an_instance_of(Array)
39
+ comments.first.should be_an_instance_of(@klass)
40
+ comments.first.id.should == 1
41
+ end
42
+
43
+ it "should be able to load a comment based on id" do
44
+ comment = @ticket.comment(1)
45
+ comment.should be_an_instance_of(@klass)
46
+ comment.id.should == 1
47
+ end
48
+
49
+ it "should be able to load a ticket based on attributes" do
50
+ comment = @ticket.comment(:ticket_id => 1)
51
+ comment.should be_an_instance_of(@klass)
52
+ comment.id.should == 1
53
+ end
54
+
55
+ end
Binary file
@@ -0,0 +1 @@
1
+ {"nice_id":1,"initially_assigned_at":"2011/01/31 14:09:12 -0400","entry_id":null,"created_at":"2011/01/31 14:09:12 -0400","resolution_time":null,"priority_id":1,"current_tags":null,"assignee_id":26218414,"channel":null,"updated_at":"2011/01/31 14:09:12 -0400","ticket_type_id":3,"status_updated_at":"2011/01/31 14:09:12 -0400","solved_at":null,"original_recipient_address":null,"external_id":null,"assigned_at":"2011/01/31 14:09:12 -0400","via_id":0,"subject":"Testing","recipient":null,"group_id":121752,"comments":[{"created_at":"2011/01/31 14:09:12 -0400","via_id":0,"value":"Testing","type":"Comment","is_public":true,"author_id":26218414,"attachments":[]}],"linkings":[],"submitter_id":26218414,"base_score":18,"latest_recipients":null,"due_date":null,"current_collaborators":null,"status_id":1,"description":"Testing","ticket_field_entries":[],"problem_id":null,"score":18,"organization_id":457249,"updated_by_type_id":0,"requester_id":26218414}
@@ -0,0 +1 @@
1
+ [{"nice_id":1,"initially_assigned_at":"2011/01/31 14:09:12 -0400","entry_id":null,"created_at":"2011/01/31 14:09:12 -0400","resolution_time":null,"priority_id":1,"current_tags":null,"assignee_id":26218414,"channel":null,"updated_at":"2011/01/31 14:09:12 -0400","ticket_type_id":3,"status_updated_at":"2011/01/31 14:09:12 -0400","solved_at":null,"original_recipient_address":null,"external_id":null,"assigned_at":"2011/01/31 14:09:12 -0400","via_id":0,"subject":"Testing","recipient":null,"group_id":121752,"comments":[{"created_at":"2011/01/31 14:09:12 -0400","via_id":0,"value":"Testing","type":"Comment","is_public":true,"author_id":26218414,"attachments":[]}],"linkings":[],"submitter_id":26218414,"base_score":18,"latest_recipients":null,"due_date":null,"current_collaborators":null,"status_id":1,"description":"Testing","ticket_field_entries":[],"problem_id":null,"score":18,"organization_id":457249,"updated_by_type_id":0,"requester_id":26218414},{"nice_id":2,"initially_assigned_at":"2011/01/31 14:30:31 -0400","entry_id":null,"created_at":"2011/01/31 14:30:31 -0400","resolution_time":null,"priority_id":0,"current_tags":null,"assignee_id":26218414,"channel":null,"updated_at":"2011/01/31 14:30:31 -0400","ticket_type_id":0,"status_updated_at":"2011/01/31 14:30:31 -0400","solved_at":null,"original_recipient_address":null,"external_id":null,"assigned_at":"2011/01/31 14:30:31 -0400","via_id":4,"subject":"Welcome to Zendesk, You've Got a Ticket!","recipient":"support@hybridgroup.zendesk.com","group_id":121752,"comments":[{"created_at":"2011/01/31 14:30:31 -0400","via_id":4,"value":"You've got a new ticket!\n\nTo help you get started learning how your zendesk simplifies ticket workflow, I emailed you at support@hybridgroup.zendesk.com and this ticket was created in your zendesk. Neat!\n\nYou can answer this ticket in one of two ways:\n\nBy Email: If you are looking at this in your email inbox, simply hit \"Reply\"\n\nBy Zendesk: If you are looking at this ticket in your zendesk:\n\n* Enter a comment (e.g. \"How am I doing?\")\n* Change status from Open to Pending (now, you’re waiting for me to get back to you!)\n* Click submit\n\nEither way, both your reply and follow-ups will be added to the ticket history and organized in your zendesk.\n\nYou’re eligible for 24-hour support throughout your trial. Please don’t hesitate to call or email our customer advocate team:\n\n*(e) support@zendesk.com\n*(p) +1 415.418.7506\n\nThank you for using Zendesk,\n\nKelly\nCustomer Advocate at Zendesk","type":"Comment","is_public":true,"author_id":26220353,"attachments":[]}],"linkings":[],"submitter_id":26220353,"base_score":108,"latest_recipients":null,"due_date":null,"current_collaborators":null,"status_id":1,"description":"You've got a new ticket!\n\nTo help you get started learning how your zendesk simplifies ticket workflow, I emailed you at support@hybridgroup.zendesk.com and this ticket was created in your zendesk. Neat!\n\nYou can answer this ticket in one of two ways:\n\nBy Email: If you are looking at this in your email inbox, simply hit \"Reply\"\n\nBy Zendesk: If you are looking at this ticket in your zendesk:\n\n* Enter a comment (e.g. \"How am I doing?\")\n* Change status from Open to Pending (now, you’re waiting for me to get back to you!)\n* Click submit\n\nEither way, both your reply and follow-ups will be added to the ticket history and organized in your zendesk.\n\nYou’re eligible for 24-hour support throughout your trial. Please don’t hesitate to call or email our customer advocate team:\n\n*(e) support@zendesk.com\n*(p) +1 415.418.7506\n\nThank you for using Zendesk,\n\nKelly\nCustomer Advocate at Zendesk","ticket_field_entries":[],"problem_id":null,"score":108,"organization_id":null,"updated_by_type_id":1,"requester_id":26220353}]
@@ -0,0 +1,145 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <records type="array" count="2">
3
+ <record>
4
+ <assigned-at type="datetime">2011-01-31T14:09:12-04:00</assigned-at>
5
+ <assignee-id type="integer">26218414</assignee-id>
6
+ <base-score type="integer">12</base-score>
7
+ <created-at type="datetime">2011-01-31T14:09:12-04:00</created-at>
8
+ <current-collaborators nil="true"></current-collaborators>
9
+ <current-tags nil="true"></current-tags>
10
+ <description>Testing</description>
11
+ <due-date type="datetime" nil="true"></due-date>
12
+ <entry-id type="integer" nil="true"></entry-id>
13
+ <external-id nil="true"></external-id>
14
+ <group-id type="integer">121752</group-id>
15
+ <initially-assigned-at type="datetime">2011-01-31T14:09:12-04:00</initially-assigned-at>
16
+ <latest-recipients nil="true"></latest-recipients>
17
+ <nice-id type="integer">1</nice-id>
18
+ <organization-id type="integer">457249</organization-id>
19
+ <original-recipient-address nil="true"></original-recipient-address>
20
+ <priority-id type="integer">1</priority-id>
21
+ <recipient nil="true"></recipient>
22
+ <requester-id type="integer">26218414</requester-id>
23
+ <resolution-time type="integer" nil="true"></resolution-time>
24
+ <solved-at type="datetime" nil="true"></solved-at>
25
+ <status-id type="integer">1</status-id>
26
+ <status-updated-at type="datetime">2011-01-31T14:09:12-04:00</status-updated-at>
27
+ <subject>Testing</subject>
28
+ <submitter-id type="integer">26218414</submitter-id>
29
+ <ticket-type-id type="integer">3</ticket-type-id>
30
+ <updated-at type="datetime">2011-01-31T14:09:12-04:00</updated-at>
31
+ <updated-by-type-id type="integer">0</updated-by-type-id>
32
+ <via-id type="integer">0</via-id>
33
+ <score type="integer">12</score>
34
+ <problem-id nil="true"></problem-id>
35
+ <comments type="array">
36
+ <comment>
37
+ <author-id type="integer">26218414</author-id>
38
+ <created-at type="datetime">2011-01-31T14:09:12-04:00</created-at>
39
+ <is-public type="boolean">true</is-public>
40
+ <type>Comment</type>
41
+ <value>Testing</value>
42
+ <via-id type="integer">0</via-id>
43
+ <attachments type="array"/>
44
+ </comment>
45
+ </comments>
46
+ <linkings type="array"/>
47
+ <ticket-field-entries type="array"/>
48
+ <channel nil="true"></channel>
49
+ </record>
50
+ <record>
51
+ <assigned-at type="datetime">2011-01-31T14:30:31-04:00</assigned-at>
52
+ <assignee-id type="integer">26218414</assignee-id>
53
+ <base-score type="integer">72</base-score>
54
+ <created-at type="datetime">2011-01-31T14:30:31-04:00</created-at>
55
+ <current-collaborators nil="true"></current-collaborators>
56
+ <current-tags nil="true"></current-tags>
57
+ <description>You've got a new ticket!
58
+
59
+ To help you get started learning how your zendesk simplifies ticket workflow, I emailed you at support@hybridgroup.zendesk.com and this ticket was created in your zendesk. Neat!
60
+
61
+ You can answer this ticket in one of two ways:
62
+
63
+ By Email: If you are looking at this in your email inbox, simply hit &quot;Reply&quot;
64
+
65
+ By Zendesk: If you are looking at this ticket in your zendesk:
66
+
67
+ * Enter a comment (e.g. &quot;How am I doing?&quot;)
68
+ * Change status from Open to Pending (now, you&#8217;re waiting for me to get back to you!)
69
+ * Click submit
70
+
71
+ Either way, both your reply and follow-ups will be added to the ticket history and organized in your zendesk.
72
+
73
+ You&#8217;re eligible for 24-hour support throughout your trial. Please don&#8217;t hesitate to call or email our customer advocate team:
74
+
75
+ *(e) support@zendesk.com
76
+ *(p) +1 415.418.7506
77
+
78
+ Thank you for using Zendesk,
79
+
80
+ Kelly
81
+ Customer Advocate at Zendesk</description>
82
+ <due-date type="datetime" nil="true"></due-date>
83
+ <entry-id type="integer" nil="true"></entry-id>
84
+ <external-id nil="true"></external-id>
85
+ <group-id type="integer">121752</group-id>
86
+ <initially-assigned-at type="datetime">2011-01-31T14:30:31-04:00</initially-assigned-at>
87
+ <latest-recipients nil="true"></latest-recipients>
88
+ <nice-id type="integer">2</nice-id>
89
+ <organization-id type="integer" nil="true"></organization-id>
90
+ <original-recipient-address nil="true"></original-recipient-address>
91
+ <priority-id type="integer">0</priority-id>
92
+ <recipient>support@hybridgroup.zendesk.com</recipient>
93
+ <requester-id type="integer">26220353</requester-id>
94
+ <resolution-time type="integer" nil="true"></resolution-time>
95
+ <solved-at type="datetime" nil="true"></solved-at>
96
+ <status-id type="integer">1</status-id>
97
+ <status-updated-at type="datetime">2011-01-31T14:30:31-04:00</status-updated-at>
98
+ <subject>Welcome to Zendesk, You've Got a Ticket!</subject>
99
+ <submitter-id type="integer">26220353</submitter-id>
100
+ <ticket-type-id type="integer">0</ticket-type-id>
101
+ <updated-at type="datetime">2011-01-31T14:30:31-04:00</updated-at>
102
+ <updated-by-type-id type="integer">1</updated-by-type-id>
103
+ <via-id type="integer">4</via-id>
104
+ <score type="integer">72</score>
105
+ <problem-id nil="true"></problem-id>
106
+ <comments type="array">
107
+ <comment>
108
+ <author-id type="integer">26220353</author-id>
109
+ <created-at type="datetime">2011-01-31T14:30:31-04:00</created-at>
110
+ <is-public type="boolean">true</is-public>
111
+ <type>Comment</type>
112
+ <value>You've got a new ticket!
113
+
114
+ To help you get started learning how your zendesk simplifies ticket workflow, I emailed you at support@hybridgroup.zendesk.com and this ticket was created in your zendesk. Neat!
115
+
116
+ You can answer this ticket in one of two ways:
117
+
118
+ By Email: If you are looking at this in your email inbox, simply hit &quot;Reply&quot;
119
+
120
+ By Zendesk: If you are looking at this ticket in your zendesk:
121
+
122
+ * Enter a comment (e.g. &quot;How am I doing?&quot;)
123
+ * Change status from Open to Pending (now, you&#8217;re waiting for me to get back to you!)
124
+ * Click submit
125
+
126
+ Either way, both your reply and follow-ups will be added to the ticket history and organized in your zendesk.
127
+
128
+ You&#8217;re eligible for 24-hour support throughout your trial. Please don&#8217;t hesitate to call or email our customer advocate team:
129
+
130
+ *(e) support@zendesk.com
131
+ *(p) +1 415.418.7506
132
+
133
+ Thank you for using Zendesk,
134
+
135
+ Kelly
136
+ Customer Advocate at Zendesk</value>
137
+ <via-id type="integer">4</via-id>
138
+ <attachments type="array"/>
139
+ </comment>
140
+ </comments>
141
+ <linkings type="array"/>
142
+ <ticket-field-entries type="array"/>
143
+ <channel nil="true"></channel>
144
+ </record>
145
+ </records>
@@ -0,0 +1,52 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <ticket>
3
+ <assigned-at>2007-06-03T22:15:44Z</assigned-at>
4
+ <assignee-id>4</assignee-id>
5
+ <assignee-updated-at/>
6
+ <created-at>2007-06-03T20:15:44Z</created-at>
7
+ <subject></subject>
8
+ <description>My printer is not working</description>
9
+ <external-id/>
10
+ <group-id>2</group-id>
11
+ <id>2</id>
12
+ <linked-id/>
13
+ <priority-id>3</priority-id>
14
+ <submitter-id>3</submitter-id>
15
+ <status-id>1</status-id>
16
+ <status-updated-at>2007-06-03T22:15:44Z</status-updated-at>
17
+ <requester-id>3</requester-id>
18
+ <requester-updated-at>2007-06-03T22:15:44Z</requester-updated-at>
19
+ <ticket-type-id>2</ticket-type-id>
20
+ <updated-at>2007-06-03T20:15:45Z</updated-at>
21
+ <via-id>0</via-id>
22
+ <current-tags>printer hp</current-tags>
23
+ <score>28</score>
24
+ <comments type="array">
25
+ <comment>
26
+ <author-id>3</author-id>
27
+ <created-at>2007-06-03T20:15:45Z</created-at>
28
+ <is-public>true</is-public>
29
+ <value>This is a comment</value>
30
+ <via-id>0</via-id>
31
+ <via-reference-id/>
32
+ </comment>
33
+ <comment>
34
+ <author-id>5</author-id>
35
+ <created-at>2007-06-04T10:07:02Z</created-at>
36
+ <is-public>true</is-public>
37
+ <value>Make sure it is plugged in</value>
38
+ <via-id>0</via-id>
39
+ <via-reference-id/>
40
+ </comment>
41
+ </comments>
42
+ <ticket-field-entries type="array">
43
+ <ticket-field-entry>
44
+ <ticket-field-id>139</ticket-field-id>
45
+ <value>Please contact me by phone during work hours</value>
46
+ </ticket-field-entry>
47
+ <ticket-field-entry>
48
+ <ticket-field-id>141</ticket-field-id>
49
+ <value>true</value>
50
+ </ticket-field-entry>
51
+ </ticket-field-entries>
52
+ </ticket>
@@ -0,0 +1,78 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <ticket>
3
+ <assigned-user-id type="integer" nil="true"></assigned-user-id>
4
+ <attachments-count type="integer">0</attachments-count>
5
+ <closed type="boolean">false</closed>
6
+ <created-at type="datetime">2010-07-03T05:01:48Z</created-at>
7
+ <creator-id type="integer">67916</creator-id>
8
+ <milestone-due-on type="datetime" nil="true"></milestone-due-on>
9
+ <milestone-id type="integer" nil="true"></milestone-id>
10
+ <number type="integer">5</number>
11
+ <permalink>tehantuehn</permalink>
12
+ <priority type="integer">3</priority>
13
+ <project-id type="integer">54448</project-id>
14
+ <raw-data type="binary" encoding="base64" nil="true"></raw-data>
15
+ <state>new</state>
16
+ <tag nil="true"></tag>
17
+ <title>tehantuehn</title>
18
+ <updated-at type="datetime">2010-07-08T02:11:21Z</updated-at>
19
+ <user-id type="integer">67916</user-id>
20
+ <user-name>Kia Kroas</user-name>
21
+ <creator-name>Kia Kroas</creator-name>
22
+ <url>http://ticketmaster.lighthouseapp.com/projects/54448/tickets/5</url>
23
+ <original-body>cheuasoht atesuhn</original-body>
24
+ <latest-body>cheuasoht atesuhn</latest-body>
25
+ <original-body-html>&lt;div&gt;&lt;p&gt;cheuasoht atesuhn&lt;/p&gt;&lt;/div&gt;</original-body-html>
26
+ <versions type="array">
27
+ <version type="Ticket::Version">
28
+ <assigned-user-id type="integer" nil="true"></assigned-user-id>
29
+ <attachments-count type="integer">0</attachments-count>
30
+ <body>cheuasoht atesuhn</body>
31
+ <body-html>&lt;div&gt;&lt;p&gt;cheuasoht atesuhn&lt;/p&gt;&lt;/div&gt;</body-html>
32
+ <closed type="boolean">false</closed>
33
+ <created-at type="datetime">2010-07-03T05:01:48Z</created-at>
34
+ <creator-id type="integer">67916</creator-id>
35
+ <diffable-attributes type="yaml">--- {}
36
+
37
+ </diffable-attributes>
38
+ <milestone-id type="integer" nil="true"></milestone-id>
39
+ <number type="integer">5</number>
40
+ <permalink>tehantuehn</permalink>
41
+ <priority type="integer">3</priority>
42
+ <project-id type="integer">54448</project-id>
43
+ <state>new</state>
44
+ <tag nil="true"></tag>
45
+ <title>tehantuehn</title>
46
+ <updated-at type="datetime">2010-07-03T05:01:51Z</updated-at>
47
+ <user-id type="integer">67916</user-id>
48
+ <user-name>Kia Kroas</user-name>
49
+ <creator-name>Kia Kroas</creator-name>
50
+ <url>http://ticketmaster.lighthouseapp.com/projects/54448/tickets/5</url>
51
+ </version>
52
+ <version type="Ticket::Version">
53
+ <assigned-user-id type="integer" nil="true"></assigned-user-id>
54
+ <attachments-count type="integer">0</attachments-count>
55
+ <body>New Body</body>
56
+ <body-html>&lt;div&gt;&lt;p&gt;New Body&lt;/p&gt;&lt;/div&gt;</body-html>
57
+ <closed type="boolean">false</closed>
58
+ <created-at type="datetime">2010-07-08T02:11:17Z</created-at>
59
+ <creator-id type="integer">67916</creator-id>
60
+ <diffable-attributes type="yaml">--- {}
61
+
62
+ </diffable-attributes>
63
+ <milestone-id type="integer" nil="true"></milestone-id>
64
+ <number type="integer">5</number>
65
+ <permalink>tehantuehn</permalink>
66
+ <priority type="integer">3</priority>
67
+ <project-id type="integer">54448</project-id>
68
+ <state>new</state>
69
+ <tag nil="true"></tag>
70
+ <title>tehantuehn</title>
71
+ <updated-at type="datetime">2010-07-08T02:11:21Z</updated-at>
72
+ <user-id type="integer">67916</user-id>
73
+ <user-name>Kia Kroas</user-name>
74
+ <creator-name>Kia Kroas</creator-name>
75
+ <url>http://ticketmaster.lighthouseapp.com/projects/54448/tickets/5</url>
76
+ </version>
77
+ </versions>
78
+ </ticket>