amiando 0.3.0 → 0.3.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.
- data/.gitignore +1 -0
- data/README.md +12 -1
- data/amiando.gemspec +1 -1
- data/lib/amiando.rb +12 -1
- data/lib/amiando/api_key.rb +8 -2
- data/lib/amiando/event.rb +20 -4
- data/lib/amiando/partner.rb +4 -4
- data/lib/amiando/payment_type.rb +8 -4
- data/lib/amiando/resource.rb +1 -1
- data/lib/amiando/ticket_category.rb +8 -3
- data/lib/amiando/ticket_shop.rb +3 -3
- data/lib/amiando/version.rb +1 -1
- metadata +5 -5
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -5,6 +5,17 @@ documentation here:
|
|
5
5
|
|
6
6
|
http://developers.amiando.com/index.php/REST_API
|
7
7
|
|
8
|
+
## Installation
|
9
|
+
|
10
|
+
Simply install with:
|
11
|
+
|
12
|
+
gem install amiando
|
13
|
+
|
14
|
+
To parse the json results we use the [multi_json](https://rubygems.org/gems/multi_json)
|
15
|
+
gem. We suggest that you add at least one fast json parsing library, like
|
16
|
+
[json](https://rubygems.org/gems/json) or [yajl-ruby](https://rubygems.org/gems/yajl-ruby).
|
17
|
+
Otherwise it will use `multi_json`'s bundled json parser.
|
18
|
+
|
8
19
|
## Basic usage
|
9
20
|
|
10
21
|
The gem has been implemented with the idea that requests can be done in
|
@@ -23,7 +34,7 @@ You can also do synchronous requests by prepending 'sync_' to the method name:
|
|
23
34
|
|
24
35
|
albert = Amiando::User.sync_find(1234)
|
25
36
|
|
26
|
-
###
|
37
|
+
### Notation
|
27
38
|
|
28
39
|
All attributes should be used in snake_case format instead of the CamelCase
|
29
40
|
used in the official documentation. For example, for a user, you should call
|
data/amiando.gemspec
CHANGED
data/lib/amiando.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require "amiando/version"
|
2
2
|
require "typhoeus"
|
3
|
-
require "
|
3
|
+
require "multi_json"
|
4
4
|
|
5
5
|
module Amiando
|
6
6
|
autoload :Request, 'amiando/request'
|
@@ -36,14 +36,17 @@ module Amiando
|
|
36
36
|
URL = 'https://amiando.com'
|
37
37
|
TEST_URL = 'https://test.amiando.com'
|
38
38
|
|
39
|
+
# Connect to the production server
|
39
40
|
def production!
|
40
41
|
@production = true
|
41
42
|
end
|
42
43
|
|
44
|
+
# Connect to the test server (default)
|
43
45
|
def development!
|
44
46
|
@production = false
|
45
47
|
end
|
46
48
|
|
49
|
+
# @return [String] the url for the environment
|
47
50
|
def base_url
|
48
51
|
@production ? URL : TEST_URL
|
49
52
|
end
|
@@ -52,6 +55,7 @@ module Amiando
|
|
52
55
|
@requests ||= []
|
53
56
|
end
|
54
57
|
|
58
|
+
# Runs all queued requests
|
55
59
|
def run
|
56
60
|
requests.each{ |request| hydra.queue(request) }
|
57
61
|
hydra.run
|
@@ -63,6 +67,12 @@ module Amiando
|
|
63
67
|
@hydra ||= Typhoeus::Hydra.new
|
64
68
|
end
|
65
69
|
|
70
|
+
##
|
71
|
+
# Allows to switch temporarily the API key
|
72
|
+
#
|
73
|
+
# @param [String] api API key
|
74
|
+
# @param [Block] block block to execute with the given key
|
75
|
+
# @return the result of the block
|
66
76
|
def with_key(key)
|
67
77
|
old_key = Amiando.api_key
|
68
78
|
Amiando.api_key = key
|
@@ -70,5 +80,6 @@ module Amiando
|
|
70
80
|
ensure
|
71
81
|
Amiando.api_key = old_key
|
72
82
|
end
|
83
|
+
|
73
84
|
end
|
74
85
|
end
|
data/lib/amiando/api_key.rb
CHANGED
@@ -7,7 +7,10 @@ module Amiando
|
|
7
7
|
##
|
8
8
|
# Creates an {ApiKey}.
|
9
9
|
#
|
10
|
-
# @param [Hash] possible attributes that can be set on creation.
|
10
|
+
# @param [Hash] attributes possible attributes that can be set on creation.
|
11
|
+
#
|
12
|
+
# @raise [ArgumentError] if no name provided in attributes
|
13
|
+
# @return [ApiKey]
|
11
14
|
def self.create(attributes)
|
12
15
|
raise ArgumentError.new('ApiKey name field is mandatory') unless attributes[:name]
|
13
16
|
|
@@ -20,7 +23,8 @@ module Amiando
|
|
20
23
|
##
|
21
24
|
# Updates an {ApiKey}.
|
22
25
|
#
|
23
|
-
# @param [Hash] possible attributes that can be updated.
|
26
|
+
# @param [Hash] attributes possible attributes that can be updated.
|
27
|
+
# @return [Boolean] the result value
|
24
28
|
def self.update(id, attributes)
|
25
29
|
object = Boolean.new(:success)
|
26
30
|
post object, "/api/apiKey/#{id}", :params => attributes
|
@@ -28,6 +32,8 @@ module Amiando
|
|
28
32
|
object
|
29
33
|
end
|
30
34
|
|
35
|
+
protected
|
36
|
+
|
31
37
|
def populate(response_body)
|
32
38
|
extract_attributes_from(response_body, 'apiKey')
|
33
39
|
end
|
data/lib/amiando/event.rb
CHANGED
@@ -20,6 +20,8 @@ module Amiando
|
|
20
20
|
##
|
21
21
|
# Creates an event.
|
22
22
|
#
|
23
|
+
# @param [Hash] attributes
|
24
|
+
#
|
23
25
|
# @return [Event] will not return the full event and only the id attribute
|
24
26
|
# will be available.
|
25
27
|
def self.create(attributes)
|
@@ -34,6 +36,9 @@ module Amiando
|
|
34
36
|
##
|
35
37
|
# Updates an event.
|
36
38
|
#
|
39
|
+
# @param id
|
40
|
+
# @param [Hash] attributes
|
41
|
+
#
|
37
42
|
# @return [Boolean] if it was successful or not.
|
38
43
|
def self.update(id, attributes)
|
39
44
|
object = Result.new
|
@@ -44,6 +49,10 @@ module Amiando
|
|
44
49
|
|
45
50
|
##
|
46
51
|
# Fetch an event
|
52
|
+
#
|
53
|
+
# @param id
|
54
|
+
#
|
55
|
+
# @return [Event]
|
47
56
|
def self.find(id)
|
48
57
|
object = new
|
49
58
|
get object, "/api/event/#{id}"
|
@@ -53,6 +62,10 @@ module Amiando
|
|
53
62
|
|
54
63
|
##
|
55
64
|
# See if an event id exists
|
65
|
+
#
|
66
|
+
# @param identifier
|
67
|
+
#
|
68
|
+
# @return [Boolean] if it exists or not
|
56
69
|
def self.exists?(identifier)
|
57
70
|
object = Boolean.new('exists')
|
58
71
|
get object, "api/event/exists", :params => { :identifier => identifier }
|
@@ -63,7 +76,7 @@ module Amiando
|
|
63
76
|
##
|
64
77
|
# Deletes an event
|
65
78
|
#
|
66
|
-
# @param [Integer] event id
|
79
|
+
# @param [Integer] id event id
|
67
80
|
#
|
68
81
|
# @return [Boolean] with the result of the operation
|
69
82
|
def self.delete(id)
|
@@ -76,7 +89,7 @@ module Amiando
|
|
76
89
|
##
|
77
90
|
# Activate an event
|
78
91
|
#
|
79
|
-
# @param [Integer]
|
92
|
+
# @param [Integer] id event id
|
80
93
|
#
|
81
94
|
# @return [Result] if it was activated or not.
|
82
95
|
def self.activate(id)
|
@@ -91,6 +104,7 @@ module Amiando
|
|
91
104
|
#
|
92
105
|
# @param [Hash] a hash with 1 entry, either :identifier or :title
|
93
106
|
#
|
107
|
+
# @raise [ArgumentError] if no identifier or title supplied, or if both present
|
94
108
|
# @return [Result] with an array of ids
|
95
109
|
def self.search(by)
|
96
110
|
unless by[:identifier].nil? ^ by[:title].nil? # XOR
|
@@ -104,7 +118,9 @@ module Amiando
|
|
104
118
|
end
|
105
119
|
|
106
120
|
##
|
107
|
-
#
|
121
|
+
# Find all events from a user
|
122
|
+
#
|
123
|
+
# @param user_id
|
108
124
|
#
|
109
125
|
# @return [Result] with a list of the event ids by this user
|
110
126
|
def self.find_all_by_user_id(user_id)
|
@@ -115,7 +131,7 @@ module Amiando
|
|
115
131
|
object
|
116
132
|
end
|
117
133
|
|
118
|
-
|
134
|
+
protected
|
119
135
|
|
120
136
|
def populate(response_body)
|
121
137
|
extract_attributes_from(response_body, 'event')
|
data/lib/amiando/partner.rb
CHANGED
@@ -28,7 +28,7 @@ module Amiando
|
|
28
28
|
##
|
29
29
|
# Updates the partner.
|
30
30
|
#
|
31
|
-
# @param the internal id of the partner to update.
|
31
|
+
# @param id the internal id of the partner to update.
|
32
32
|
# @param [Hash] attributes
|
33
33
|
#
|
34
34
|
# @return [Result] saying if the update was successful
|
@@ -40,7 +40,9 @@ module Amiando
|
|
40
40
|
end
|
41
41
|
|
42
42
|
##
|
43
|
-
#
|
43
|
+
# Find a partner
|
44
|
+
#
|
45
|
+
# @param id id of the partner
|
44
46
|
#
|
45
47
|
# @return [Partner] the partner with that id
|
46
48
|
def self.find(id)
|
@@ -57,5 +59,3 @@ module Amiando
|
|
57
59
|
end
|
58
60
|
end
|
59
61
|
end
|
60
|
-
|
61
|
-
|
data/lib/amiando/payment_type.rb
CHANGED
@@ -4,8 +4,8 @@ module Amiando
|
|
4
4
|
##
|
5
5
|
# Create a payment type for an event
|
6
6
|
#
|
7
|
-
# @param
|
8
|
-
# @param string or symbol of the following:
|
7
|
+
# @param event_id
|
8
|
+
# @param type string or symbol of the following:
|
9
9
|
# * PAYMENT_TYPE_ELV
|
10
10
|
# * PAYMENT_TYPE_CC
|
11
11
|
# * PAYMENT_TYPE_INVOICE
|
@@ -33,7 +33,9 @@ module Amiando
|
|
33
33
|
end
|
34
34
|
|
35
35
|
##
|
36
|
-
#
|
36
|
+
# Find all Payment Types of an event
|
37
|
+
#
|
38
|
+
# @param event_id
|
37
39
|
#
|
38
40
|
# @return [Result] with the list of payment types for that event.
|
39
41
|
def self.find_all_by_event_id(event_id)
|
@@ -54,7 +56,9 @@ module Amiando
|
|
54
56
|
end
|
55
57
|
|
56
58
|
##
|
57
|
-
#
|
59
|
+
# Find a Payment Type
|
60
|
+
#
|
61
|
+
# @param payment_type_id
|
58
62
|
#
|
59
63
|
# @return [PaymentType] the payment type with that id
|
60
64
|
def self.find(payment_type_id)
|
data/lib/amiando/resource.rb
CHANGED
@@ -73,7 +73,7 @@ module Amiando
|
|
73
73
|
raise Error::ServiceDown.new(response.body)
|
74
74
|
end
|
75
75
|
|
76
|
-
parsed_body =
|
76
|
+
parsed_body = MultiJson.decode(response.body)
|
77
77
|
|
78
78
|
if parsed_body['errors'] && parsed_body['errors'].include?('com.amiando.api.rest.MissingParam.apikey')
|
79
79
|
raise Error::MissingApiKey.new('This call requires an apikey')
|
@@ -21,6 +21,8 @@ module Amiando
|
|
21
21
|
#
|
22
22
|
# @param event_id
|
23
23
|
# @param [Hash] attributes
|
24
|
+
#
|
25
|
+
# @return [TicketCategory] only id or errors are set
|
24
26
|
def self.create(event_id, attributes)
|
25
27
|
object = new
|
26
28
|
post object, "api/event/#{event_id}/ticketCategory/create",
|
@@ -33,7 +35,10 @@ module Amiando
|
|
33
35
|
##
|
34
36
|
# Update a ticket_category
|
35
37
|
#
|
38
|
+
# @param ticket_category_id
|
36
39
|
# @param [Hash] attributes
|
40
|
+
#
|
41
|
+
# @return [Result] if it was succesful or not with possible errors
|
37
42
|
def self.update(ticket_category_id, attributes)
|
38
43
|
object = Result.new
|
39
44
|
post object, "api/ticketCategory/#{ticket_category_id}", :params => attributes
|
@@ -44,7 +49,7 @@ module Amiando
|
|
44
49
|
##
|
45
50
|
# Find a ticket category.
|
46
51
|
#
|
47
|
-
# @param
|
52
|
+
# @param ticket_category_id
|
48
53
|
#
|
49
54
|
# @return [TicketCategory]
|
50
55
|
def self.find(ticket_category_id)
|
@@ -55,7 +60,7 @@ module Amiando
|
|
55
60
|
end
|
56
61
|
|
57
62
|
##
|
58
|
-
# @param
|
63
|
+
# @param event_id
|
59
64
|
# @param [Symbol]
|
60
65
|
# :ids if you only want to fetch the ids.
|
61
66
|
# :full if you want the whole objects
|
@@ -82,7 +87,7 @@ module Amiando
|
|
82
87
|
object
|
83
88
|
end
|
84
89
|
|
85
|
-
|
90
|
+
protected
|
86
91
|
|
87
92
|
def populate(response_body)
|
88
93
|
extract_attributes_from(response_body, 'ticketCategory')
|
data/lib/amiando/ticket_shop.rb
CHANGED
@@ -43,7 +43,8 @@ module Amiando
|
|
43
43
|
##
|
44
44
|
# Updates the ticket shop.
|
45
45
|
#
|
46
|
-
# @param
|
46
|
+
# @param event_id
|
47
|
+
# @param [Hash] attributes
|
47
48
|
#
|
48
49
|
# @return [Boolean] deferred object indicating the result of the update.
|
49
50
|
def self.update(event_id, attributes)
|
@@ -53,8 +54,7 @@ module Amiando
|
|
53
54
|
object
|
54
55
|
end
|
55
56
|
|
56
|
-
|
57
|
-
private
|
57
|
+
protected
|
58
58
|
|
59
59
|
def populate(response_body)
|
60
60
|
extract_attributes_from(response_body, 'ticketShop')
|
data/lib/amiando/version.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: amiando
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 17
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 3
|
9
|
-
-
|
10
|
-
version: 0.3.
|
9
|
+
- 1
|
10
|
+
version: 0.3.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Jorge Dias
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2011-10-
|
19
|
+
date: 2011-10-28 00:00:00 +02:00
|
20
20
|
default_executable:
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
@@ -34,7 +34,7 @@ dependencies:
|
|
34
34
|
type: :runtime
|
35
35
|
version_requirements: *id001
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
|
-
name:
|
37
|
+
name: multi_json
|
38
38
|
prerelease: false
|
39
39
|
requirement: &id002 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|