taskmapper-zendesk 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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>