amember_pro 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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 )
@@ -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
@@ -1,3 +1,3 @@
1
1
  module AmemberPro
2
- VERSION = "0.1.1"
2
+ VERSION = "0.2.0"
3
3
  end
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.1.1
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-02 00:00:00.000000000 Z
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