mxhero-api 0.1.6 → 0.1.7

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/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.6
1
+ 0.1.7
data/lib/mxhero-api.rb CHANGED
@@ -196,8 +196,46 @@ module MxHero
196
196
  return false
197
197
  end
198
198
 
199
+ # @param [String] domain
200
+ # @param [String] account Ex.: test or mxhero (the user name)
201
+ # @return [MxHero::API::Response] reponse
202
+ # the key :msg contains a Hash with the key, value of any property.
203
+ # Example:
204
+ #
205
+ # { 'email': 'test@mxhero.com', 'name': 'John', 'lastname': 'Doe', ... }
206
+ #
207
+ def account_properties(domain, account)
208
+ url = account_properties_url(domain, account)
209
+ response = call(:get, url)
210
+ if response.status == 200
211
+ props = {}
212
+ json_parse(response.content).each { |property| props[property[:name]] = property[:value] }
213
+ return Response.new(response.code, props)
214
+ end
215
+ parse_response(response)
216
+ end
217
+
218
+ # @param [String] domain
219
+ # @param [String] account
220
+ # @param [Hash] properties The properties of the account. Ex.: { 'email': 'test@mxhero.com', 'name': 'John', 'lastname': 'Doe', ... }
221
+ #
222
+ # @return [MxHero::API::Response]. On success not return msg.
223
+ def update_account_properties(domain, account, properties)
224
+ url = account_properties_url(domain, account)
225
+ response = call(:put, url, account_properties_to_json(properties))
226
+ parse_response(response)
227
+ end
228
+
199
229
  private
200
230
 
231
+ def account_properties_to_json(properties)
232
+ out = []
233
+ properties.each do |key, value|
234
+ out << { name: key, value: value }
235
+ end
236
+ out.to_json
237
+ end
238
+
201
239
  # @return [MxHero::API::Response] a response object
202
240
  def parse_response(response, opts = { on_empty: nil })
203
241
  json = response.content
@@ -255,6 +293,10 @@ module MxHero
255
293
  rules_for_domain_url(domain) + "/#{id}"
256
294
  end
257
295
 
296
+ def account_properties_url(domain, account)
297
+ accounts_by_domain_url(domain) + "/#{account}/properties"
298
+ end
299
+
258
300
  def service_url
259
301
  @service_url
260
302
  end
data/mxhero-api.gemspec CHANGED
@@ -2,20 +2,20 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "mxhero-api"
5
- s.version = "0.1.6"
5
+ s.version = "0.1.7"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Maximiliano Dello Russo", "Juan Pablo Royo", "mxHero"]
9
- s.date = "2013-08-13"
9
+ s.date = "2013-08-14"
10
10
  s.description = "A gem to provide easy access to the API of MxHero platform (http://www.mxhero.com/)"
11
11
  s.email = ["maxidr@mxhero.com", "juanpablo.royo@gmail.com", "mxhero@mxhero.com"]
12
- s.files = [".gitignore", ".rvmrc", "Gemfile", "LICENSE.txt", "README.md", "Rakefile", "VERSION", "lib/mxhero-api.rb", "mxhero-api.gemspec", "test/fixtures/api/accounts_from_domain.yml", "test/fixtures/api/create_rule_alredy_exist.yml", "test/fixtures/api/create_rule_for_domain.yml", "test/fixtures/api/create_rule_success.yml", "test/fixtures/api/delete_rule.yml", "test/fixtures/api/domain_by_id.yml", "test/fixtures/api/domain_by_id_not_found.yml", "test/fixtures/api/domain_rule.yml", "test/fixtures/api/domains.yml", "test/fixtures/api/rules_for_domain.yml", "test/fixtures/api/update_rule.yml", "test/helper.rb", "test/test_mxhero_api.rb", "test/test_mxhero_api_response.rb"]
12
+ s.files = [".gitignore", ".rvmrc", "Gemfile", "LICENSE.txt", "README.md", "Rakefile", "VERSION", "lib/mxhero-api.rb", "mxhero-api.gemspec", "test/fixtures/api/account_properties.yml", "test/fixtures/api/account_properties_not_found.yml", "test/fixtures/api/accounts_from_domain.yml", "test/fixtures/api/create_rule_alredy_exist.yml", "test/fixtures/api/create_rule_for_domain.yml", "test/fixtures/api/create_rule_success.yml", "test/fixtures/api/delete_rule.yml", "test/fixtures/api/domain_by_id.yml", "test/fixtures/api/domain_by_id_not_found.yml", "test/fixtures/api/domain_rule.yml", "test/fixtures/api/domains.yml", "test/fixtures/api/rules_for_domain.yml", "test/fixtures/api/update_account_properties.yml", "test/fixtures/api/update_rule.yml", "test/helper.rb", "test/test_mxhero_api.rb", "test/test_mxhero_api_response.rb"]
13
13
  s.homepage = "http://github.com/mxhero/mxhero-api"
