amiando 0.2.1 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +2 -2
- data/lib/amiando.rb +3 -1
- data/lib/amiando/api_key.rb +4 -4
- data/lib/amiando/event.rb +18 -25
- data/lib/amiando/partner.rb +61 -0
- data/lib/amiando/payment_type.rb +21 -19
- data/lib/amiando/result.rb +7 -2
- data/lib/amiando/ticket_category.rb +1 -9
- data/lib/amiando/ticket_shop.rb +4 -4
- data/lib/amiando/user.rb +9 -17
- data/lib/amiando/version.rb +1 -1
- data/test/amiando/partner_test.rb +88 -0
- data/test/amiando/result_test.rb +21 -4
- data/test/fixtures/Partner/4c0d42e25385bd19dcd23ac6eb54e1b1.yml +60 -0
- data/test/fixtures/Partner/5e3854e2f75644d8c9ad96b2f2c8e99e.yml +60 -0
- data/test/fixtures/Partner/747677b363e6a293b03e595720198acc.yml +60 -0
- data/test/fixtures/Partner/8ff43b903f2fce232c4a8f474535f5f2.yml +60 -0
- data/test/fixtures/Partner/95847aabc64e82207598dfb3713aeb1d.yml +60 -0
- data/test/fixtures/Partner/96ba2e2a20658489c293f8e6fd40769f.yml +60 -0
- data/test/fixtures/Partner/a63f6645159716c7a3aed70a709ab1f5.yml +60 -0
- data/test/fixtures/Partner/bb1598ae00570e3f2105e52d46fdeddb.yml +62 -0
- data/test/fixtures/Partner/be195130e35fce014dc79b3d01faf0ce.yml +60 -0
- data/test/fixtures/Partner/c4b55b119a1c8e2a934d885a7b2b8893.yml +60 -0
- data/test/fixtures/Partner/d231fa05c126b735f0140a5b8ef09524.yml +60 -0
- data/test/fixtures/Partner/d7a2df10157c42d67020bebd23916122.yml +60 -0
- data/test/fixtures/Partner/e5a99733d043545c90f6eab130328e46.yml +60 -0
- data/test/fixtures/Partner/f066cd0f963e3c873e7eae28d2f654a4.yml +60 -0
- metadata +35 -4
data/README.md
CHANGED
@@ -34,8 +34,8 @@ first_name instead of firstName.
|
|
34
34
|
The full amiando API isn't fully implemented yet, however you can find here the
|
35
35
|
ones currently available.
|
36
36
|
|
37
|
-
* [ApiKey](http://rdoc.info/github/xing/amiando/master/Amiando/
|
38
|
-
* Partner
|
37
|
+
* [ApiKey](http://rdoc.info/github/xing/amiando/master/Amiando/ApiKey)
|
38
|
+
* [Partner](http://rdoc.info/github/xing/amiando/master/Amiando/Partner)
|
39
39
|
* [User](http://rdoc.info/github/xing/amiando/master/Amiando/User) (some methods
|
40
40
|
still missing)
|
41
41
|
* [Event](http://rdoc.info/github/xing/amiando/master/Amiando/Event)
|
data/lib/amiando.rb
CHANGED
@@ -7,13 +7,15 @@ module Amiando
|
|
7
7
|
autoload :Resource, 'amiando/resource'
|
8
8
|
autoload :Boolean, 'amiando/boolean'
|
9
9
|
autoload :Result, 'amiando/result'
|
10
|
+
autoload :Autorun, 'amiando/autorun'
|
11
|
+
|
10
12
|
autoload :ApiKey, 'amiando/api_key'
|
11
13
|
autoload :User, 'amiando/user'
|
14
|
+
autoload :Partner, 'amiando/partner'
|
12
15
|
autoload :Event, 'amiando/event'
|
13
16
|
autoload :TicketCategory, 'amiando/ticket_category'
|
14
17
|
autoload :TicketShop, 'amiando/ticket_shop'
|
15
18
|
autoload :PaymentType, 'amiando/payment_type'
|
16
|
-
autoload :Autorun, 'amiando/autorun'
|
17
19
|
|
18
20
|
module Error
|
19
21
|
class ServiceDown < Exception; end
|
data/lib/amiando/api_key.rb
CHANGED
@@ -11,8 +11,8 @@ module Amiando
|
|
11
11
|
def self.create(attributes)
|
12
12
|
raise ArgumentError.new('ApiKey name field is mandatory') unless attributes[:name]
|
13
13
|
|
14
|
-
object
|
15
|
-
|
14
|
+
object = new
|
15
|
+
post object, '/api/apiKey/create', :params => attributes
|
16
16
|
|
17
17
|
object
|
18
18
|
end
|
@@ -22,8 +22,8 @@ module Amiando
|
|
22
22
|
#
|
23
23
|
# @param [Hash] possible attributes that can be updated.
|
24
24
|
def self.update(id, attributes)
|
25
|
-
object
|
26
|
-
|
25
|
+
object = Boolean.new(:success)
|
26
|
+
post object, "/api/apiKey/#{id}", :params => attributes
|
27
27
|
|
28
28
|
object
|
29
29
|
end
|
data/lib/amiando/event.rb
CHANGED
@@ -23,8 +23,8 @@ module Amiando
|
|
23
23
|
# @return [Event] will not return the full event and only the id attribute
|
24
24
|
# will be available.
|
25
25
|
def self.create(attributes)
|
26
|
-
object
|
27
|
-
|
26
|
+
object = new
|
27
|
+
post object, '/api/event/create',
|
28
28
|
:params => map_params(attributes),
|
29
29
|
:populate_method => :populate_create
|
30
30
|
|
@@ -36,13 +36,8 @@ module Amiando
|
|
36
36
|
#
|
37
37
|
# @return [Boolean] if it was successful or not.
|
38
38
|
def self.update(id, attributes)
|
39
|
-
object = Result.new
|
40
|
-
|
41
|
-
result.errors = response_body['errors']
|
42
|
-
end
|
43
|
-
response_body['success']
|
44
|
-
end
|
45
|
-
request = post object, "/api/event/#{id}", :params => map_params(attributes)
|
39
|
+
object = Result.new
|
40
|
+
post object, "/api/event/#{id}", :params => map_params(attributes)
|
46
41
|
|
47
42
|
object
|
48
43
|
end
|
@@ -50,8 +45,8 @@ module Amiando
|
|
50
45
|
##
|
51
46
|
# Fetch an event
|
52
47
|
def self.find(id)
|
53
|
-
object
|
54
|
-
|
48
|
+
object = new
|
49
|
+
get object, "/api/event/#{id}"
|
55
50
|
|
56
51
|
object
|
57
52
|
end
|
@@ -59,9 +54,8 @@ module Amiando
|
|
59
54
|
##
|
60
55
|
# See if an event id exists
|
61
56
|
def self.exists?(identifier)
|
62
|
-
object
|
63
|
-
|
64
|
-
:params => { :identifier => identifier }
|
57
|
+
object = Boolean.new('exists')
|
58
|
+
get object, "api/event/exists", :params => { :identifier => identifier }
|
65
59
|
|
66
60
|
object
|
67
61
|
end
|
@@ -74,7 +68,7 @@ module Amiando
|
|
74
68
|
# @return [Boolean] with the result of the operation
|
75
69
|
def self.delete(id)
|
76
70
|
object = Boolean.new('deleted')
|
77
|
-
|
71
|
+
do_request object, :delete, "/api/event/#{id}"
|
78
72
|
|
79
73
|
object
|
80
74
|
end
|
@@ -86,13 +80,8 @@ module Amiando
|
|
86
80
|
#
|
87
81
|
# @return [Result] if it was activated or not.
|
88
82
|
def self.activate(id)
|
89
|
-
object = Result.new
|
90
|
-
|
91
|
-
result.errors = response_body['errors']
|
92
|
-
end
|
93
|
-
response_body['success']
|
94
|
-
end
|
95
|
-
request = post object, "/api/event/#{id}/activate"
|
83
|
+
object = Result.new
|
84
|
+
post object, "/api/event/#{id}/activate"
|
96
85
|
|
97
86
|
object
|
98
87
|
end
|
@@ -108,17 +97,21 @@ module Amiando
|
|
108
97
|
raise ArgumentError.new('Events can be searched either by identifier or by title, include only one.')
|
109
98
|
end
|
110
99
|
|
111
|
-
object
|
112
|
-
|
100
|
+
object = Result.new { |response_body| response_body['ids'] }
|
101
|
+
get object, '/api/event/find', :params => by
|
113
102
|
|
114
103
|
object
|
115
104
|
end
|
116
105
|
|
106
|
+
##
|
107
|
+
# @param user id
|
108
|
+
#
|
109
|
+
# @return [Result] with a list of the event ids by this user
|
117
110
|
def self.find_all_by_user_id(user_id)
|
118
111
|
object = Result.new do |response_body|
|
119
112
|
response_body['events']
|
120
113
|
end
|
121
|
-
|
114
|
+
get object, "/api/user/#{user_id}/events"
|
122
115
|
object
|
123
116
|
end
|
124
117
|
|
@@ -0,0 +1,61 @@
|
|
1
|
+
module Amiando
|
2
|
+
|
3
|
+
##
|
4
|
+
# http://developers.amiando.com/index.php/REST_API_Partner
|
5
|
+
class Partner < Resource
|
6
|
+
map :admin_id, :adminId
|
7
|
+
map :default_country, :defaultCountry
|
8
|
+
map :menu_css_url, :menuCssUrl
|
9
|
+
map :ticket_shop_css_url, :ticketShopCssUrl
|
10
|
+
map :sso_callback, :ssoCallback
|
11
|
+
map :referrer_partner_id, :referrerPartnerId
|
12
|
+
|
13
|
+
##
|
14
|
+
# Creates a partner.
|
15
|
+
#
|
16
|
+
# @param [Hash] attributes
|
17
|
+
#
|
18
|
+
# @return [Partner] but will only have the id loaded
|
19
|
+
def self.create(attributes)
|
20
|
+
object = new
|
21
|
+
post object, '/api/partner/create',
|
22
|
+
:params => map_params(attributes),
|
23
|
+
:populate_method => :populate_create
|
24
|
+
|
25
|
+
object
|
26
|
+
end
|
27
|
+
|
28
|
+
##
|
29
|
+
# Updates the partner.
|
30
|
+
#
|
31
|
+
# @param the internal id of the partner to update.
|
32
|
+
# @param [Hash] attributes
|
33
|
+
#
|
34
|
+
# @return [Result] saying if the update was successful
|
35
|
+
def self.update(id, attributes)
|
36
|
+
object = Result.new
|
37
|
+
post object, "/api/partner/#{id}", :params => map_params(attributes)
|
38
|
+
|
39
|
+
object
|
40
|
+
end
|
41
|
+
|
42
|
+
##
|
43
|
+
# @param id of the partner
|
44
|
+
#
|
45
|
+
# @return [Partner] the partner with that id
|
46
|
+
def self.find(id)
|
47
|
+
object = new
|
48
|
+
get object, "/api/partner/#{id}"
|
49
|
+
|
50
|
+
object
|
51
|
+
end
|
52
|
+
|
53
|
+
private
|
54
|
+
|
55
|
+
def populate(response_body)
|
56
|
+
extract_attributes_from(response_body, 'partner')
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
|
data/lib/amiando/payment_type.rb
CHANGED
@@ -1,23 +1,21 @@
|
|
1
1
|
module Amiando
|
2
2
|
class PaymentType < Resource
|
3
3
|
|
4
|
-
# /event/{id}/paymentTypes <-- all paymentTypes of the event
|
5
|
-
# /event/{id}/paymentType/create <-- creating a new paymentType
|
6
|
-
# /paymentType/{id} <-- returns the paymentType (used for udpates etc)
|
7
|
-
|
8
|
-
# PaymentType has just the following three variables:
|
9
|
-
|
10
|
-
# Id
|
11
|
-
# Type (String of the following: {PAYMENT_TYPE_ELV, PAYMENT_TYPE_CC, PAYMENT_TYPE_INVOICE, PAYMENT_TYPE_PREPAYMENT, PAYMENT_TYPE_PP, PAYMENT_TYPE_ONLOCATION}) [CC = CreditCard, PP = PayPal]
|
12
|
-
# Active (boolean)
|
13
4
|
##
|
14
5
|
# Create a payment type for an event
|
15
6
|
#
|
16
7
|
# @param event id
|
17
|
-
# @param
|
18
|
-
# PAYMENT_TYPE_ELV
|
19
|
-
#
|
20
|
-
#
|
8
|
+
# @param string or symbol of the following:
|
9
|
+
# * PAYMENT_TYPE_ELV
|
10
|
+
# * PAYMENT_TYPE_CC
|
11
|
+
# * PAYMENT_TYPE_INVOICE
|
12
|
+
# * PAYMENT_TYPE_PREPAYMENT
|
13
|
+
# * PAYMENT_TYPE_PP
|
14
|
+
# * PAYMENT_TYPE_ONLOCATION
|
15
|
+
#
|
16
|
+
# [CC = CreditCard, PP = PayPal]
|
17
|
+
#
|
18
|
+
# It will also accept :cc, :invoice, etc and convert them appropriately
|
21
19
|
#
|
22
20
|
def self.create(event_id, type)
|
23
21
|
unless type =~ /payment_type_\w+/i
|
@@ -25,12 +23,8 @@ module Amiando
|
|
25
23
|
end
|
26
24
|
|
27
25
|
object = Result.new do |response_body, result|
|
28
|
-
|
29
|
-
|
30
|
-
else
|
31
|
-
result.errors = response_body['errors']
|
32
|
-
false
|
33
|
-
end
|
26
|
+
result.errors = response_body['errors']
|
27
|
+
response_body['id'] || false
|
34
28
|
end
|
35
29
|
|
36
30
|
post object, "api/event/#{event_id}/paymentType/create", :params => { :type => type.upcase }
|
@@ -38,6 +32,10 @@ module Amiando
|
|
38
32
|
object
|
39
33
|
end
|
40
34
|
|
35
|
+
##
|
36
|
+
# @param event id
|
37
|
+
#
|
38
|
+
# @return [Result] with the list of payment types for that event.
|
41
39
|
def self.find_all_by_event_id(event_id)
|
42
40
|
object = Result.new do |response_body, result|
|
43
41
|
if response_body['success']
|
@@ -55,6 +53,10 @@ module Amiando
|
|
55
53
|
object
|
56
54
|
end
|
57
55
|
|
56
|
+
##
|
57
|
+
# @param payment type id
|
58
|
+
#
|
59
|
+
# @return [PaymentType] the payment type with that id
|
58
60
|
def self.find(payment_type_id)
|
59
61
|
object = new
|
60
62
|
|
data/lib/amiando/result.rb
CHANGED
@@ -10,12 +10,16 @@ module Amiando
|
|
10
10
|
class Result
|
11
11
|
include Amiando::Autorun
|
12
12
|
|
13
|
-
attr_accessor :request, :response, :errors
|
13
|
+
attr_accessor :request, :response, :errors, :success
|
14
14
|
|
15
|
-
autorun :request, :response, :result, :errors
|
15
|
+
autorun :request, :response, :result, :errors, :success
|
16
16
|
|
17
17
|
def initialize(&block)
|
18
18
|
@populator = block
|
19
|
+
@populator ||= Proc.new do |response_body, result|
|
20
|
+
result.errors = response_body['errors']
|
21
|
+
response_body['success']
|
22
|
+
end
|
19
23
|
end
|
20
24
|
|
21
25
|
def populate(response_body)
|
@@ -24,6 +28,7 @@ module Amiando
|
|
24
28
|
elsif @populator.arity == 2
|
25
29
|
@result = @populator.call(response_body, self)
|
26
30
|
end
|
31
|
+
@success = response_body['success']
|
27
32
|
end
|
28
33
|
end
|
29
34
|
end
|
@@ -35,15 +35,7 @@ module Amiando
|
|
35
35
|
#
|
36
36
|
# @param [Hash] attributes
|
37
37
|
def self.update(ticket_category_id, attributes)
|
38
|
-
object = Result.new
|
39
|
-
if response_body['success']
|
40
|
-
true
|
41
|
-
else
|
42
|
-
result.errors = response_body['errors']
|
43
|
-
false
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
38
|
+
object = Result.new
|
47
39
|
post object, "api/ticketCategory/#{ticket_category_id}", :params => attributes
|
48
40
|
|
49
41
|
object
|
data/lib/amiando/ticket_shop.rb
CHANGED
@@ -34,8 +34,8 @@ module Amiando
|
|
34
34
|
#
|
35
35
|
# @return [TicektShop] the event's ticketshop
|
36
36
|
def self.find(event_id)
|
37
|
-
object
|
38
|
-
|
37
|
+
object = new
|
38
|
+
get object, "api/event/#{event_id}/ticketShop"
|
39
39
|
|
40
40
|
object
|
41
41
|
end
|
@@ -47,8 +47,8 @@ module Amiando
|
|
47
47
|
#
|
48
48
|
# @return [Boolean] deferred object indicating the result of the update.
|
49
49
|
def self.update(event_id, attributes)
|
50
|
-
object
|
51
|
-
|
50
|
+
object = Boolean.new('success')
|
51
|
+
post object, "/api/event/#{event_id}/ticketShop", :params => map_params(attributes)
|
52
52
|
|
53
53
|
object
|
54
54
|
end
|
data/lib/amiando/user.rb
CHANGED
@@ -12,7 +12,7 @@ module Amiando
|
|
12
12
|
# @param [String] username
|
13
13
|
def self.exists?(username)
|
14
14
|
object = Boolean.new('exists')
|
15
|
-
|
15
|
+
get object, "api/user/exists",
|
16
16
|
:params => { :username => username }
|
17
17
|
|
18
18
|
object
|
@@ -28,7 +28,7 @@ module Amiando
|
|
28
28
|
response_body['ids'].first
|
29
29
|
end
|
30
30
|
|
31
|
-
|
31
|
+
get object, "api/user/find",
|
32
32
|
:params => { :username => username }
|
33
33
|
|
34
34
|
object
|
@@ -41,7 +41,7 @@ module Amiando
|
|
41
41
|
# @param [Hash] attributes
|
42
42
|
def self.create(attributes)
|
43
43
|
object = new
|
44
|
-
|
44
|
+
post object, '/api/user/create',
|
45
45
|
:params => map_params(attributes),
|
46
46
|
:populate_method => :populate_create
|
47
47
|
|
@@ -56,7 +56,7 @@ module Amiando
|
|
56
56
|
# @param [String] username
|
57
57
|
def self.update(user_id, attributes)
|
58
58
|
object = Boolean.new('success')
|
59
|
-
|
59
|
+
post object, "/api/user/#{user_id}", :params => map_params(attributes)
|
60
60
|
|
61
61
|
object
|
62
62
|
end
|
@@ -68,7 +68,7 @@ module Amiando
|
|
68
68
|
# @param user_id
|
69
69
|
def self.find(user_id)
|
70
70
|
object = new
|
71
|
-
|
71
|
+
get object, "api/user/#{user_id}"
|
72
72
|
|
73
73
|
object
|
74
74
|
end
|
@@ -80,7 +80,7 @@ module Amiando
|
|
80
80
|
# @param user_id
|
81
81
|
def self.delete(user_id)
|
82
82
|
object = Boolean.new('deleted')
|
83
|
-
|
83
|
+
do_request object, :delete, "/api/user/#{user_id}"
|
84
84
|
|
85
85
|
object
|
86
86
|
end
|
@@ -90,16 +90,8 @@ module Amiando
|
|
90
90
|
# @param user_id
|
91
91
|
# @param [String] password
|
92
92
|
def self.request_permission(user_id, password)
|
93
|
-
object
|
94
|
-
|
95
|
-
true
|
96
|
-
else
|
97
|
-
result.errors = response_body['errors']
|
98
|
-
false
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
request = post object, "api/user/#{user_id}/requestPermission", :params => { :password => password }
|
93
|
+
object = Result.new
|
94
|
+
post object, "api/user/#{user_id}/requestPermission", :params => { :password => password }
|
103
95
|
|
104
96
|
object
|
105
97
|
end
|
@@ -111,7 +103,7 @@ module Amiando
|
|
111
103
|
# @param user_id
|
112
104
|
def self.logout(user_id)
|
113
105
|
object = Boolean.new('success')
|
114
|
-
|
106
|
+
post object, "/api/user/#{user_id}/logout"
|
115
107
|
|
116
108
|
object
|
117
109
|
end
|
data/lib/amiando/version.rb
CHANGED
@@ -0,0 +1,88 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
describe Amiando::Partner do
|
4
|
+
before do
|
5
|
+
HydraCache.prefix = 'Partner'
|
6
|
+
end
|
7
|
+
|
8
|
+
after do
|
9
|
+
HydraCache.prefix = nil
|
10
|
+
end
|
11
|
+
|
12
|
+
describe 'create' do
|
13
|
+
it 'creates a partner successfully' do
|
14
|
+
api_key = Amiando::Factory.create(:api_key, :name => "partner-create-#{HydraCache.revision}")
|
15
|
+
Amiando.with_key api_key.key do
|
16
|
+
username = "partner_create-#{HydraCache.revision}@example.com"
|
17
|
+
user = Amiando::Factory.create(:user, :username => username)
|
18
|
+
partner = Amiando::Partner.create(
|
19
|
+
:admin_id => user.id,
|
20
|
+
:name => "Partner name",
|
21
|
+
:language => "en",
|
22
|
+
:default_country => "ES"
|
23
|
+
)
|
24
|
+
Amiando.run
|
25
|
+
|
26
|
+
partner.id.wont_be_nil
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'handles errors' do
|
31
|
+
partner = Amiando::Partner.create(
|
32
|
+
:admin_id => nil,
|
33
|
+
:name => "Partner name",
|
34
|
+
:language => "en",
|
35
|
+
:default_country => "ES"
|
36
|
+
)
|
37
|
+
Amiando.run
|
38
|
+
|
39
|
+
partner.errors.wont_be_empty
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
describe 'update' do
|
44
|
+
it 'updates the object' do
|
45
|
+
api_key = Amiando::Factory.create(:api_key, :name => "partner-update-#{HydraCache.revision}")
|
46
|
+
Amiando.with_key api_key.key do
|
47
|
+
username = "partner_update-#{HydraCache.revision}@example.com"
|
48
|
+
user = Amiando::Factory.create(:user, :username => username)
|
49
|
+
partner = Amiando::Partner.create(
|
50
|
+
:admin_id => user.id,
|
51
|
+
:name => "Partner name",
|
52
|
+
:language => "en",
|
53
|
+
:default_country => "ES"
|
54
|
+
)
|
55
|
+
Amiando.run
|
56
|
+
|
57
|
+
update = Amiando::Partner.update(partner.id, :name => 'wadus')
|
58
|
+
Amiando.run
|
59
|
+
|
60
|
+
update.result.must_equal true
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
describe 'find' do
|
66
|
+
it 'finds the object' do
|
67
|
+
api_key = Amiando::Factory.create(:api_key, :name => "partner-find-#{HydraCache.revision}")
|
68
|
+
Amiando.with_key api_key.key do
|
69
|
+
username = "partner_find-#{HydraCache.revision}@example.com"
|
70
|
+
user = Amiando::Factory.create(:user, :username => username)
|
71
|
+
partner = Amiando::Partner.create(
|
72
|
+
:admin_id => user.id,
|
73
|
+
:name => "to be found",
|
74
|
+
:language => "en",
|
75
|
+
:default_country => "ES"
|
76
|
+
)
|
77
|
+
Amiando.run
|
78
|
+
|
79
|
+
found = Amiando::Partner.find(partner.id)
|
80
|
+
Amiando.run
|
81
|
+
|
82
|
+
found.must_equal partner
|
83
|
+
found.name.must_equal "to be found"
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
end
|