From 3dee69999e9d22534acd42e0a22c947c5060577e Mon Sep 17 00:00:00 2001 From: Jeremy Woertink Date: Mon, 19 Nov 2012 22:08:26 -0800 Subject: [PATCH] added in stuff for testing, and started on grabbing events --- .gitignore | 1 + .pryrc | 21 +++++++++++++++++++++ .rspec | 1 + .yardopts | 3 +++ Guardfile | 16 ++++++++++++++++ README.md | 4 ++-- Rakefile | 30 +++++++++++++++++++++++++++++- lib/ticketsnow.rb | 17 ++++++++++++++++- lib/ticketsnow/base.rb | 15 +++++++++++++++ lib/ticketsnow/connection.rb | 22 ++++++++++++++++++++++ lib/ticketsnow/event.rb | 14 ++++++++++++++ lib/ticketsnow/exceptions.rb | 5 +++++ ticketsnow-ruby.gemspec | 18 ++++++++++++++++++ 13 files changed, 163 insertions(+), 4 deletions(-) create mode 100644 .pryrc create mode 100644 .rspec create mode 100644 .yardopts create mode 100644 Guardfile create mode 100644 lib/ticketsnow/base.rb create mode 100644 lib/ticketsnow/connection.rb create mode 100644 lib/ticketsnow/event.rb create mode 100644 lib/ticketsnow/exceptions.rb diff --git a/.gitignore b/.gitignore index 14120cc..613169a 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ .config .yardoc .DS_Store +.rvmrc Gemfile.lock InstalledFiles _yardoc diff --git a/.pryrc b/.pryrc new file mode 100644 index 0000000..f017ae8 --- /dev/null +++ b/.pryrc @@ -0,0 +1,21 @@ +#!/usr/bin/env ruby +# -*- mode: ruby -*- +# vi: set ft=ruby : + +require 'rubygems' +require 'bundler' +begin + Bundler.setup(:default, :development) +rescue Bundler::BundlerError => e + $stderr.puts e.message + $stderr.puts "Run `bundle install` to install missing gems" + exit e.status_code +end + +require 'pathname' +$LOAD_PATH.unshift(Pathname.getwd.join('lib').to_s) +require 'ticketsnow-ruby' + +def reload! + Dir["#{Dir.pwd}/lib/**/*.rb"].each { |f| load f } +end \ No newline at end of file diff --git a/.rspec b/.rspec new file mode 100644 index 0000000..7abe2a1 --- /dev/null +++ b/.rspec @@ -0,0 +1 @@ +--color --format nested \ No newline at end of file diff --git a/.yardopts b/.yardopts new file mode 100644 index 0000000..b6a1bc6 --- /dev/null +++ b/.yardopts @@ -0,0 +1,3 @@ +--title 'ticketsnow-ruby Documentation' +--charset utf-8 +--markup markdown \ No newline at end of file diff --git a/Guardfile b/Guardfile new file mode 100644 index 0000000..bbce301 --- /dev/null +++ b/Guardfile @@ -0,0 +1,16 @@ +guard 'bundler' do + watch('Gemfile') + watch('ticketsnow-ruby.gemspec') +end + +guard 'rspec' do + watch(%r{^spec/.+_spec\.rb$}) + watch(%r{^lib/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" } + watch('spec/spec_helper.rb') { "spec" } +end + +guard 'yard' do + watch(%r{app/.+\.rb}) + watch(%r{lib/.+\.rb}) + watch(%r{ext/.+\.c}) +end \ No newline at end of file diff --git a/README.md b/README.md index e33641e..e2a9986 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -# Ticketsnow::Ruby +# Ticketsnow-ruby -TODO: Write a gem description +gem to interface with the TicketsNow.com SOAP API ## Installation diff --git a/Rakefile b/Rakefile index f57ae68..e7df5b1 100644 --- a/Rakefile +++ b/Rakefile @@ -1,2 +1,30 @@ #!/usr/bin/env rake -require "bundler/gem_tasks" +require 'rubygems' +require 'bundler' +begin + Bundler.setup(:default, :development) +rescue Bundler::BundlerError => e + $stderr.puts e.message + $stderr.puts "Run `bundle install` to install missing gems" + exit e.status_code +end +require 'rake' +require 'bundler/gem_tasks' + +require 'rspec/core' +require 'rspec/core/rake_task' +RSpec::Core::RakeTask.new(:spec) do |spec| + spec.pattern = FileList['spec/**/*_spec.rb'] +end + +task :default => :spec + +require 'yard' +YARD::Rake::YardocTask.new + +desc 'Start Pry with all runtime dependencies loaded' +task :console, :script do |t, args| + command = 'bundle exec pry' + command += "-r #{args[:script]}" if args[:script] + sh command +end \ No newline at end of file diff --git a/lib/ticketsnow.rb b/lib/ticketsnow.rb index d7acf7e..b159b6c 100644 --- a/lib/ticketsnow.rb +++ b/lib/ticketsnow.rb @@ -1,5 +1,20 @@ require 'ticketsnow/version' +require 'ticketsnow/exceptions' +require 'ticketsnow/base' +require 'ticketsnow/connection' -module Ticketnow +module Ticketsnow + + class << self + attr_accessor :test_mode, :api_key + + def configure + yield self + self.test_mode ||= false + Base.token = api_key + Base.endpoint = "http://services.#{ test_mode ? 'preview.' : '' }eventinventory.com/webservices/ticketsearch.asmx?wsdl" + end + + end end \ No newline at end of file diff --git a/lib/ticketsnow/base.rb b/lib/ticketsnow/base.rb new file mode 100644 index 0000000..8416960 --- /dev/null +++ b/lib/ticketsnow/base.rb @@ -0,0 +1,15 @@ +require 'savon' + +module Ticketsnow + class Base + @@current_connection = nil + + DEFAULT_OPTIONS = {:body => {"APPCLIENT_ID" => token}} + + class << self + attr_accessor :token, :endpoint + end + + + end +end \ No newline at end of file diff --git a/lib/ticketsnow/connection.rb b/lib/ticketsnow/connection.rb new file mode 100644 index 0000000..3e8636c --- /dev/null +++ b/lib/ticketsnow/connection.rb @@ -0,0 +1,22 @@ +module Ticketsnow + + class Connection < Ticketsnow::Base + + def self.ensure_connection! + new unless @@current_connection + end + + def initialize + raise ConnectionError, "You must Configure Ticketsnow first." if Base.endpoint.nil? + @url = Base.endpoint + @client = Savon.client(@url) + @@current_connection = @client if @client.wsdl.document? + end + + def client + @client + end + + end + +end \ No newline at end of file diff --git a/lib/ticketsnow/event.rb b/lib/ticketsnow/event.rb new file mode 100644 index 0000000..1c6bc73 --- /dev/null +++ b/lib/ticketsnow/event.rb @@ -0,0 +1,14 @@ +module Ticketsnow + class Event < Ticketsnow::Connection + + class << self + + def all + ensure_connection! + @@current_connection.client.request(:wsdl, :get_event_list, DEFAULT_OPTIONS) + end + + end + + end +end \ No newline at end of file diff --git a/lib/ticketsnow/exceptions.rb b/lib/ticketsnow/exceptions.rb new file mode 100644 index 0000000..d9a7d2d --- /dev/null +++ b/lib/ticketsnow/exceptions.rb @@ -0,0 +1,5 @@ +module Ticketsnow + + class ConnectionError < StandardError; end + +end \ No newline at end of file diff --git a/ticketsnow-ruby.gemspec b/ticketsnow-ruby.gemspec index 6bbb875..6a03697 100644 --- a/ticketsnow-ruby.gemspec +++ b/ticketsnow-ruby.gemspec @@ -16,7 +16,25 @@ Gem::Specification.new do |gem| gem.version = Ticketsnow::VERSION gem.add_dependency 'savon', '1.2.0' + # Basic + gem.add_development_dependency 'rake' + gem.add_development_dependency 'bundler' + gem.add_development_dependency 'yard' + gem.add_development_dependency 'redcarpet' + + # Testing gem.add_development_dependency 'rspec' + gem.add_development_dependency 'simplecov' gem.add_development_dependency 'vcr' gem.add_development_dependency 'webmock' + + # Development tools & helpers + gem.add_development_dependency 'pry' + gem.add_development_dependency 'guard' + gem.add_development_dependency 'guard-bundler' + gem.add_development_dependency 'guard-rspec' + gem.add_development_dependency 'guard-yard' + gem.add_development_dependency 'rb-fsevent' + gem.add_development_dependency 'rb-inotify' + gem.add_development_dependency 'growl' end