14
14
  s.licenses = ["GPL-3"]
15
15
  s.require_paths = ["lib"]
16
16
  s.rubygems_version = "1.8.25"
17
17
  s.summary = "A MxHero API client for ruby"
18
- s.test_files = ["test/fixtures/api/accounts_from_domain.yml", "test/fixtures/api/create_rule_alredy_exist.yml", "test/fixtures/api/create_rule_for_domain.yml", "test/fixtures/api/create_rule_success.yml", "test/fixtures/api/delete_rule.yml", "test/fixtures/api/domain_by_id.yml", "test/fixtures/api/domain_by_id_not_found.yml", "test/fixtures/api/domain_rule.yml", "test/fixtures/api/domains.yml", "test/fixtures/api/rules_for_domain.yml", "test/fixtures/api/update_rule.yml", "test/helper.rb", "test/test_mxhero_api.rb", "test/test_mxhero_api_response.rb"]
18
+ s.test_files = ["test/fixtures/api/account_properties.yml", "test/fixtures/api/account_properties_not_found.yml", "test/fixtures/api/accounts_from_domain.yml", "test/fixtures/api/create_rule_alredy_exist.yml", "test/fixtures/api/create_rule_for_domain.yml", "test/fixtures/api/create_rule_success.yml", "test/fixtures/api/delete_rule.yml", "test/fixtures/api/domain_by_id.yml", "test/fixtures/api/domain_by_id_not_found.yml", "test/fixtures/api/domain_rule.yml", "test/fixtures/api/domains.yml", "test/fixtures/api/rules_for_domain.yml", "test/fixtures/api/update_account_properties.yml", "test/fixtures/api/update_rule.yml", "test/helper.rb", "test/test_mxhero_api.rb", "test/test_mxhero_api_response.rb"]
19
19
 
20
20
  if s.respond_to? :specification_version then
21
21
  s.specification_version = 3
