welcu 0.0.2 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -1,4 +1,3 @@
1
- source "http://rubygems.org"
1
+ source 'https://rubygems.org'
2
2
 
3
- # Specify your gem's dependencies in welcu.gemspec
4
- gemspec
3
+ gemspec
@@ -0,0 +1,20 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ welcu (0.1.4)
5
+ multi_json
6
+ rest-client
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ mime-types (1.23)
12
+ multi_json (1.7.4)
13
+ rest-client (1.6.7)
14
+ mime-types (>= 1.16)
15
+
16
+ PLATFORMS
17
+ ruby
18
+
19
+ DEPENDENCIES
20
+ welcu!
data/README ADDED
@@ -0,0 +1,12 @@
1
+ Welcu Api V1
2
+ ============
3
+
4
+ Ruby Wrapper for the Welcu API V1 (http://developer.welcu.com/v1/)
5
+
6
+ TODO
7
+ ====
8
+
9
+ * Handle Exceptions
10
+ * Clean Code
11
+ * Tests
12
+ * Documentation
@@ -0,0 +1,78 @@
1
+ require "rest_client"
2
+ require "multi_json"
3
+
4
+ require "welcu_api/event"
5
+ require "welcu_api/company"
6
+ require "welcu_api/ticket"
7
+ require "welcu_api/attendee"
8
+
9
+ module WelcuApi
10
+ @api_base = "http://api.welcu.com/v1"
11
+
12
+ class << self
13
+ attr_accessor :api_base, :api_key
14
+ end
15
+
16
+ def self.api_url(url='')
17
+ @api_base + url + '.json'
18
+ end
19
+
20
+ def self.request(method, url, api_key, params={}, headers={})
21
+ api_key ||= @api_key
22
+
23
+ url = api_url(url)
24
+
25
+ case method.to_s.downcase.to_sym
26
+ when :get, :head, :delete
27
+ # Make params into GET parameters
28
+ url += "#{URI.parse(url).query ? '&' : '?'}#{uri_encode(params)}" if params && params.any?
29
+ payload = nil
30
+ else
31
+ payload = uri_encode(params)
32
+ end
33
+
34
+ request_opts = { :headers => request_headers(api_key).update(headers),
35
+ :method => method, :open_timeout => 30,
36
+ :payload => payload, :url => url, :timeout => 80 }
37
+
38
+ response = execute_request(request_opts)
39
+ end
40
+
41
+
42
+ private
43
+ def self.request_headers(api_key)
44
+ headers = {
45
+ :user_agent => "Welcu/v1 RubyBindings",
46
+ :authorization => "event #{api_key}",
47
+ :content_type => 'application/x-www-form-urlencoded'
48
+ }
49
+ end
50
+
51
+ def self.uri_encode(params)
52
+ flatten_params(params).
53
+ map { |k,v| "#{k}=#{url_encode(v)}" }.join('&')
54
+ end
55
+
56
+ def self.execute_request(opts)
57
+ RestClient::Request.execute(opts)
58
+ end
59
+
60
+ def self.url_encode(key)
61
+ URI.escape(key.to_s, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
62
+ end
63
+
64
+ def self.flatten_params(params, parent_key=nil)
65
+ result = []
66
+ params.each do |key, value|
67
+ calculated_key = parent_key ? "#{parent_key}[#{url_encode(key)}]" : url_encode(key)
68
+ if value.is_a?(Hash)
69
+ result += flatten_params(value, calculated_key)
70
+ elsif value.is_a?(Array)
71
+ result += flatten_params_array(value, calculated_key)
72
+ else
73
+ result << [calculated_key, value]
74
+ end
75
+ end
76
+ result
77
+ end
78
+ end
@@ -0,0 +1,83 @@
1
+ module WelcuApi
2
+ class Attendee
3
+ attr_reader :id
4
+ attr_reader :first_name
5
+ attr_reader :last_name
6
+ attr_reader :title
7
+ attr_reader :email
8
+ attr_reader :phone
9
+ attr_reader :facebook_uid
10
+ attr_reader :reference_key
11
+ attr_reader :tickets
12
+
13
+ def initialize(attendee_json)
14
+ @id = attendee_json["id"].to_i
15
+ @first_name = attendee_json["first_name"]
16
+ @last_name = attendee_json["last_name"]
17
+ @organization = attendee_json["organization"]
18
+ @title = attendee_json["title"]
19
+ @email = attendee_json["email"]
20
+ @phone = attendee_json["phone"]
21
+ @facebook_uid = attendee_json["facebook_uid"]
22
+ @reference_key = attendee_json["reference_key"]
23
+
24
+ @tickets = []
25
+ attendee_json["tickets"].each do |ticket|
26
+ puts ticket.inspect
27
+ @tickets << WelcuApi::Ticket.new(ticket)
28
+ end
29
+ end
30
+
31
+ def self.all(options={})
32
+ case options[:state]
33
+ when :checked
34
+ url = WelcuApi::Attendee.checked_url
35
+ when :unchecked
36
+ url = WelcuApi::Attendee.unchecked_url
37
+ else
38
+ url = WelcuApi::Attendee.attendee_url
39
+ end
40
+
41
+ params = {}
42
+ params.update(ticket_id = options["ticket_id"]) unless options["ticket_id"].nil?
43
+
44
+ response = WelcuApi.request(:get, url, @api_key, {})
45
+ attendees_json = MultiJson.load(response)
46
+
47
+ attendees = []
48
+ attendees_json.each do |attendee_json|
49
+ attendees << WelcuApi::Attendee.new(attendee_json)
50
+ end
51
+
52
+ attendees
53
+ end
54
+
55
+ def self.find_by_code(code)
56
+ response = WelcuApi.request(:get, WelcuApi::Attendee.attendee_by_code_url(code), @api_key, {})
57
+ attendee_json = MultiJson.load(response)
58
+
59
+ Attendee.new(attendee_json)
60
+ end
61
+
62
+ def full_name
63
+ "#{first_name} #{last_name}"
64
+ end
65
+
66
+ private
67
+ def self.attendee_url
68
+ '/event/attendees'
69
+ end
70
+
71
+ def self.checked_url
72
+ '/event/attendees/checked'
73
+ end
74
+
75
+ def self.unchecked_url
76
+ '/event/attendees/unchecked'
77
+ end
78
+
79
+ def self.attendee_by_code_url(code)
80
+ "/event/attendees/code/#{code}"
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,11 @@
1
+ module WelcuApi
2
+ class Company
3
+ attr_reader :id
4
+ attr_reader :name
5
+
6
+ def initialize(id, name)
7
+ @id = id
8
+ @name = name
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,44 @@
1
+ module WelcuApi
2
+ class Event
3
+ attr_reader :id
4
+ attr_reader :name
5
+ attr_reader :starts_at
6
+ attr_reader :ends_at
7
+ attr_reader :locale
8
+ attr_reader :timezone
9
+ attr_reader :state
10
+ attr_reader :url
11
+ attr_reader :public
12
+ attr_reader :location
13
+ attr_reader :company
14
+ attr_reader :tickets
15
+
16
+ def initialize
17
+ response = WelcuApi.request(:get, WelcuApi::Event.event_url, @api_key, {})
18
+ json_event = MultiJson.load(response)
19
+
20
+ @id = json_event["id"].to_i
21
+ @name = json_event["name"]
22
+
23
+ @starts_at = Time.new json_event["starts_at"]
24
+ @ends_at = Time.new json_event["ends_at"]
25
+ @locale = json_event["locale"].to_sym
26
+ @timezone = json_event["timezone"]
27
+ @state = json_event["state"].to_sym
28
+ @url = json_event["url"]
29
+ @public = json_event["public"] == "true"
30
+ @company = WelcuApi::Company.new(json_event["company"]["id"], json_event["company"]["name"])
31
+ @location = json_event["location"]
32
+
33
+ @tickets = []
34
+ json_event["tickets"].each do |ticket|
35
+ @tickets << WelcuApi::Ticket.new(ticket)
36
+ end
37
+ end
38
+
39
+ private
40
+ def self.event_url
41
+ '/event'
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,30 @@
1
+ module WelcuApi
2
+ class Ticket
3
+ attr_reader :id
4
+ attr_reader :name
5
+ attr_reader :starts_at
6
+ attr_reader :ends_at
7
+ attr_reader :location
8
+ attr_reader :code
9
+
10
+ def initialize(ticket_json)
11
+ @id = (ticket_json["id"] || ticket_json["ticket_id"]).to_i
12
+ @name = ticket_json["name"]
13
+ @code = ticket_json["code"]
14
+ @starts_at = Time.new(ticket_json["starts_at"]) unless ticket_json["starts_at"].nil?
15
+ @ends_at = Time.new(ticket_json["ends_at"]) unless ticket_json["ends_at"].nil?
16
+ @location = ticket_json["location"]
17
+ end
18
+
19
+ def self.check(code, checked_at=nil)
20
+ params = checked_at.nil? ? {} : uri_encode({ at: checked_at })
21
+
22
+ response = WelcuApi.request(:post, WelcuApi::Ticket.check_ticket_url(code), @api_key, params)
23
+ end
24
+
25
+ private
26
+ def self.check_ticket_url(code)
27
+ "/event/attendees/code/#{code}/check"
28
+ end
29
+ end
30
+ end
@@ -1,27 +1,19 @@
1
1
  # -*- encoding: utf-8 -*-
2
- require 'base64'
3
- $:.push File.expand_path("../lib", __FILE__)
4
- require "welcu/version"
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
4
 
6
5
  Gem::Specification.new do |s|
7
- s.name = "welcu"
8
- s.version = Welcu::VERSION
9
- s.platform = Gem::Platform::RUBY
10
- s.authors = ["Sebastian Gamboa"]
11
- s.email = [ Base64.decode64("c2ViYUB3ZWxjdS5jb20=\n") ]
12
- s.homepage = "http://github.com/welcu/welcu.gem"
13
- s.summary = "A Gem for the Welcu API"
14
- s.description = "A Gem for the Welcu API"
15
-
16
- s.files = `git ls-files`.split("\n") rescue
17
- Dir['README.rdoc', 'Rakefile', 'lib/**/*', 'spec/**/*']
18
- s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n") rescue Dir['spec/**/*']
19
- s.executables = ( `git ls-files -- bin/*`.split("\n") rescue Dir['bin/*'] ).map{ |f| File.basename(f) }
6
+ s.name = 'welcu'
7
+ s.version = '0.1.5'
8
+ s.date = '2013-06-01'
9
+ s.summary = "Ruby wrapper for the Welcu API"
10
+ s.description = "Ruby wrapper for the Welcu API V1"
11
+ s.authors = ["Roberto Poo"]
12
+ s.email = 'xaro@poo.cl'
13
+ s.files = `git ls-files`.split("\n")
20
14
  s.require_paths = ["lib"]
21
-
22
- s.add_runtime_dependency("oauth2", '0.1.1')
23
- s.add_runtime_dependency("json")
24
-
25
- s.add_development_dependency("rake")
26
- s.add_development_dependency("bundler")
27
- end
15
+ s.homepage = 'https://github.com/xaro/welcu_api'
16
+
17
+ s.add_runtime_dependency "rest-client"
18
+ s.add_runtime_dependency "multi_json"
19
+ end
metadata CHANGED
@@ -1,134 +1,85 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: welcu
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 0
8
- - 2
9
- version: 0.0.2
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.5
5
+ prerelease:
10
6
  platform: ruby
11
- authors:
12
- - Sebastian Gamboa
7
+ authors:
8
+ - Roberto Poo
13
9
  autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
-
17
- date: 2011-01-20 00:00:00 -03:00
18
- default_executable:
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
21
- name: oauth2
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
12
+ date: 2013-06-01 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rest-client
16
+ requirement: !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
26
- - - "="
27
- - !ruby/object:Gem::Version
28
- segments:
29
- - 0
30
- - 1
31
- - 1
32
- version: 0.1.1
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
33
22
  type: :runtime
34
- version_requirements: *id001
35
- - !ruby/object:Gem::Dependency
36
- name: json
37
23
  prerelease: false
38
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
39
25
  none: false
40
- requirements:
41
- - - ">="
42
- - !ruby/object:Gem::Version
43
- segments:
44
- - 0
45
- version: "0"
46
- type: :runtime
47
- version_requirements: *id002
48
- - !ruby/object:Gem::Dependency
49
- name: rake
50
- prerelease: false
51
- requirement: &id003 !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: multi_json
32
+ requirement: !ruby/object:Gem::Requirement
52
33
  none: false
53
- requirements:
54
- - - ">="
55
- - !ruby/object:Gem::Version
56
- segments:
57
- - 0
58
- version: "0"
59
- type: :development
60
- version_requirements: *id003
61
- - !ruby/object:Gem::Dependency
62
- name: bundler
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
63
39
  prerelease: false
64
- requirement: &id004 !ruby/object:Gem::Requirement
40
+ version_requirements: !ruby/object:Gem::Requirement
65
41
  none: false
66
- requirements:
67
- - - ">="
68
- - !ruby/object:Gem::Version
69
- segments:
70
- - 0
71
- version: "0"
72
- type: :development
73
- version_requirements: *id004
74
- description: A Gem for the Welcu API
75
- email:
76
- - seba@welcu.com
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ description: Ruby wrapper for the Welcu API V1
47
+ email: xaro@poo.cl
77
48
  executables: []
78
-
79
49
  extensions: []
80
-
81
50
  extra_rdoc_files: []
82
-
83
- files:
84
- - .gitignore
51
+ files:
85
52
  - Gemfile
86
- - README.rdoc
87
- - Rakefile
88
- - lib/welcu.rb
89
- - lib/welcu/api.rb
90
- - lib/welcu/base.rb
91
- - lib/welcu/client.rb
92
- - lib/welcu/client/canvas.rb
93
- - lib/welcu/client/event.rb
94
- - lib/welcu/client/passes.rb
95
- - lib/welcu/client/registries.rb
96
- - lib/welcu/error.rb
97
- - lib/welcu/railtie.rb
98
- - lib/welcu/version.rb
99
- - spec/TODO
53
+ - Gemfile.lock
54
+ - README
55
+ - lib/welcu_api.rb
56
+ - lib/welcu_api/attendee.rb
57
+ - lib/welcu_api/company.rb
58
+ - lib/welcu_api/event.rb
59
+ - lib/welcu_api/ticket.rb
100
60
  - welcu.gemspec
101
- has_rdoc: true
102
- homepage: http://github.com/welcu/welcu.gem
61
+ homepage: https://github.com/xaro/welcu_api
103
62
  licenses: []
104
-
105
63
  post_install_message:
106
64
  rdoc_options: []
107
-
108
- require_paths:
65
+ require_paths:
109
66
  - lib
110
- required_ruby_version: !ruby/object:Gem::Requirement
67
+ required_ruby_version: !ruby/object:Gem::Requirement
111
68
  none: false
112
- requirements:
113
- - - ">="
114
- - !ruby/object:Gem::Version
115
- segments:
116
- - 0
117
- version: "0"
118
- required_rubygems_version: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - ! '>='
71
+ - !ruby/object:Gem::Version
72
+ version: '0'
73
+ required_rubygems_version: !ruby/object:Gem::Requirement
119
74
  none: false
120
- requirements:
121
- - - ">="
122
- - !ruby/object:Gem::Version
123
- segments:
124
- - 0
125
- version: "0"
75
+ requirements:
76
+ - - ! '>='
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
126
79
  requirements: []
127
-
128
80
  rubyforge_project:
129
- rubygems_version: 1.3.7
81
+ rubygems_version: 1.8.25
130
82
  signing_key:
131
83
  specification_version: 3
132
- summary: A Gem for the Welcu API
133
- test_files:
134
- - spec/TODO
84
+ summary: Ruby wrapper for the Welcu API
85
+ test_files: []
data/.gitignore DELETED
@@ -1,4 +0,0 @@
1
- pkg/*
2
- *.gem
3
- .bundle
4
- Gemfile.lock
@@ -1,3 +0,0 @@
1
- Working on our own gem.
2
-
3
- TODO: Write specs XD
data/Rakefile DELETED
@@ -1,2 +0,0 @@
1
- require 'bundler'
2
- Bundler::GemHelper.install_tasks
@@ -1,41 +0,0 @@
1
- require 'oauth2'
2
- require 'json'
3
-
4
- require 'uri'
5
- require "base64"
6
- require "openssl"
7
-
8
- require 'welcu/error'
9
- require 'welcu/base'
10
- require 'welcu/api'
11
- require 'welcu/client'
12
-
13
- module Welcu
14
- DEFAULT_CONFIG = {
15
- 'welcu_uri' => 'https://backstage.welcu.com',
16
- 'api_path' => '/api/v1'
17
- }.freeze
18
- @config = DEFAULT_CONFIG
19
-
20
- class << self
21
-
22
- def load_config(yaml_file, scope = nil)
23
- cfg = YAML::load(File.open(yaml_file))
24
- if scope
25
- cfg = cfg[scope]
26
- end
27
-
28
- config(cfg)
29
- end
30
-
31
- def config(values=nil)
32
- if values
33
- @config = @config.merge(values).freeze
34
- end
35
-
36
- @config
37
- end
38
- end
39
- end
40
-
41
- require 'welcu/railtie' if defined? Rails
@@ -1,35 +0,0 @@
1
- module Welcu
2
- class API
3
- attr_reader :client_id , :client_secret , :welcu_uri , :access_token , :consumer , :auth, :api_path
4
- attr_accessor :locale, :administrator_id, :mode
5
- alias_method :id, :client_id
6
- alias_method :secret, :client_secret
7
-
8
- def initialize(options = {})
9
- options = Welcu.config.merge(options)
10
- @client_id, @client_secret = options['client_id'], options['client_secret']
11
- @welcu_uri = options['welcu_uri']
12
- @api_path = options['api_path']
13
- @access_token = options.fetch :access_token, nil
14
- @auth = OAuth2::AccessToken.new(oauth_client , @access_token)
15
- end
16
-
17
- def access_token=(new_token)
18
- @access_token = new_token
19
- @auth = OAuth2::AccessToken.new(oauth_client , @access_token)
20
- new_token
21
- end
22
-
23
- def oauth_client
24
- OAuth2::Client.new(client_id, client_secret, :site => welcu_uri)
25
- end
26
-
27
- %w{get post put delete}.each do |method|
28
- class_eval <<-EOM
29
- def #{method}(path, *args)
30
- JSON.parse( auth.#{method}(api_path+'/'+path+'.json',*args) )
31
- end
32
- EOM
33
- end
34
- end
35
- end
@@ -1,29 +0,0 @@
1
- module Welcu
2
- class Base
3
- attr_reader :attributes, :client
4
-
5
- def initialize(client, attributes={})
6
- @client = client
7
- @attributes = attributes
8
- end
9
-
10
- def self.attribute(*names)
11
- names.each do |name|
12
- self.class_eval <<-EOF
13
- def #{name}
14
- attributes['#{name}']
15
- end
16
-
17
- def #{name}=(value)
18
- attributes['#{name}'] = value
19
- end
20
- EOF
21
- end
22
- end
23
- attribute :id
24
-
25
- def to_hash
26
- { self.class.name.gsub('Welcu::','').downcase => attributes }
27
- end
28
- end
29
- end
@@ -1,13 +0,0 @@
1
- module Welcu
2
-
3
- class Client < API
4
- Dir[File.expand_path('../client/*.rb', __FILE__)].each{|f| require f}
5
-
6
-
7
- include Welcu::Client::Canvas
8
- include Welcu::Client::Event
9
- include Welcu::Client::Passes
10
- include Welcu::Client::Registries
11
-
12
- end
13
- end
@@ -1,45 +0,0 @@
1
- require 'base64'
2
-
3
- module Welcu
4
- class Client
5
- module Canvas
6
- def self.included(receiver)
7
- receiver.extend ClassMethods
8
- end
9
-
10
- module ClassMethods
11
- def from_signed_request(request, options = {})
12
- client = Welcu::Client.new(options)
13
- signature, payload = request.split('.', 2)
14
-
15
- data = Welcu::Client::Canvas.decode_payload(payload)
16
-
17
- if data['algorithm'].to_s.upcase != 'HMAC-SHA256'
18
- raise Welcu::Client::Canvas::BadSignatureAlgorithmError.new(data['algorithm'])
19
- end
20
- expected_sig = OpenSSL::HMAC.hexdigest('sha256', client.secret, payload)
21
-
22
- if expected_sig != signature
23
- raise Welcu::Client::Canvas::BadSignatureError
24
- end
25
-
26
- client.access_token = data['access_token']
27
- client.mode = data['mode']
28
- client.locale = data['locale']
29
- client.administrator_id = data['administrator_id']
30
-
31
- client
32
- end
33
- end
34
-
35
- def self.decode_payload(payload)
36
- payload = payload.dup
37
- payload << '=' until (payload.size % 4).zero?
38
- JSON.parse(Base64.urlsafe_decode64(payload))
39
- end
40
-
41
- class BadSignatureError < Error; end
42
- class BadSignatureAlgorithmError < Error; end
43
- end
44
- end
45
- end
@@ -1,32 +0,0 @@
1
- module Welcu
2
- class Client
3
- module Event
4
- def event
5
- @event ||= Welcu::Event.new(self).load!
6
- end
7
-
8
- def company
9
- event.company
10
- end
11
- end
12
- end
13
-
14
- class Event < Base
15
- attr_accessor :company
16
-
17
- attribute :name, :short_name, :permalink, :description, :starts_at, :ends_at, :locale, :logo, :location, :url, :logo_big
18
-
19
- def load!
20
- @attributes = client.get('event')['event']
21
- self.company = Welcu::Company.new(self, @attributes.delete('company'))
22
- self.company.event = self
23
- client.locale ||= self.locale
24
- self
25
- end
26
- end
27
-
28
- class Company < Base
29
- attr_accessor :event
30
- attribute :name, :short_name, :permalink, :description, :locale
31
- end
32
- end
@@ -1,48 +0,0 @@
1
- module Welcu
2
- class Client
3
- module Passes
4
- def passes
5
- @passes ||= Welcu::Client::Passes::Proxy.new(self)
6
- end
7
-
8
- class Proxy
9
- include Enumerable
10
-
11
- def initialize(client)
12
- @client = client
13
- end
14
-
15
- def find(id)
16
- passes.find { |p| p.id == id }
17
- end
18
-
19
- def [](poss)
20
- passes[poss]
21
- end
22
-
23
- def each
24
- passes.each { |p| yield p }
25
- end
26
-
27
- protected
28
- def passes
29
- @passes ||= begin
30
- @client.get('passes').map do |data|
31
- Welcu::Pass.new(@client,data['pass'])
32
- end
33
- end
34
- end
35
- end
36
- end
37
- end
38
-
39
- class Pass < Base
40
- attr_reader :event
41
- attribute :name, :description
42
-
43
- def initialize(client, attributes={})
44
- super
45
- @event = client.event
46
- end
47
- end
48
- end
@@ -1,65 +0,0 @@
1
- module Welcu
2
- class Client
3
- module Registries
4
- def registries
5
- @registries ||= Welcu::Client::Registries::Proxy.new(self)
6
- end
7
-
8
- class Proxy
9
- def initialize(client)
10
- @client = client
11
- end
12
-
13
- def find(id)
14
- data = @client.get("registries/#{id}")
15
- Welcu::Registry.new(@client,data['registry'])
16
- end
17
-
18
- def build(attributes = {})
19
- Welcu::Registry.new(@client,attributes)
20
- end
21
- end
22
- end
23
- end
24
-
25
- class Registry < Base
26
- attr_reader :event
27
- attribute :first_name, :last_name, :email, :phone, :pass_id
28
-
29
- def initialize(client, attributes={})
30
- super
31
- @event = client.event
32
- end
33
-
34
- def pass
35
- if pass_id
36
- @pass ||= client.passes.find(pass_id)
37
- end
38
- end
39
-
40
- def pass=(pass)
41
- @pass = pass
42
- self.pass_id = pass && pass.id
43
- end
44
-
45
- def save
46
- if id
47
- self.attributes = client.put("registries/#{id}", to_hash)['registry']
48
- else
49
- self.attributes = client.post("registries", to_hash)['registry']
50
- end
51
-
52
- true
53
- end
54
-
55
- def confirm!
56
- client.put("/registries/#{id}/confirm")
57
- true
58
- end
59
-
60
- def reject!
61
- client.put("/registries/#{id}/reject")
62
- true
63
- end
64
- end
65
- end
@@ -1,3 +0,0 @@
1
- module Welcu
2
- class Error < RuntimeError; end
3
- end
@@ -1,8 +0,0 @@
1
- module Welcu
2
- class Railtie < Rails::Railtie
3
- initializer "load configuration" do
4
- config_file = Rails.root.join("config", "welcu.yml")
5
- Welcu.load_config(config_file,Rails.env) if config_file.file?
6
- end
7
- end
8
- end
@@ -1,3 +0,0 @@
1
- module Welcu
2
- VERSION = "0.0.2"
3
- end
data/spec/TODO DELETED
@@ -1 +0,0 @@
1
- :P