eventick_api 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.ruby-version +1 -1
- data/.travis.yml +4 -1
- data/README.md +4 -2
- data/eventick.gemspec +0 -1
- data/lib/eventick.rb +3 -0
- data/lib/eventick/auth.rb +12 -14
- data/lib/eventick/base.rb +10 -35
- data/lib/eventick/exceptions.rb +6 -0
- data/lib/eventick/params_parser.rb +48 -0
- data/lib/eventick/version.rb +4 -1
- data/test/eventick/attendee_test.rb +1 -1
- data/test/eventick/auth_test.rb +0 -1
- data/test/eventick/base_test.rb +32 -0
- data/test/eventick/event_test.rb +1 -1
- data/test/eventick/params_parser_test.rb +30 -0
- data/test/test_helper.rb +1 -1
- metadata +9 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 89a835bec6543e9d99d313cc32e0a22ba8398204
|
4
|
+
data.tar.gz: e7c5e9165c1aeab99ab40e7930454b39646b7342
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bf11bf5ec09db60a260102d96004eb6dd2daa9a2cce40c4cf6b047f79abcacdba12eaf9db1d6d34ad4d9e25966f7b6895863182a43f7a94bd5d606bc9af2906c
|
7
|
+
data.tar.gz: e16ec8af9b615d9b138c1cb5929209abe5a99b0f7c586f441052d92dcfc75a68b754719439b9c693973efc9fc946acd24434eeca1e3f9f70ff44556c16c9f7ca
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
ruby-2.0.0-
|
1
|
+
ruby-2.0.0-p247
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# Eventick
|
2
2
|
|
3
|
+
[![Build Status](https://travis-ci.org/lukelex/eventick_api.png?branch=master)](https://travis-ci.org/lukelex/eventick_api)
|
4
|
+
|
3
5
|
Eventick is a simple API wrapper public Eventick API.
|
4
6
|
|
5
7
|
TODO: Write a gem description
|
@@ -8,7 +10,7 @@ TODO: Write a gem description
|
|
8
10
|
|
9
11
|
Add this line to your application's Gemfile:
|
10
12
|
|
11
|
-
gem '
|
13
|
+
gem 'eventick_api'
|
12
14
|
|
13
15
|
And then execute:
|
14
16
|
|
@@ -16,7 +18,7 @@ And then execute:
|
|
16
18
|
|
17
19
|
Or install it yourself as:
|
18
20
|
|
19
|
-
$ gem install
|
21
|
+
$ gem install eventick_api
|
20
22
|
|
21
23
|
## Usage
|
22
24
|
|
data/eventick.gemspec
CHANGED
@@ -21,7 +21,6 @@ Gem::Specification.new do |gem|
|
|
21
21
|
gem.add_dependency 'json'
|
22
22
|
|
23
23
|
gem.add_development_dependency 'rake'
|
24
|
-
gem.add_development_dependency 'turn'
|
25
24
|
gem.add_development_dependency 'guard-minitest'
|
26
25
|
gem.add_development_dependency 'rb-fsevent'
|
27
26
|
gem.add_development_dependency 'minitest'
|
data/lib/eventick.rb
CHANGED
@@ -4,11 +4,14 @@ require 'cgi'
|
|
4
4
|
require 'openssl'
|
5
5
|
|
6
6
|
require_relative './eventick/version'
|
7
|
+
require_relative './eventick/base'
|
7
8
|
require_relative './eventick/auth'
|
8
9
|
require_relative './eventick/event'
|
9
10
|
require_relative './eventick/attendee'
|
10
11
|
require_relative './eventick/ticket'
|
11
12
|
require_relative './eventick/checkin'
|
13
|
+
require_relative './eventick/exceptions'
|
14
|
+
require_relative './eventick/params_parser'
|
12
15
|
|
13
16
|
module Eventick
|
14
17
|
BASE_URL = 'www.eventick.com.br'
|
data/lib/eventick/auth.rb
CHANGED
@@ -1,23 +1,21 @@
|
|
1
|
-
require_relative 'base'
|
2
|
-
|
3
1
|
module Eventick
|
4
2
|
class Auth < Base
|
5
|
-
|
3
|
+
resource 'tokens'
|
6
4
|
|
7
|
-
|
8
|
-
|
5
|
+
attr_accessor :email
|
6
|
+
attr_writer :password
|
9
7
|
|
10
|
-
|
11
|
-
|
12
|
-
|
8
|
+
def initialize(&block)
|
9
|
+
block.call self if block_given?
|
10
|
+
end
|
13
11
|
|
14
|
-
|
15
|
-
|
16
|
-
|
12
|
+
def token
|
13
|
+
@token ||= (get)['token']
|
14
|
+
end
|
17
15
|
|
18
|
-
|
19
|
-
|
20
|
-
|
16
|
+
def authenticated?
|
17
|
+
!!@token
|
18
|
+
end
|
21
19
|
|
22
20
|
private
|
23
21
|
def get
|
data/lib/eventick/base.rb
CHANGED
@@ -1,43 +1,18 @@
|
|
1
1
|
module Eventick
|
2
2
|
class Base
|
3
|
-
def self.resource(
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
if @resource
|
9
|
-
path = translate(args)
|
10
|
-
"#{ path }.json"
|
11
|
-
else
|
12
|
-
warn "The #{ self.name } class has not defined any resource path."
|
13
|
-
raise
|
3
|
+
def self.resource(resource)
|
4
|
+
if not resource
|
5
|
+
raise InvalidResource, "The #{ self.name } class has not defined any resource path."
|
6
|
+
elsif resource.include? ' '
|
7
|
+
raise InvalidResource, 'No spaces allowed on a resource'
|
14
8
|
end
|
15
|
-
end
|
16
9
|
|
17
|
-
|
18
|
-
last_resource_rexp = /\/:(.\w+)$/
|
19
|
-
resource_keys = /(?<=:)(.\w+)/
|
20
|
-
|
21
|
-
one = @resource.gsub(last_resource_rexp).count == 0
|
22
|
-
|
23
|
-
if args.empty?
|
24
|
-
matched = @resource.gsub(last_resource_rexp, "")
|
25
|
-
else
|
26
|
-
s_args = Hash[args.map{ |k, v| [k.to_s, v] }]
|
27
|
-
matched = @resource.gsub(resource_keys, s_args)
|
28
|
-
matched.gsub!(/:/ , "")
|
29
|
-
matched.gsub!(/\/$/ , "")
|
30
|
-
end
|
31
|
-
|
32
|
-
remaining = matched.gsub(resource_keys).count
|
33
|
-
|
34
|
-
if remaining != 0
|
35
|
-
warn "Missing arguments for #{ self.name } class resource path: #{ matched }."
|
36
|
-
raise
|
37
|
-
end
|
38
|
-
|
39
|
-
matched
|
10
|
+
@resource = resource
|
40
11
|
end
|
41
12
|
|
13
|
+
def self.path(params={})
|
14
|
+
path = (ParamsParser.new @resource, params).perform
|
15
|
+
"#{ path }.json"
|
16
|
+
end
|
42
17
|
end
|
43
18
|
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
module Eventick
|
2
|
+
class ParamsParser
|
3
|
+
RESOURCE_KEYS = /(?<=:)(.\w+)/
|
4
|
+
LAST_RESOURCE_REGEX = /\/:(.\w+)$/
|
5
|
+
|
6
|
+
def initialize(resource, params={})
|
7
|
+
@resource = resource
|
8
|
+
@params = params
|
9
|
+
|
10
|
+
def @params.with_stringified_keys
|
11
|
+
Hash[self.map{ |k, v| [k.to_s, v] }]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def perform
|
16
|
+
if missing_arguments
|
17
|
+
raise UnmatchableParams, "Missing arguments: #{missing_arguments}."
|
18
|
+
end
|
19
|
+
|
20
|
+
if @params.empty?
|
21
|
+
@resource.gsub(LAST_RESOURCE_REGEX, "")
|
22
|
+
else
|
23
|
+
stringified_hash = @params.with_stringified_keys
|
24
|
+
replace_resource_fields stringified_hash
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
def missing_arguments
|
30
|
+
if (missing = (params_needed - available_params)).length > 1
|
31
|
+
@missing_arguments = missing
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def params_needed
|
36
|
+
@params_needed ||= @resource.scan(RESOURCE_KEYS).flatten
|
37
|
+
end
|
38
|
+
|
39
|
+
def available_params
|
40
|
+
@params.with_stringified_keys.keys.flatten
|
41
|
+
end
|
42
|
+
|
43
|
+
def replace_resource_fields(stringified_hash)
|
44
|
+
result = @resource.gsub(RESOURCE_KEYS, stringified_hash)
|
45
|
+
result.gsub(/:/ , '').gsub(/\/$/ , '')
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
data/lib/eventick/version.rb
CHANGED
data/test/eventick/auth_test.rb
CHANGED
@@ -0,0 +1,32 @@
|
|
1
|
+
require_relative '../test_helper'
|
2
|
+
|
3
|
+
module Eventick
|
4
|
+
describe Base do
|
5
|
+
describe '.resource' do
|
6
|
+
it 'should not allow an empty resource' do
|
7
|
+
lambda {Base.resource nil}.must_raise InvalidResource
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'should not allow a resource with white spaces' do
|
11
|
+
lambda {Base.resource 'with spaces'}.must_raise InvalidResource
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
describe '.path' do
|
16
|
+
it 'with blank args' do
|
17
|
+
Base.resource 'some_resource_page'
|
18
|
+
Base.path.must_equal 'some_resource_page.json'
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'single resource path without param' do
|
22
|
+
Base.resource 'some_route/:id'
|
23
|
+
Base.path.must_equal 'some_route.json'
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'single resource path with param' do
|
27
|
+
Base.resource 'some_route/:id'
|
28
|
+
(Base.path id: 13).must_equal 'some_route/13.json'
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
data/test/eventick/event_test.rb
CHANGED
@@ -0,0 +1,30 @@
|
|
1
|
+
require_relative '../test_helper'
|
2
|
+
|
3
|
+
module Eventick
|
4
|
+
describe ParamsParser do
|
5
|
+
describe '#perform' do
|
6
|
+
it 'simple route' do
|
7
|
+
parser = ParamsParser.new 'some_resource'
|
8
|
+
parser.perform.must_equal 'some_resource'
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'single param route' do
|
12
|
+
parser = ParamsParser.new 'some_resource/:id', id: 50
|
13
|
+
parser.perform.must_equal 'some_resource/50'
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'double params route' do
|
17
|
+
parser = ParamsParser.new(
|
18
|
+
'some_resource/:id/something/:another_id',
|
19
|
+
id: 50, another_id: 9
|
20
|
+
)
|
21
|
+
parser.perform.must_equal 'some_resource/50/something/9'
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'double params route without params' do
|
25
|
+
parser = ParamsParser.new 'some_resource/:id/something/:another_id'
|
26
|
+
lambda {parser.perform}.must_raise UnmatchableParams
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
data/test/test_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: eventick_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lukas Alexandre
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-08-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: json
|
@@ -39,20 +39,6 @@ dependencies:
|
|
39
39
|
- - '>='
|
40
40
|
- !ruby/object:Gem::Version
|
41
41
|
version: '0'
|
42
|
-
- !ruby/object:Gem::Dependency
|
43
|
-
name: turn
|
44
|
-
requirement: !ruby/object:Gem::Requirement
|
45
|
-
requirements:
|
46
|
-
- - '>='
|
47
|
-
- !ruby/object:Gem::Version
|
48
|
-
version: '0'
|
49
|
-
type: :development
|
50
|
-
prerelease: false
|
51
|
-
version_requirements: !ruby/object:Gem::Requirement
|
52
|
-
requirements:
|
53
|
-
- - '>='
|
54
|
-
- !ruby/object:Gem::Version
|
55
|
-
version: '0'
|
56
42
|
- !ruby/object:Gem::Dependency
|
57
43
|
name: guard-minitest
|
58
44
|
requirement: !ruby/object:Gem::Requirement
|
@@ -134,13 +120,17 @@ files:
|
|
134
120
|
- lib/eventick/base.rb
|
135
121
|
- lib/eventick/checkin.rb
|
136
122
|
- lib/eventick/event.rb
|
123
|
+
- lib/eventick/exceptions.rb
|
124
|
+
- lib/eventick/params_parser.rb
|
137
125
|
- lib/eventick/ticket.rb
|
138
126
|
- lib/eventick/version.rb
|
139
127
|
- test/eventick/attendee_test.rb
|
140
128
|
- test/eventick/auth_test.rb
|
129
|
+
- test/eventick/base_test.rb
|
141
130
|
- test/eventick/checkin_test.rb
|
142
131
|
- test/eventick/event_test.rb
|
143
132
|
- test/eventick/eventick_test.rb
|
133
|
+
- test/eventick/params_parser_test.rb
|
144
134
|
- test/eventick/ticket_test.rb
|
145
135
|
- test/fixtures/attendee.json
|
146
136
|
- test/fixtures/attendees.json
|
@@ -169,16 +159,18 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
169
159
|
version: '0'
|
170
160
|
requirements: []
|
171
161
|
rubyforge_project:
|
172
|
-
rubygems_version: 2.0.
|
162
|
+
rubygems_version: 2.0.3
|
173
163
|
signing_key:
|
174
164
|
specification_version: 4
|
175
165
|
summary: Eventick is a simple API wrapper for Eventick's public API.
|
176
166
|
test_files:
|
177
167
|
- test/eventick/attendee_test.rb
|
178
168
|
- test/eventick/auth_test.rb
|
169
|
+
- test/eventick/base_test.rb
|
179
170
|
- test/eventick/checkin_test.rb
|
180
171
|
- test/eventick/event_test.rb
|
181
172
|
- test/eventick/eventick_test.rb
|
173
|
+
- test/eventick/params_parser_test.rb
|
182
174
|
- test/eventick/ticket_test.rb
|
183
175
|
- test/fixtures/attendee.json
|
184
176
|
- test/fixtures/attendees.json
|