RailsRunSignUp 0.0.1

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,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ M2YwOTdmNzQxNGFmOWJiZjJjYmNkNGU5MTM3MmMyOWQ0NmQ2OTVhMw==
5
+ data.tar.gz: !binary |-
6
+ OWY2ODFkNDE5MzE4MDRjYTNhZTE3MjI4N2YxNmI2MDdmN2ZlMWNjYQ==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ OGYyNWE2MGIxOTEyNmFkYjVlNWJiODRkN2YwZGFlOTgzNzUwYjFjNTEwMmM0
10
+ MTM5NGE5MzAzMDU0YWQ0MDgwM2YxNDI4MjY1ZmJjNWQ5MWM0OGIzYjA5YjM3
11
+ ZjNkMGYzNTBkNDM2N2JhNDA0ZWI4NWJlNDk2MDUyNWZlNzViNzM=
12
+ data.tar.gz: !binary |-
13
+ YWMzNGM0OTg5ZTRkNmJiMzQ1YTVlZTFiNmFmZjQ5ZWRiNDgxOTBhM2I0NzE5
14
+ YTEzNDUwZGY3ZmYyYzI2YzM2MzU2OGE5N2RjY2U3NDY2YzA4NTJhZDM0Njg4
15
+ MmM5OGMzNTZhNzM3NDk5M2UwN2IyMTQ4NzA3MDFkZjRjMjI2NTE=
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in RailsRunSignUp.gemspec
4
+ gemspec
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 David Slone
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
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.
@@ -0,0 +1,29 @@
1
+ # RailsRunSignUp
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'RailsRunSignUp'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install RailsRunSignUp
18
+
19
+ ## Usage
20
+
21
+ TODO: Write usage instructions here
22
+
23
+ ## Contributing
24
+
25
+ 1. Fork it
26
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
27
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
28
+ 4. Push to the branch (`git push origin my-new-feature`)
29
+ 5. Create new Pull Request
@@ -0,0 +1,23 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'RailsRunSignUp/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "RailsRunSignUp"
8
+ spec.version = RailsRunSignUp::VERSION
9
+ spec.authors = ["David Slone"]
10
+ spec.email = ["dbslone@gmail.com"]
11
+ spec.description = %q{Retrieve races from RunSignUp}
12
+ spec.summary = %q{This is a gem to allow an authenticated user to get races/race info from RunSignUp}
13
+ spec.homepage = ""
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.3"
22
+ spec.add_development_dependency "rake"
23
+ end
@@ -0,0 +1,4 @@
1
+ require "bundler/gem_tasks"
2
+ require "net/http"
3
+ require "uri"
4
+ require "json"
@@ -0,0 +1,12 @@
1
+ require "RailsRunSignUp/version"
2
+ require "RailsRunSignUp/session"
3
+ require "RailsRunSignUp/exceptions"
4
+ require "RailsRunSignUp/record"
5
+ require "RailsRunSignUp/model/race"
6
+ require "RailsRunSignUp/model/event"
7
+ require "RailsRunSignUp/model/registration_period"
8
+ require "RailsRunSignUp/races"
9
+
10
+ module RailsRunSignUp
11
+ # Your code goes here...
12
+ end
@@ -0,0 +1,17 @@
1
+ # @author Khang Le
2
+
3
+ module RailsRunSignUp
4
+
5
+ class RailsRunSignUpError < StandardError
6
+ end
7
+
8
+ class SessionError < StandardError
9
+ end
10
+
11
+ class RaceError < StandardError
12
+ end
13
+
14
+ class EventError < StandardError
15
+ end
16
+
17
+ end
@@ -0,0 +1,35 @@
1
+ module RailsRunSignUp
2
+ class Model
3
+ class Event < RailsRunSignUp::Record
4
+ # event id
5
+ attr_reader :id
6
+ # event name (usually the same as race name)
7
+ attr_reader :name
8
+ # event details
9
+ attr_reader :details
10
+ # event start time
11
+ attr_reader :start_time
12
+ # event time when registration begins
13
+ attr_reader :registration_opens
14
+ # event type
15
+ attr_reader :event_type
16
+ # event distance of race
17
+ attr_reader :distance
18
+ # if event has volunteers
19
+ attr_reader :volunteer
20
+ # if event requires date of birth (for registration)
21
+ attr_reader :require_dob
22
+ # if event requires phone number (for registration)
23
+ attr_reader :require_phone
24
+ # what event gives away (T-Shirts etc.)
25
+ attr_reader :give_away
26
+ # event registration periods (multiple for different price ranges)
27
+ attr_accessor :registration_periods
28
+
29
+ def add_registration_period period
30
+ self.registration_periods = [] if self.registration_periods.nil?
31
+ self.registration_periods << period unless period.nil?
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,80 @@
1
+ module RailsRunSignUp
2
+ class Model
3
+ class Race < RailsRunSignUp::Record
4
+ # race id
5
+ attr_reader :id
6
+ # name of race
7
+ attr_reader :name
8
+ # description
9
+ attr_reader :description
10
+ # runsignup url for race
11
+ attr_reader :url
12
+ # next date race takes place
13
+ attr_reader :next_date
14
+ # last date race took place
15
+ attr_reader :last_date
16
+ # (BOOL) if registration is open
17
+ attr_reader :is_registration_open
18
+ # if is a draft race
19
+ attr_reader :is_draft_race
20
+ # street of race
21
+ attr_reader :street
22
+ # city of race
23
+ attr_reader :city
24
+ # state of race
25
+ attr_reader :state
26
+ # zip code of race
27
+ attr_reader :zip_code
28
+ # country of race
29
+ attr_reader :country_code
30
+ # list of events of races
31
+ attr_accessor :events
32
+ # access token for oauth
33
+ attr_accessor :access_token
34
+ # api_key
35
+ attr :api_key
36
+ # api_secret
37
+ attr :api_secret
38
+
39
+ # Retrieve all events for a race
40
+ #
41
+ # @author Khang Le
42
+ def get_events
43
+ response = self.access_token.get("/rest/race/#{self.id}/?format=json&race_id=#{self.id}&api_key=#{self.api_key}&api_secret=#{self.api_secret}")
44
+ json_response = JSON.parse(response.body)
45
+
46
+ raise RailsRunSignUp::RaceError, "RailsRunSignUp race.get Error: #{json_response['error']['error_code']} - #{json_response['error']['error_msg']}" unless json_response['error'].nil?
47
+
48
+ json_response['race']['events'].each do |event|
49
+ _event = RailsRunSignUp::Model::Event.new(
50
+ :id => event['id'],
51
+ :name => event['name'],
52
+ :details => event['details'],
53
+ :start_time => event['start_time'],
54
+ :registration_opens => event['registration_opens'],
55
+ :event_type => event['event_type'],
56
+ :distance => event['distance'],
57
+ :volunteer => event['volunteer'],
58
+ :require_dob => event['require_dob'],
59
+ :require_phone => event['require_phone'],
60
+ :give_away => event['give_away']
61
+ )
62
+ event['registration_periods'].each do |period|
63
+ _period = RailsRunSignUp::Model::RegistrationPeriod.new(
64
+ :registration_opens => period['registration_opens'],
65
+ :registration_closes => period['registration_closes'],
66
+ :race_fee => period['race_fee']
67
+ )
68
+ _event.add_registration_period _period
69
+ end
70
+ self.add_event _event
71
+ end
72
+ end
73
+
74
+ def add_event event
75
+ self.events = [] if self.events.nil?
76
+ self.events << event
77
+ end
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,12 @@
1
+ module RailsRunSignUp
2
+ class Model
3
+ class RegistrationPeriod < RailsRunSignUp::Record
4
+ # time when registration period opens
5
+ attr_reader :registration_opens
6
+ # time when registration period closes
7
+ attr_reader :registration_closes
8
+ # race fee for registration period
9
+ attr_reader :race_fee
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,99 @@
1
+ # @author Khang Le
2
+
3
+ module RailsRunSignUp
4
+
5
+ class Races
6
+ attr_accessor :races
7
+
8
+ def initialize session
9
+ raise RailsRunSignUp::SessionError, "Invalid session (session cannot be nil)" if session.nil?
10
+
11
+ @races = []
12
+ @access_token = session.access_token
13
+ @api_key = session.api_key
14
+ @api_secret = session.api_secret
15
+ end
16
+
17
+ # get races from runsignup
18
+ #
19
+ # @author Khang Le
20
+ # param[aflt_token] T/F appends affiliate token to end of string, default T
21
+ # param[events] T/F shows events with each race, default F
22
+ # param[race_headings] T/F shows heading with each race, default F
23
+ # param[race_links] T/F shows links of each race, default F
24
+ # param[page] int specifies which page to return, default 1
25
+ # param[results_per_page] int specifies how many results to return per page, default 10
26
+ # param[sort] specifies how to sort results (name or date, descending or ascending), default name+ASC
27
+ # param[name] search race by name
28
+ # see runsignup api documentation for extra parameters
29
+ def get_races opts = {}
30
+ response = @access_token.get("/rest/races/?format=json&api_key=#{@api_key}&api_secret=#{@api_secret}&#{opts.map{|k, v| "#{k}=#{v}"}.join('&')}")
31
+ json_response = JSON.parse(response.body)
32
+
33
+ raise RailsRunSignUp::RaceError, "RunSignUp races.get Error: #{json_response['error']['error_code']} - #{json_response['error']['error_msg']}" unless json_response['error'].nil?
34
+
35
+ self.races = parse_json json_response, opts unless json_response.nil?
36
+ self.races
37
+ end
38
+
39
+ def parse_json json_response, opts
40
+ races = []
41
+ count = 0
42
+
43
+ return if json_response['races'].nil?
44
+
45
+ json_response['races'].each do |race|
46
+ _race = RailsRunSignUp::Model::Race.new(
47
+ :access_token => @access_token,
48
+ :api_key => @api_key,
49
+ :api_secret => @api_secret,
50
+ :id => race['race']['race_id'],
51
+ :name => race['race']['name'],
52
+ :description => race['race']['description'],
53
+ :url => race['race']['url'],
54
+ :next_date => race['race']['next_date'],
55
+ :last_date => race['race']['last_date'],
56
+ :is_registration_open => race['race']['is_registration_open'],
57
+ :is_draft_race => race['race']['is_draft_race'],
58
+ :street => race['race']['address']['street'],
59
+ :city => race['race']['address']['city'],
60
+ :state => race['race']['address']['state'],
61
+ :zip_code => race['race']['address']['zip_code'],
62
+ :country_code => race['race']['address']['country_code']
63
+ )
64
+
65
+ if !opts[:events].nil? && opts[:events] === "T"
66
+ race['race']['events'].each do |event|
67
+ _event = RailsRunSignUp::Model::Event.new(
68
+ :id => event['id'],
69
+ :name => event['name'],
70
+ :details => event['details'],
71
+ :start_time => event['start_time'],
72
+ :registration_opens => event['registration_opens'],
73
+ :event_type => event['event_type'],
74
+ :distance => event['distance'],
75
+ :volunteer => event['volunteer'],
76
+ :require_dob => event['require_dob'],
77
+ :require_phone => event['require_phone'],
78
+ :give_away => event['give_away']
79
+ )
80
+
81
+ event['registration_periods'].each do |period|
82
+ _period = RailsRunSignUp::Model::RegistrationPeriod.new(
83
+ :registration_opens => period['registration_opens'],
84
+ :registration_closes => period['registration_closes'],
85
+ :race_fee => period['race_fee']
86
+ )
87
+ _event.add_registration_period _period
88
+ end
89
+ _race.add_event _event
90
+ end
91
+ end
92
+ races << _race
93
+ count = count + 1
94
+ break if !opts[:limit].nil? && count >= opts[:limit].to_i
95
+ end
96
+ races
97
+ end
98
+ end
99
+ end
@@ -0,0 +1,14 @@
1
+ # @author Khang Le
2
+
3
+ module RailsRunSignUp
4
+ class Record
5
+ def initialize (params)
6
+ return if params.nil?
7
+
8
+ params.each do |key, value|
9
+ name = key.to_s
10
+ instance_variable_set("@#{name}", value) if respond_to?(name)
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,26 @@
1
+ # @author Khang Le
2
+
3
+ require 'oauth'
4
+
5
+ module RailsRunSignUp
6
+
7
+ class Session
8
+ attr :session
9
+ attr :access_token
10
+ attr :api_key
11
+ attr :api_secret
12
+
13
+ def initialize api_key, api_secret, access_token, access_token_secret, oauth_key, oauth_secret
14
+ raise RailsRunSignUp::RailsRunSignUpError, "Missing parameter(api_key)" if api_key.nil? || api_key.length == 0
15
+ raise RailsRunSignUp::RailsRunSignUpError, "Missing parameter(api_secret)" if api_secret.nil? || api_secret.length == 0
16
+ raise RailsRunSignUp::RailsRunSignUpError, "Missing parameter(access_token)" if access_token.nil? || access_token.length == 0
17
+ raise RailsRunSignUp::RailsRunSignUpError, "Missing parameter(access_token_secret)" if access_token_secret.nil? || access_token_secret.length == 0
18
+
19
+ @consumer = OAuth::Consumer.new(oauth_key, oauth_secret, :site => "https://runsignup.com", :request_token_path => "/oauth/requestToken.php",
20
+ :authorize_path => "/OAuth/Verify", :access_token_path => "/oauth/accessToken.php")
21
+ @access_token = OAuth::AccessToken.new(@consumer, access_token, access_token_secret)
22
+ @api_key = api_key
23
+ @api_secret = api_secret
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,3 @@
1
+ module RailsRunSignUp
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,7 @@
1
+ require 'RailsRunSignUp'
2
+
3
+ class TestClient
4
+ def initialize
5
+
6
+ end
7
+ end
@@ -0,0 +1,24 @@
1
+ # @author Khang Le
2
+
3
+ require 'spec_helper'
4
+
5
+ describe RailsRunSignUp do
6
+ session = RailsRunSignUp::Session.new(ENV['RSU_API_KEY'],ENV['RSU_API_SECRET'],ENV['RSU_ACCESS_TOKEN'],ENV['RSU_ACCESS_SECRET'], ENV['RSU_OAUTH_TOKEN'], ENV['RSU_OAUTH_SECRET'])
7
+
8
+ it "should create oauth session" do
9
+ session.should_not be_nil
10
+ end
11
+
12
+ it "should retrieve race list" do
13
+ rails_sign_up = RailsRunSignUp::Races.new(session)
14
+ races = rails_sign_up.get_races
15
+ races.should_not be_nil
16
+ end
17
+
18
+ it "should retrieve race list from search" do
19
+ rails_sign_up = RailsRunSignUp::Races.new(session)
20
+ opts = { :events => "T", :name => "Run+Til" }
21
+ races = rails_sign_up.get_races opts
22
+ races.should_not be_nil
23
+ end
24
+ end
@@ -0,0 +1,11 @@
1
+ require 'rspec'
2
+ require 'RailsRunSignUp'
3
+ require 'RailsRunSignUp_helper'
4
+ require "net/http"
5
+ require "uri"
6
+ require "json"
7
+
8
+ RSpec.configure do |config|
9
+ config.color_enabled = true
10
+ config.formatter = 'documentation'
11
+ end
metadata ADDED
@@ -0,0 +1,94 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: RailsRunSignUp
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - David Slone
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-07-23 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ! '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description: Retrieve races from RunSignUp
42
+ email:
43
+ - dbslone@gmail.com
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - .gitignore
49
+ - Gemfile
50
+ - LICENSE.txt
51
+ - README.md
52
+ - RailsRunSignUp.gemspec
53
+ - Rakefile
54
+ - lib/RailsRunSignUp.rb
55
+ - lib/RailsRunSignUp/exceptions.rb
56
+ - lib/RailsRunSignUp/model/event.rb
57
+ - lib/RailsRunSignUp/model/race.rb
58
+ - lib/RailsRunSignUp/model/registration_period.rb
59
+ - lib/RailsRunSignUp/races.rb
60
+ - lib/RailsRunSignUp/record.rb
61
+ - lib/RailsRunSignUp/session.rb
62
+ - lib/RailsRunSignUp/version.rb
63
+ - spec/RailsRunSignUp_helper.rb
64
+ - spec/RailsRunSignUp_spec.rb
65
+ - spec/spec_helper.rb
66
+ homepage: ''
67
+ licenses:
68
+ - MIT
69
+ metadata: {}
70
+ post_install_message:
71
+ rdoc_options: []
72
+ require_paths:
73
+ - lib
74
+ required_ruby_version: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - ! '>='
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
79
+ required_rubygems_version: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ! '>='
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ requirements: []
85
+ rubyforge_project:
86
+ rubygems_version: 2.0.3
87
+ signing_key:
88
+ specification_version: 4
89
+ summary: This is a gem to allow an authenticated user to get races/race info from
90
+ RunSignUp
91
+ test_files:
92
+ - spec/RailsRunSignUp_helper.rb
93
+ - spec/RailsRunSignUp_spec.rb
94
+ - spec/spec_helper.rb