@@ -0,0 +1,42 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://admin:password@localhost:8080/webapi/api/v1/domains/tesla.com/accounts/test/properties
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - application/json
12
+ Content-Type:
13
+ - application/json
14
+ Authorization:
15
+ - Basic YWRtaW46cGFzc3dvcmQ=
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: !binary |-
20
+ T0s=
21
+ headers:
22
+ !binary "U2VydmVy":
23
+ - !binary |-
24
+ QXBhY2hlLUNveW90ZS8xLjE=
25
+ !binary "Q29udGVudC1UeXBl":
26
+ - !binary |-
27
+ YXBwbGljYXRpb24vanNvbg==
28
+ !binary "VHJhbnNmZXItRW5jb2Rpbmc=":
29
+ - !binary |-
30
+ Y2h1bmtlZA==
31
+ !binary "RGF0ZQ==":
32
+ - !binary |-
33
+ RnJpLCAwOSBBdWcgMjAxMyAxNjoyMjo1MCBHTVQ=
34
+ body:
35
+ encoding: US-ASCII
36
+ string: ! '[{"name":"email","value":"test@tesla.com"},{"name":"fax","value":""},{"name":"lastname","value":"The
37
+ user test lastname"},{"name":"mobile","value":""},{"name":"name","value":"The
38
+ user test name"},{"name":"opt1","value":""},{"name":"opt2","value":"option
39
+ 2"},{"name":"opt3","value":""},{"name":"telephone","value":"3333-3333"}]'
40
+ http_version:
41
+ recorded_at: Wed, 14 Aug 2013 18:23:18 GMT
42
+ recorded_with: VCR 2.5.0
@@ -0,0 +1,39 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://admin:password@localhost:8080/webapi/api/v1/domains/tesla.com/accounts/xxxxx/properties
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - application/json
12
+ Content-Type:
13
+ - application/json
14
+ Authorization:
15
+ - Basic YWRtaW46cGFzc3dvcmQ=
16
+ response:
17
+ status:
18
+ code: 404
19
+ message: !binary |-
20
+ Tm90IEZvdW5k
21
+ headers:
22
+ !binary "U2VydmVy":
23
+ - !binary |-
24
+ QXBhY2hlLUNveW90ZS8xLjE=
25
+ !binary "Q29udGVudC1UeXBl":
26
+ - !binary |-
27
+ YXBwbGljYXRpb24vanNvbg==
28
+ !binary "VHJhbnNmZXItRW5jb2Rpbmc=":
29
+ - !binary |-
30
+ Y2h1bmtlZA==
31
+ !binary "RGF0ZQ==":
32
+ - !binary |-
33
+ RnJpLCAwOSBBdWcgMjAxMyAxNjo0NzoxMyBHTVQ=
34
+ body:
35
+ encoding: US-ASCII
36
+ string: ! '{"status":404,"code":404,"message":"domain.account.not.found","developerMessage":"domain.account.not.found","moreInfoUrl":"mailto:support@mxhero.com"}'
37
+ http_version:
38
+ recorded_at: Wed, 14 Aug 2013 18:47:40 GMT
39
+ recorded_with: VCR 2.5.0
@@ -0,0 +1,115 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://admin:password@localhost:8080/webapi/api/v1/domains/tesla.com/accounts/test/properties
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - application/json
12
+ Content-Type:
13
+ - application/json
14
+ Authorization:
15
+ - Basic YWRtaW46cGFzc3dvcmQ=
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: !binary |-
20
+ T0s=
21
+ headers:
22
+ !binary "U2VydmVy":
23
+ - !binary |-
24
+ QXBhY2hlLUNveW90ZS8xLjE=
25
+ !binary "Q29udGVudC1UeXBl":
26
+ - !binary |-
27
+ YXBwbGljYXRpb24vanNvbg==
28
+ !binary "VHJhbnNmZXItRW5jb2Rpbmc=":
29
+ - !binary |-
30
+ Y2h1bmtlZA==
31
+ !binary "RGF0ZQ==":
32
+ - !binary |-
33
+ RnJpLCAwOSBBdWcgMjAxMyAxNzozNTo1MCBHTVQ=
34
+ body:
35
+ encoding: US-ASCII
36
+ string: ! '[{"name":"email","value":"test@tesla.com"},{"name":"fax","value":""},{"name":"lastname","value":"The
37
+ user test lastname"},{"name":"mobile","value":""},{"name":"name","value":"The
38
+ user test name"},{"name":"opt1","value":""},{"name":"opt2","value":"option
39
+ 2"},{"name":"opt3","value":""},{"name":"telephone","value":"3333-3333"}]'
40
+ http_version:
41
+ recorded_at: Wed, 14 Aug 2013 19:36:16 GMT
42
+ - request:
43
+ method: put
44
+ uri: http://admin:password@localhost:8080/webapi/api/v1/domains/tesla.com/accounts/test/properties
45
+ body:
46
+ encoding: UTF-8
47
+ string: ! '[{"name":"email","value":"test@tesla.com"},{"name":"fax","value":null},{"name":"lastname","value":"The
48
+ user test lastname CHANGED"},{"name":"name","value":"The user test name CHANGED"},{"name":"opt1","value":""},{"name":"opt2","value":"option
49
+ 2"},{"name":"opt3","value":""},{"name":"telephone","value":"3333-3333"}]'
50
+ headers:
51
+ Accept:
52
+ - application/json
53
+ Content-Type:
54
+ - application/json
55
+ Authorization:
56
+ - Basic YWRtaW46cGFzc3dvcmQ=
57
+ response:
58
+ status:
59
+ code: 200
60
+ message: !binary |-
61
+ T0s=
62
+ headers:
63
+ !binary "U2VydmVy":
64
+ - !binary |-
65
+ QXBhY2hlLUNveW90ZS8xLjE=
66
+ !binary "Q29udGVudC1MZW5ndGg=":
67
+ - !binary |-
68
+ MA==
69
+ !binary "RGF0ZQ==":
70
+ - !binary |-
71
+ RnJpLCAwOSBBdWcgMjAxMyAxNzozNTo1MCBHTVQ=
72
+ body:
73
+ encoding: US-ASCII
74
+ string: ''
75
+ http_version:
76
+ recorded_at: Wed, 14 Aug 2013 19:36:16 GMT
77
+ - request:
78
+ method: get
79
+ uri: http://admin:password@localhost:8080/webapi/api/v1/domains/tesla.com/accounts/test/properties
80
+ body:
81
+ encoding: US-ASCII
82
+ string: ''
83
+ headers:
84
+ Accept:
85
+ - application/json
86
+ Content-Type:
87
+ - application/json
88
+ Authorization:
89
+ - Basic YWRtaW46cGFzc3dvcmQ=
90
+ response:
91
+ status:
92
+ code: 200
93
+ message: !binary |-
94
+ T0s=
95
+ headers:
96
+ !binary "U2VydmVy":
97
+ - !binary |-
98
+ QXBhY2hlLUNveW90ZS8xLjE=
99
+ !binary "Q29udGVudC1UeXBl":
100
+ - !binary |-
101
+ YXBwbGljYXRpb24vanNvbg==
102
+ !binary "VHJhbnNmZXItRW5jb2Rpbmc=":
103
+ - !binary |-
104
+ Y2h1bmtlZA==
105
+ !binary "RGF0ZQ==":
106
+ - !binary |-
107
+ RnJpLCAwOSBBdWcgMjAxMyAxNzozNTo1MCBHTVQ=
108
+ body:
109
+ encoding: US-ASCII
110
+ string: ! '[{"name":"email","value":"test@tesla.com"},{"name":"fax","value":null},{"name":"lastname","value":"The
111
+ user test lastname CHANGED"},{"name":"name","value":"The user test name CHANGED"},{"name":"opt1","value":""},{"name":"opt2","value":"option
112
+ 2"},{"name":"opt3","value":""},{"name":"telephone","value":"3333-3333"}]'
113
+ http_version:
114
+ recorded_at: Wed, 14 Aug 2013 19:36:16 GMT
115
+ recorded_with: VCR 2.5.0
@@ -129,6 +129,50 @@ class MxHeroAPITest < MiniTest::Unit::TestCase
129
129
  end
