ticketmaster-redmine 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2010 YOU
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ NONE
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,4 @@
1
+ # ticketmaster-redmine
2
+
3
+ This is a provider for [ticketmaster](http://ticketrb.com). It provides interoperability with [Redmine](http://www.redmine.org) and it's issue tracking system through the ticketmaster gem.
4
+
data/Rakefile ADDED
@@ -0,0 +1,49 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+
4
+ begin
5
+ require 'jeweler'
6
+ Jeweler::Tasks.new do |gem|
7
+ gem.name = "ticketmaster-redmine"
8
+ gem.summary = %Q{Ticketmaster Provider for Redmine}
9
+ gem.description = %Q{Allows ticketmaster to interact with Your System.}
10
+ gem.email = "george.rafael@gmail.com"
11
+ gem.homepage = "http://bandw.tumblr.com"
12
+ gem.authors = ["Rafael George"]
13
+ gem.add_development_dependency "rspec", ">= 1.2.9"
14
+ gem.add_dependency "ticketmaster", ">= 0.1.0"
15
+ gem.add_dependency "activesupport", ">= 2.3.2"
16
+ gem.add_dependency "activeresource", ">= 2.3.2"
17
+ gem.add_dependency "addressable", ">= 2.1.2"
18
+ # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
19
+ end
20
+ Jeweler::GemcutterTasks.new
21
+ rescue LoadError
22
+ puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
23
+ end
24
+
25
+ require 'spec/rake/spectask'
26
+ Spec::Rake::SpecTask.new(:spec) do |spec|
27
+ spec.libs << 'lib' << 'spec'
28
+ spec.spec_files = FileList['spec/**/*_spec.rb']
29
+ end
30
+
31
+ Spec::Rake::SpecTask.new(:rcov) do |spec|
32
+ spec.libs << 'lib' << 'spec'
33
+ spec.pattern = 'spec/**/*_spec.rb'
34
+ spec.rcov = true
35
+ end
36
+
37
+ task :spec => :check_dependencies
38
+
39
+ task :default => :spec
40
+
41
+ require 'rake/rdoctask'
42
+ Rake::RDocTask.new do |rdoc|
43
+ version = File.exist?('VERSION') ? File.read('VERSION') : ""
44
+
45
+ rdoc.rdoc_dir = 'rdoc'
46
+ rdoc.title = "ticketmaster-redmine#{version}"
47
+ rdoc.rdoc_files.include('README*')
48
+ rdoc.rdoc_files.include('lib/**/*.rb')
49
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.0.1
@@ -0,0 +1,13 @@
1
+ module TicketMaster::Provider
2
+ module Redmine
3
+ # The comment class for ticketmaster-yoursystem
4
+ #
5
+ # Do any mapping between Ticketmaster and your system's comment model here
6
+ # versions of the ticket.
7
+ #
8
+ class Comment < TicketMaster::Provider::Base::Comment
9
+ # declare needed overloaded methods here
10
+
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,46 @@
1
+ module TicketMaster::Provider
2
+ module Redmine
3
+ # Project class for ticketmaster-yoursystem
4
+ #
5
+ #
6
+ class Project < TicketMaster::Provider::Base::Project
7
+ # declare needed overloaded methods here
8
+ API = RedmineAPI::Project
9
+
10
+ # copy from this.copy(that) copies that into this
11
+ def copy(project)
12
+ project.tickets.each do |ticket|
13
+ copy_ticket = self.ticket!(:title => ticket.title, :description => ticket.description)
14
+ ticket.comments.each do |comment|
15
+ copy_ticket.comment!(:body => comment.body)
16
+ sleep 1
17
+ end
18
+ end
19
+ end
20
+
21
+ def id
22
+ self[:id]
23
+ end
24
+
25
+ def identifier
26
+ self[:identifier]
27
+ end
28
+
29
+ def tickets(*options)
30
+ begin
31
+ if options.first.is_a? Hash
32
+ options[0].merge!(:params => {:project_id => id})
33
+ super(*options)
34
+ elsif options.empty?
35
+ issues = RedmineAPI::Issue.find(:all, :params => {:project_id => id}).collect { |issue| TicketMaster::Provider::Redmine::Ticket.new issue }
36
+ else
37
+ super(*options)
38
+ end
39
+ rescue
40
+ []
41
+ end
42
+ end
43
+
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,24 @@
1
+ module TicketMaster::Provider
2
+ # This is the Yoursystem Provider for ticketmaster
3
+ module Redmine
4
+ include TicketMaster::Provider::Base
5
+ PROJECT_API = RedmineAPI::Project
6
+ TICKET_API = RedmineAPI::Issue
7
+
8
+ # This is for cases when you want to instantiate using TicketMaster::Provider::Yoursystem.new(auth)
9
+ def self.new(auth = {})
10
+ TicketMaster.new(:redmine, auth)
11
+ end
12
+
13
+ # declare needed overloaded methods here
14
+ def authorize(auth = {})
15
+ @authentication ||= TicketMaster::Authenticator.new(auth)
16
+ auth = @authentication
17
+ if (auth.server.blank? and auth.username.blank? and auth.password.blank?)
18
+ raise "Please you should provide server, username and password"
19
+ end
20
+ RedmineAPI.authenticate(auth.server, auth.username, auth.password)
21
+ end
22
+
23
+ end
24
+ end
@@ -0,0 +1,52 @@
1
+ module TicketMaster::Provider
2
+ module Redmine
3
+ # Ticket class for ticketmaster-yoursystem
4
+ #
5
+ API = RedmineAPI::Issue
6
+
7
+ class Ticket < TicketMaster::Provider::Base::Ticket
8
+ # declare needed overloaded methods here
9
+
10
+ def initialize(*object)
11
+ if object.first
12
+ object = object.first
13
+ @system_data = {:client => object}
14
+ unless object.is_a? Hash
15
+ hash = {:repository => object.id,
16
+ :description => object.description,
17
+ :subject => object.subject,
18
+ :status => object.status}
19
+ else
20
+ hash = object
21
+ end
22
+ super hash
23
+ end
24
+ end
25
+
26
+ def self.find_by_id(project_id, ticket_id)
27
+ self.new API.find(ticket_id)
28
+ end
29
+
30
+ def self.find_by_attributes(project_id, attributes = {})
31
+ issues = API.find(:all, build_attributes(project_id, attributes))
32
+ issues.collect { |issue| self.new issue }
33
+ end
34
+
35
+ def self.build_attributes(repo, options)
36
+ hash = {:repo => repo}.merge!(options)
37
+ end
38
+
39
+ def id
40
+ self[:id].to_i
41
+ end
42
+
43
+ def self.create(*options)
44
+ issue = API.new(options.first.merge!(:status => 'New'))
45
+ ticket = self.new issue
46
+ issue.save
47
+ ticket
48
+ end
49
+
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,42 @@
1
+ require 'rubygems'
2
+ require 'active_support'
3
+ require 'active_resource'
4
+
5
+
6
+ module RedmineAPI
7
+ class Error < StandardError; end
8
+
9
+ class << self
10
+ def authenticate(server, username, password)
11
+ @username = username
12
+ @password = password
13
+ @server = server
14
+ self::Base.user = username
15
+ self::Base.password = password
16
+ self::Base.site = server
17
+ end
18
+
19
+ def resources
20
+ @resources = []
21
+ end
22
+ end
23
+
24
+ class Base < ActiveResource::Base
25
+ self.format = :xml
26
+ def self.inherited(base)
27
+ RedmineAPI.resources << base
28
+ end
29
+ end
30
+
31
+ class Issue < Base
32
+ attr_reader :project_id
33
+
34
+ def name
35
+ self.subject
36
+ end
37
+ end
38
+
39
+ class Project < Base
40
+ end
41
+
42
+ end
@@ -0,0 +1,6 @@
1
+ require File.dirname(__FILE__) + '/redmine/redmine-api'
2
+
3
+ %w{ redmine ticket project comment }.each do |f|
4
+ require File.dirname(__FILE__) + '/provider/' + f + '.rb';
5
+ end
6
+
@@ -0,0 +1,5 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe "Ticketmaster::Provider::Yoursystem::Comment" do
4
+ it "should have specs for comments"
5
+ end
@@ -0,0 +1 @@
1
+ <?xml version="1.0" encoding="UTF-8"?><issue><id>1</id><project name="test-repo" id="1"/><tracker name="Bug" id="1"/><status name="New" id="1"/><priority name="Normal" id="4"/><author name="Redmine Admin" id="1"/><subject>test-issue</subject><description></description><start_date>2010-12-22</start_date><due_date></due_date><done_ratio>0</done_ratio><estimated_hours></estimated_hours><spent_hours>0.0</spent_hours><created_on>2010-12-22T17:55:58-06:00</created_on><updated_on>2010-12-22T17:55:58-06:00</updated_on></issue>
@@ -0,0 +1 @@
1
+ <?xml version="1.0" encoding="UTF-8"?><issues type="array" total_count="1" limit="25" offset="0"><issue><id>1</id><project name="test-repo" id="1"/><tracker name="Bug" id="1"/><status name="New" id="1"/><priority name="Normal" id="4"/><author name="Redmine Admin" id="1"/><subject>test-issue</subject><description></description><start_date>2010-12-22</start_date><due_date></due_date><done_ratio>0</done_ratio><estimated_hours></estimated_hours><created_on>2010-12-22T17:55:58-06:00</created_on><updated_on>2010-12-22T17:55:58-06:00</updated_on></issue></issues>
@@ -0,0 +1,12 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project id="1">
3
+ <name>Redmine</name>
4
+ <identifier>test-repo12</identifier>
5
+ <description>
6
+ Redmine is a flexible project management web application written using Ruby on Rails framework.
7
+ </description>
8
+ <homepage></homepage>
9
+ <created_on>Sat Sep 29 12:03:04 +0200 2007</created_on>
10
+ <updated_on>Sun Mar 15 12:35:11 +0100 2009</updated_on>
11
+ </project>
12
+
@@ -0,0 +1,23 @@
1
+ <projects type="array">
2
+ <project>
3
+ <id>1</id>
4
+ <name>Redmine</name>
5
+ <identifier>redmine</identifier>
6
+ <description>
7
+ Redmine is a flexible project management web application written using Ruby on Rails framework.
8
+ </description>
9
+ <created_on>Sat Sep 29 12:03:04 +0200 2007</created_on>
10
+ <updated_on>Sun Mar 15 12:35:11 +0100 2009</updated_on>
11
+ </project>
12
+ <project>
13
+ <id>2</id>
14
+ <name>Redmine</name>
15
+ <identifier>redmine</identifier>
16
+ <description>
17
+ Redmine is a flexible project management web application written using Ruby on Rails framework.
18
+ </description>
19
+ <homepage></homepage>
20
+ <created_on>Sat Sep 29 12:03:04 +0200 2007</created_on>
21
+ <updated_on>Sun Mar 15 12:35:11 +0100 2009</updated_on>
22
+ </project>
23
+ </projects>
@@ -0,0 +1,46 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe "Ticketmaster::Provider::Redmine::Project" do
4
+ before(:all) do
5
+ headers = {'Authorization' => 'Basic Y29yZWQ6MTIzNDU2', 'Accept' => 'application/xml'}
6
+ @project_id = 'test-repo12'
7
+ ActiveResource::HttpMock.respond_to do |mock|
8
+ mock.get '/projects.xml', headers, fixture_for('projects'), 200
9
+ mock.get '/projects/test-repo12.xml', headers, fixture_for('projects/test-repo12'), 200
10
+ end
11
+ end
12
+
13
+ before(:each) do
14
+ @ticketmaster = TicketMaster.new(:redmine, {:server => 'http://demo.redmine.org/', :username => 'cored', :password => '123456'})
15
+ @klass = TicketMaster::Provider::Redmine::Project
16
+ end
17
+
18
+ it "should be able to load all projects" do
19
+ @ticketmaster.projects.should be_an_instance_of(Array)
20
+ @ticketmaster.projects.first.should be_an_instance_of(@klass)
21
+ end
22
+
23
+ it "should be able to load projects from an array of id's" do
24
+ @projects = @ticketmaster.projects([@project_id])
25
+ @projects.should be_an_instance_of(Array)
26
+ @projects.first.should be_an_instance_of(@klass)
27
+ @projects.first.identifier.should == @project_id
28
+ end
29
+
30
+ it "should be able to load all projects from attributes" do
31
+ @projects = @ticketmaster.projects(:identifier => 'redmine')
32
+ @projects.should be_an_instance_of(Array)
33
+ @projects.first.should be_an_instance_of(@klass)
34
+ @projects.first.identifier.should == 'redmine'
35
+ end
36
+
37
+ it "should be able to find a project" do
38
+ @ticketmaster.project.should == @klass
39
+ @ticketmaster.project.find(@project_id).should be_an_instance_of(@klass)
40
+ end
41
+
42
+ it "should be able to find a project by identifier" do
43
+ @ticketmaster.project(@project_id).should be_an_instance_of(@klass)
44
+ @ticketmaster.project(@project_id).identifier.should == @project_id
45
+ end
46
+ end
data/spec/spec.opts ADDED
@@ -0,0 +1 @@
1
+ --color
@@ -0,0 +1,15 @@
1
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
2
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
+ require 'rubygems'
4
+ require 'ticketmaster'
5
+ require 'ticketmaster-redmine'
6
+ require 'spec'
7
+ require 'spec/autorun'
8
+
9
+ Spec::Runner.configure do |config|
10
+
11
+ end
12
+
13
+ def fixture_for(name)
14
+ File.read(File.dirname(__FILE__) + '/fixtures/' + name + '.xml')
15
+ end
@@ -0,0 +1,11 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe "Ticketmaster::Provider::Redmine" do
4
+
5
+ it "should be able to instantiate a new instance" do
6
+ @ticketmaster = TicketMaster.new(:redmine, {:server => 'http://redmine.server', :username => 'cored', :password => 'afdd'})
7
+ @ticketmaster.should be_an_instance_of(TicketMaster)
8
+ @ticketmaster.should be_a_kind_of(TicketMaster::Provider::Redmine)
9
+ end
10
+
11
+ end
@@ -0,0 +1,71 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe "Ticketmaster::Provider::Redmine::Ticket" do
4
+ before(:all) do
5
+ headers = {'Authorization' => 'Basic Y29yZWQ6MTIzNDU2', 'Accept' => 'application/xml'}
6
+ headers_post_put = {'Authorization' => 'Basic Y29yZWQ6MTIzNDU2', 'Content-Type' => 'application/xml'}
7
+ @project_id = 1
8
+ ActiveResource::HttpMock.respond_to do |mock|
9
+ mock.get '/projects.xml', headers, fixture_for('projects'), 200
10
+ mock.get '/projects/1.xml', headers, fixture_for('projects/test-repo12'), 200
11
+ mock.get '/issues.xml?project_id=1', headers, fixture_for('issues'), 200
12
+ mock.get '/issues.xml', headers, fixture_for('issues'), 200
13
+ mock.get '/issues/1.xml', headers, fixture_for('issues/1'), 200
14
+ mock.put '/issues/0.xml', headers_post_put, '', 200
15
+ mock.post '/issues.xml', headers_post_put, '', 200
16
+ end
17
+ end
18
+
19
+ before(:each) do
20
+ @ticketmaster = TicketMaster.new(:redmine, {:server => 'http://demo.redmine.org/', :username => 'cored', :password => '123456'})
21
+ @project = @ticketmaster.project(@project_id)
22
+ @klass = TicketMaster::Provider::Redmine::Ticket
23
+ end
24
+
25
+ it "should be able to load all tickets" do
26
+ @project.tickets.should be_an_instance_of(Array)
27
+ @project.tickets.first.should be_an_instance_of(@klass)
28
+ end
29
+
30
+ it "should be able to load all tickets based on an array of id's" do
31
+ @tickets = @project.tickets([1])
32
+ @tickets.should be_an_instance_of(Array)
33
+ @tickets.first.should be_an_instance_of(@klass)
34
+ @tickets.first.subject.should == 'test-issue'
35
+ end
36
+
37
+ it "should be able to load all tickets based on attributes" do
38
+ @tickets = @project.tickets(:id => 1)
39
+ @tickets.should be_an_instance_of(Array)
40
+ @tickets.first.should be_an_instance_of(@klass)
41
+ @tickets.first.subject.should == 'test-issue'
42
+ end
43
+
44
+ it "should return the ticket class" do
45
+ @project.ticket.should == @klass
46
+ end
47
+
48
+ it "should be able to load a single ticket" do
49
+ @ticket = @project.ticket(1)
50
+ @ticket.should be_an_instance_of(@klass)
51
+ @ticket.subject.should == 'test-issue'
52
+ end
53
+
54
+ it "shoule be able to load a single ticket based on attributes" do
55
+ @ticket = @project.ticket(:id => 1)
56
+ @ticket.should be_an_instance_of(@klass)
57
+ @ticket.subject.should == 'test-issue'
58
+ end
59
+
60
+ it "should be able to update and save a ticket" do
61
+ @ticket = @project.ticket(1)
62
+ @ticket.description = 'hello'
63
+ @ticket.save.should == true
64
+ end
65
+
66
+ it "should be able to create a ticket" do
67
+ @ticket = @project.ticket!(:subject => 'Ticket #12', :description => 'Body')
68
+ @ticket.should be_an_instance_of(@klass)
69
+ end
70
+
71
+ end
metadata ADDED
@@ -0,0 +1,170 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ticketmaster-redmine
3
+ version: !ruby/object:Gem::Version
4
+ hash: 29
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 1
10
+ version: 0.0.1
11
+ platform: ruby
12
+ authors:
13
+ - Rafael George
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-12-23 00:00:00 -04:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: rspec
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 13
30
+ segments:
31
+ - 1
32
+ - 2
33
+ - 9
34
+ version: 1.2.9
35
+ type: :development
36
+ version_requirements: *id001
37
+ - !ruby/object:Gem::Dependency
38
+ name: ticketmaster
39
+ prerelease: false
40
+ requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ hash: 27
46
+ segments:
47
+ - 0
48
+ - 1
49
+ - 0
50
+ version: 0.1.0
51
+ type: :runtime
52
+ version_requirements: *id002
53
+ - !ruby/object:Gem::Dependency
54
+ name: activesupport
55
+ prerelease: false
56
+ requirement: &id003 !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ hash: 7
62
+ segments:
63
+ - 2
64
+ - 3
65
+ - 2
66
+ version: 2.3.2
67
+ type: :runtime
68
+ version_requirements: *id003
69
+ - !ruby/object:Gem::Dependency
70
+ name: activeresource
71
+ prerelease: false
72
+ requirement: &id004 !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ hash: 7
78
+ segments:
79
+ - 2
80
+ - 3
81
+ - 2
82
+ version: 2.3.2
83
+ type: :runtime
84
+ version_requirements: *id004
85
+ - !ruby/object:Gem::Dependency
86
+ name: addressable
87
+ prerelease: false
88
+ requirement: &id005 !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ hash: 15
94
+ segments:
95
+ - 2
96
+ - 1
97
+ - 2
98
+ version: 2.1.2
99
+ type: :runtime
100
+ version_requirements: *id005
101
+ description: Allows ticketmaster to interact with Your System.
102
+ email: george.rafael@gmail.com
103
+ executables: []
104
+
105
+ extensions: []
106
+
107
+ extra_rdoc_files:
108
+ - LICENSE
109
+ - README.md
110
+ files:
111
+ - LICENSE
112
+ - README.md
113
+ - Rakefile
114
+ - VERSION
115
+ - lib/provider/comment.rb
116
+ - lib/provider/project.rb
117
+ - lib/provider/redmine.rb
118
+ - lib/provider/ticket.rb
119
+ - lib/redmine/redmine-api.rb
120
+ - lib/ticketmaster-redmine.rb
121
+ - spec/comments_spec.rb
122
+ - spec/fixtures/issues.xml
123
+ - spec/fixtures/issues/1.xml
124
+ - spec/fixtures/projects.xml
125
+ - spec/fixtures/projects/test-repo12.xml
126
+ - spec/projects_spec.rb
127
+ - spec/spec.opts
128
+ - spec/spec_helper.rb
129
+ - spec/ticketmaster-redmine_spec.rb
130
+ - spec/tickets_spec.rb
131
+ has_rdoc: true
132
+ homepage: http://bandw.tumblr.com
133
+ licenses: []
134
+
135
+ post_install_message:
136
+ rdoc_options: []
137
+
138
+ require_paths:
139
+ - lib
140
+ required_ruby_version: !ruby/object:Gem::Requirement
141
+ none: false
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ hash: 3
146
+ segments:
147
+ - 0
148
+ version: "0"
149
+ required_rubygems_version: !ruby/object:Gem::Requirement
150
+ none: false
151
+ requirements:
152
+ - - ">="
153
+ - !ruby/object:Gem::Version
154
+ hash: 3
155
+ segments:
156
+ - 0
157
+ version: "0"
158
+ requirements: []
159
+
160
+ rubyforge_project:
161
+ rubygems_version: 1.3.7
162
+ signing_key:
163
+ specification_version: 3
164
+ summary: Ticketmaster Provider for Redmine
165
+ test_files:
166
+ - spec/comments_spec.rb
167
+ - spec/projects_spec.rb
168
+ - spec/spec_helper.rb
169
+ - spec/ticketmaster-redmine_spec.rb
170
+ - spec/tickets_spec.rb