amember_pro 0.1.1 → 0.2.0
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/README.md +26 -0
- data/lib/amember_pro.rb +3 -2
- data/lib/amember_pro/parameters.rb +119 -0
- data/lib/amember_pro/version.rb +1 -1
- metadata +3 -2
data/README.md
CHANGED
@@ -62,6 +62,32 @@ methods (by-login-pass, by-login, by-email) can be called:
|
|
62
62
|
|
63
63
|
Refer to this [document](http://www.amember.com/docs/REST) for all the parameters you can use
|
64
64
|
|
65
|
+
## Parameters And Nested Parameters
|
66
|
+
|
67
|
+
You can use the Parameters and Nested class, if you prefer constructing
|
68
|
+
parameters in Ruby way:
|
69
|
+
|
70
|
+
# ADDING AN INVOICE
|
71
|
+
|
72
|
+
# Create an invoice item parameters
|
73
|
+
invoice_item = AmemberPro::Parameters.new do |i|
|
74
|
+
i.item_id 20
|
75
|
+
i.item_title "My Product"
|
76
|
+
i.first_price 11.00
|
77
|
+
end
|
78
|
+
|
79
|
+
# Nest it
|
80
|
+
invoice_nested = AmemberPro::Parameters::Nested.new("invoice-items") do |inv|
|
81
|
+
inv << invoice_item
|
82
|
+
end
|
83
|
+
|
84
|
+
# Bind it to a user and call the add invoice api
|
85
|
+
invoice = AmemberPro::Parameters.new
|
86
|
+
invoice.user_id 140
|
87
|
+
invoice.nested invoice_nested
|
88
|
+
|
89
|
+
AmemberPro::Invoices.add invoice
|
90
|
+
|
65
91
|
## Contributing
|
66
92
|
|
67
93
|
1. Fork it ( http://github.com/pyodor/amember_pro/fork )
|
data/lib/amember_pro.rb
CHANGED
@@ -4,6 +4,7 @@ require "amember_pro/users"
|
|
4
4
|
require "amember_pro/invoices"
|
5
5
|
require "amember_pro/products"
|
6
6
|
require "amember_pro/check_access"
|
7
|
+
require "amember_pro/parameters"
|
7
8
|
|
8
9
|
module AmemberPro
|
9
10
|
END_POINT = 'api'
|
@@ -21,7 +22,7 @@ module AmemberPro
|
|
21
22
|
|
22
23
|
def connection(controller)
|
23
24
|
method = self.method
|
24
|
-
params = self.params
|
25
|
+
params = self.params.to_hash
|
25
26
|
api = "/#{self::END_POINT}/#{controller.to_s}"
|
26
27
|
|
27
28
|
if method == Method::PUT or method == Method::DELETE
|
@@ -30,7 +31,7 @@ module AmemberPro
|
|
30
31
|
|
31
32
|
params[:_key] = self.access_key
|
32
33
|
conn = Faraday.new(:url => self.url, :ssl => {:verify => false})
|
33
|
-
|
34
|
+
|
34
35
|
case method
|
35
36
|
when Method::GET
|
36
37
|
conn.get api, params
|
@@ -0,0 +1,119 @@
|
|
1
|
+
module AmemberPro
|
2
|
+
class Parameters
|
3
|
+
attr_accessor :parameters
|
4
|
+
attr_accessor :key
|
5
|
+
attr_accessor :value
|
6
|
+
attr_accessor :args
|
7
|
+
|
8
|
+
def method_missing method, *args
|
9
|
+
self.args = args
|
10
|
+
self.key = method.to_s
|
11
|
+
self.value = self.args[0]
|
12
|
+
|
13
|
+
case method
|
14
|
+
when :format
|
15
|
+
underscore_prefix
|
16
|
+
self.value ||= 'json'
|
17
|
+
when :count
|
18
|
+
underscore_prefix
|
19
|
+
self.value ||= '20'
|
20
|
+
when :page
|
21
|
+
underscore_prefix
|
22
|
+
self.value ||= '0'
|
23
|
+
when :filter
|
24
|
+
underscore_prefix
|
25
|
+
filterify
|
26
|
+
end
|
27
|
+
add self.key.to_s, self.value.to_s
|
28
|
+
end
|
29
|
+
|
30
|
+
def delete key
|
31
|
+
self.parameters.to_hash.delete(key.to_s)
|
32
|
+
end
|
33
|
+
|
34
|
+
def nested nest
|
35
|
+
unless nest.is_a? AmemberPro::Parameters::Nested
|
36
|
+
raise "Nest must be of type AmemberPro::Parameters::Nested"
|
37
|
+
end
|
38
|
+
self.parameters.merge!(nest.to_hash)
|
39
|
+
end
|
40
|
+
|
41
|
+
def underscore_prefix
|
42
|
+
self.key = self.key.insert(0, '_')
|
43
|
+
end
|
44
|
+
|
45
|
+
def initialize &block
|
46
|
+
self.parameters = Hash.new
|
47
|
+
self.instance_eval(&block) if block_given?
|
48
|
+
end
|
49
|
+
|
50
|
+
def add key, value
|
51
|
+
self.parameters[key.to_s] = value.to_s
|
52
|
+
self.parameters
|
53
|
+
end
|
54
|
+
|
55
|
+
def to_hash
|
56
|
+
self.to_s
|
57
|
+
end
|
58
|
+
|
59
|
+
def to_s
|
60
|
+
current_params
|
61
|
+
end
|
62
|
+
|
63
|
+
private
|
64
|
+
|
65
|
+
def filterify
|
66
|
+
fieldname = self.args[0]
|
67
|
+
self.key = "#{self.key}[#{fieldname}]"
|
68
|
+
self.value = args[1]
|
69
|
+
end
|
70
|
+
|
71
|
+
def current_params
|
72
|
+
self.parameters
|
73
|
+
end
|
74
|
+
|
75
|
+
|
76
|
+
class Nested
|
77
|
+
attr_accessor :nest
|
78
|
+
attr_accessor :args
|
79
|
+
attr_accessor :nested
|
80
|
+
|
81
|
+
def initialize nest, &block
|
82
|
+
self.nest = nest.to_s
|
83
|
+
self.args = []
|
84
|
+
self.instance_eval(&block) if block_given?
|
85
|
+
nestify
|
86
|
+
end
|
87
|
+
|
88
|
+
def << params
|
89
|
+
unless params.is_a? AmemberPro::Parameters
|
90
|
+
raise "params must be of type AmemberPro::Parameters"
|
91
|
+
end
|
92
|
+
self.args << params.to_hash
|
93
|
+
end
|
94
|
+
|
95
|
+
def to_hash
|
96
|
+
self.to_s
|
97
|
+
end
|
98
|
+
|
99
|
+
def to_s
|
100
|
+
self.nested
|
101
|
+
end
|
102
|
+
|
103
|
+
def nestify
|
104
|
+
self.nested = Hash.new
|
105
|
+
unless self.args.empty?
|
106
|
+
self.args.each_with_index do |arg, index|
|
107
|
+
n = "nested[#{self.nest}][#{index}]"
|
108
|
+
arg.each do |key,val|
|
109
|
+
k = "#{n}[#{key}]"
|
110
|
+
self.nested[k] = val
|
111
|
+
end
|
112
|
+
end
|
113
|
+
else
|
114
|
+
self.nested["_nested[]"] = self.nest
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
data/lib/amember_pro/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: amember_pro
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-07-
|
12
|
+
date: 2014-07-08 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -109,6 +109,7 @@ files:
|
|
109
109
|
- lib/amember_pro.rb
|
110
110
|
- lib/amember_pro/check_access.rb
|
111
111
|
- lib/amember_pro/invoices.rb
|
112
|
+
- lib/amember_pro/parameters.rb
|
112
113
|
- lib/amember_pro/products.rb
|
113
114
|
- lib/amember_pro/users.rb
|
114
115
|
- lib/amember_pro/version.rb
|