130
130
  end
131
131
 
132
+ def test_account_properties
133
+ VCR.use_cassette('account_properties') do
134
+ account = 'test'
135
+ response = @api.account_properties(domain, account)
136
+ assert_equal 200, response.code
137
+ assert response.is_a? MxHero::API::Response
138
+ properties = response.msg
139
+ %w( email fax lastname mobile name opt1 opt2 opt3 telephone ).each do |property|
140
+ assert properties.key? property
141
+ end
142
+ end
143
+ end
144
+
145
+ def test_account_propertes_not_found
146
+ VCR.use_cassette('account_properties_not_found') do
147
+ begin
148
+ account = 'xxxxx'
149
+ response = @api.account_properties(domain, account)
150
+ assert_equal 404, response.code
151
+ assert response.is_a? MxHero::API::Response
152
+ rescue
153
+ flunk 'error!'
154
+ end
155
+ end
156
+ end
157
+
158
+ def test_update_account_properties
159
+ VCR.use_cassette('update_account_properties') do
160
+ account = 'test'
161
+ response = @api.account_properties(domain, account)
162
+ properties = response.msg
163
+ properties['lastname'] = properties['lastname'] + ' CHANGED'
164
+ properties['name'] = properties['name'] + ' CHANGED'
165
+ properties['fax'] = nil
166
+ response = @api.update_account_properties(domain, account, properties)
167
+ assert_equal 200, response.code
168
+
169
+ response = @api.account_properties(domain, account)
170
+ assert_equal properties['lastname'], response.msg['lastname']
171
+ assert_equal properties['name'], response.msg['name']
172
+ assert_equal properties['fax'], response.msg['fax']
173
+ end
174
+ end
175
+
132
176
  private
133
177
 
134
178
  def obtain_rules(domain)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mxhero-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2013-08-13 00:00:00.000000000 Z
14
+ date: 2013-08-14 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: vcr
@@ -79,6 +79,8 @@ files:
79
79
  - VERSION
80
80
  - lib/mxhero-api.rb
81
81
  - mxhero-api.gemspec
82
+ - test/fixtures/api/account_properties.yml
83
+ - test/fixtures/api/account_properties_not_found.yml
82
84
  - test/fixtures/api/accounts_from_domain.yml
83
85
  - test/fixtures/api/create_rule_alredy_exist.yml
84
86
  - test/fixtures/api/create_rule_for_domain.yml
@@ -89,6 +91,7 @@ files:
89
91
  - test/fixtures/api/domain_rule.yml
90
92
  - test/fixtures/api/domains.yml
91
93
  - test/fixtures/api/rules_for_domain.yml
94
+ - test/fixtures/api/update_account_properties.yml
92
95
  - test/fixtures/api/update_rule.yml
93
96
  - test/helper.rb
94
97
  - test/test_mxhero_api.rb
@@ -108,7 +111,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
108
111
  version: '0'
109
112
  segments:
110
113
  - 0
111
- hash: 1974219660962474472
114
+ hash: -69256700798046253
112
115
  required_rubygems_version: !ruby/object:Gem::Requirement
113
116
  none: false
114
117
  requirements:
@@ -122,6 +125,8 @@ signing_key:
122
125
  specification_version: 3
123
126
  summary: A MxHero API client for ruby
124
127
  test_files:
128
+ - test/fixtures/api/account_properties.yml
129
+ - test/fixtures/api/account_properties_not_found.yml
125
130
  - test/fixtures/api/accounts_from_domain.yml
126
131
  - test/fixtures/api/create_rule_alredy_exist.yml
127
132
  - test/fixtures/api/create_rule_for_domain.yml
@@ -132,6 +137,7 @@ test_files:
132
137
  - test/fixtures/api/domain_rule.yml
133
138
  - test/fixtures/api/domains.yml
134
139
  - test/fixtures/api/rules_for_domain.yml
140
+ - test/fixtures/api/update_account_properties.yml
135
141
  - test/fixtures/api/update_rule.yml
136
142
  - test/helper.rb
137
143
  - test/test_mxhero_api.rb