mxhero-api 0.1.1 → 0.1.2

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 ADDED
@@ -0,0 +1,3 @@
1
+ Gemfile.lock
2
+ coverage/
3
+ pkg/
data/.rvmrc ADDED
@@ -0,0 +1 @@
1
+ rvm use --create 1.9.3@mxhero-api
data/Gemfile CHANGED
@@ -2,6 +2,11 @@
2
2
  source "https://rubygems.org"
3
3
 
4
4
  gem 'rake', '10.1.0'
5
+ gem 'version'
6
+
7
+ group :test do
8
+ gem 'simplecov', :require => false
9
+ end
5
10
 
6
11
  # Specify your gem's dependencies in mxhero-api.gemspec
7
12
  gemspec
data/Rakefile CHANGED
@@ -1,8 +1,39 @@
1
1
  require 'bundler/gem_tasks'
2
2
  require 'rake/testtask'
3
+ require 'rake/version_task'
3
4
 
4
5
  Rake::TestTask.new do |t|
5
6
  t.libs << 'test'
6
7
  end
7
8
 
8
9
  task :default => :test
10
+
11
+
12
+ # -*- encoding: utf-8 -*-
13
+ lib = File.expand_path('./lib', __FILE__)
14
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
15
+
16
+ spec = Gem::Specification.new do |gem|
17
+ gem.name = 'mxhero-api'
18
+ gem.authors = ['Maximiliano Dello Russo', 'Juan Pablo Royo', 'mxHero']
19
+ gem.email = ['maxidr@mxhero.com','juanpablo.royo@gmail.com', 'mxhero@mxhero.com']
20
+ gem.summary = %q{A MxHero API client for ruby}
21
+ gem.description = %q{A gem to provide easy access to the API of MxHero platform (http://www.mxhero.com/)}
22
+ gem.homepage = 'http://github.com/mxhero/mxhero-api'
23
+
24
+ gem.files = `git ls-files`.split($\)
25
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
26
+ gem.require_paths = ["lib"]
27
+
28
+ gem.add_development_dependency('vcr', '2.5.0')
29
+ gem.add_development_dependency('webmock', '1.11.0')
30
+
31
+ gem.add_dependency('httpclient', '2.3.3')
32
+
33
+ end
34
+
35
+ Rake::VersionTask.new do |task|
36
+ task.with_git_tag = true
37
+ task.with_gemspec = spec
38
+ end
39
+
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.1.2
data/lib/mxhero-api.rb CHANGED
@@ -85,6 +85,24 @@ module MxHero
85
85
  response_as_a_hash
86
86
  end
87
87
 
88
+ # Retrive the domain by id according to the parameter if exist
89
+ #
90
+ # @param id The domain name or id. For example: 'mydomain.com'
91
+ # @return [Hash] with the domain attributes if exist
92
+ # * :domain [String]
93
+ # * :server [String]
94
+ # * :creationDate [Fixnum]
95
+ # * :updateDate [Fixnum]
96
+ # * :aliases
97
+ # * :ldap
98
+ # @raise an exception when the status code isn't 200
99
+ def domain_by_id(id = nil)
100
+ raise 'Id domain could not be nil' if id.nil?
101
+ response = call(:get, domain_by_id_url(id))
102
+ response_as_a_hash = json_parse(response.content)
103
+ response_as_a_hash
104
+ end
105
+
88
106
 
89
107
  def verbose?
90
108
  @verbose
@@ -164,7 +182,9 @@ module MxHero
164
182
  def call(method, url, body = nil)
165
183
  client = HTTPClient.new
166
184
  client.set_auth(url, @username, @password)
167
- client.request(method, url, nil, body, headers)
185
+ response = client.request(method, url, nil, body, headers)
186
+ raise 'an error ocurred when try to communicate with the API' if 500..600.include?(response.status)
187
+ response
168
188
  end
169
189
 
170
190
  # Default headers
@@ -184,6 +204,10 @@ module MxHero
184
204
  service_url + '/domains'
185
205
  end
186
206
 
207
+ def domain_by_id_url(domain)
208
+ domains_url + "/#{domain}/"
209
+ end
210
+
187
211
  def domain_rule_url(domain, id)
188
212
  rules_for_domain_url(domain) + "/#{id}"
189
213
  end
data/mxhero-api.gemspec CHANGED
@@ -1,20 +1,36 @@
1
+ # -*- encoding: utf-8 -*-
1
2
 
2
- Gem::Specification.new do |gem|
3
- gem.name = 'mxhero-api'
4
- gem.version = '0.1.1'
5
- gem.authors = ['Maximiliano Dello Russo']
6
- gem.email = ['maxidr@mxhero.com']
7
- gem.summary = %q{A MxHero API client for ruby}
8
- gem.description = %q{A gem to provide easy access to the API of MxHero platform (http://www.mxhero.com/)}
9
- gem.homepage = 'http://github.com/mxhero/mxhero-api'
3
+ Gem::Specification.new do |s|
4
+ s.name = "mxhero-api"
5
+ s.version = "0.1.2"
10
6
 
11
- gem.files = `git ls-files`.split($\)
12
- gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
13
- gem.require_paths = ["lib"]
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Maximiliano Dello Russo", "Juan Pablo Royo", "mxHero"]
9
+ s.date = "2013-08-07"
10
+ s.description = "A gem to provide easy access to the API of MxHero platform (http://www.mxhero.com/)"
11
+ s.email = ["maxidr@mxhero.com", "juanpablo.royo@gmail.com", "mxhero@mxhero.com"]
12
+ s.files = [".gitignore", ".rvmrc", "Gemfile", "README.md", "Rakefile", "VERSION", "lib/mxhero-api.rb", "mxhero-api.gemspec", "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/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/service_create_footer.yml", "test/fixtures/api/service_footer_for_domain.yml", "test/fixtures/api/update_rule.yml", "test/helper.rb", "test/test_mxhero_api.rb", "test/test_mxhero_api_response.rb"]
13
+ s.homepage = "http://github.com/mxhero/mxhero-api"
14
+ s.require_paths = ["lib"]
15
+ s.rubygems_version = "1.8.25"
16
+ s.summary = "A MxHero API client for ruby"
17
+ s.test_files = ["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/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/service_create_footer.yml", "test/fixtures/api/service_footer_for_domain.yml", "test/fixtures/api/update_rule.yml", "test/helper.rb", "test/test_mxhero_api.rb", "test/test_mxhero_api_response.rb"]
14
18
 
15
- gem.add_development_dependency('vcr', '2.5.0')
16
- gem.add_development_dependency('webmock', '1.11.0')
17
-
18
- gem.add_dependency('httpclient', '2.3.3')
19
+ if s.respond_to? :specification_version then
20
+ s.specification_version = 3
19
21
 
22
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
23
+ s.add_development_dependency(%q<vcr>, ["= 2.5.0"])
24
+ s.add_development_dependency(%q<webmock>, ["= 1.11.0"])
25
+ s.add_runtime_dependency(%q<httpclient>, ["= 2.3.3"])
26
+ else
27
+ s.add_dependency(%q<vcr>, ["= 2.5.0"])
28
+ s.add_dependency(%q<webmock>, ["= 1.11.0"])
29
+ s.add_dependency(%q<httpclient>, ["= 2.3.3"])
30
+ end
31
+ else
32
+ s.add_dependency(%q<vcr>, ["= 2.5.0"])
33
+ s.add_dependency(%q<webmock>, ["= 1.11.0"])
34
+ s.add_dependency(%q<httpclient>, ["= 2.3.3"])
35
+ end
20
36
  end
@@ -0,0 +1,36 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://admin:password@localhost:8080/webapi/api/v1/domains/test.com/
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 "Q29udGVudC1UeXBl":
23
+ - !binary |-
24
+ YXBwbGljYXRpb24vanNvbg==
25
+ !binary "VHJhbnNmZXItRW5jb2Rpbmc=":
26
+ - !binary |-
27
+ Y2h1bmtlZA==
28
+ !binary "U2VydmVy":
29
+ - !binary |-
30
+ SmV0dHkoNi4xLjEwKQ==
31
+ body:
32
+ encoding: US-ASCII
33
+ string: ! '{"domain":"test.com","server":"smtp.server","creationDate":1360096371000,"updatedDate":1360096371000,"aliases":["test.com"],"ldap":null}'
34
+ http_version:
35
+ recorded_at: Wed, 07 Aug 2013 17:55:32 GMT
36
+ recorded_with: VCR 2.5.0
@@ -0,0 +1,36 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://admin:password@localhost:8080/webapi/api/v1/domains/test.notfound.com/
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 "Q29udGVudC1UeXBl":
23
+ - !binary |-
24
+ YXBwbGljYXRpb24vanNvbg==
25
+ !binary "VHJhbnNmZXItRW5jb2Rpbmc=":
26
+ - !binary |-
27
+ Y2h1bmtlZA==
28
+ !binary "U2VydmVy":
29
+ - !binary |-
30
+ SmV0dHkoNi4xLjEwKQ==
31
+ body:
32
+ encoding: US-ASCII
33
+ string: ! '{"status":404,"code":404,"message":"domain.not.found","developerMessage":"domain.not.found","moreInfoUrl":"mailto:support@mxhero.com"}'
34
+ http_version:
35
+ recorded_at: Wed, 07 Aug 2013 18:00:41 GMT
36
+ recorded_with: VCR 2.5.0
data/test/helper.rb CHANGED
@@ -1,3 +1,9 @@
1
+ if ENV['COVERAGE'] == '1'
2
+ require 'simplecov'
3
+ SimpleCov.start do
4
+ add_filter "/test/"
5
+ end
6
+ end
1
7
  require 'minitest/autorun'
2
8
  require 'minitest/pride'
3
9
 
@@ -1,4 +1,4 @@
1
- require_relative 'helper'
1
+ require_relative 'helper'
2
2
 
3
3
  class MxHeroAPITest < MiniTest::Unit::TestCase
4
4
 
@@ -46,6 +46,30 @@ class MxHeroAPITest < MiniTest::Unit::TestCase
46
46
  end
47
47
  end
48
48
 
49
+ def test_domain_by_id
50
+ VCR.use_cassette('domain_by_id') do
51
+ id = "test.com"
52
+ tesla_domain = @api.domain_by_id(id)
53
+ assert tesla_domain.key?(:domain)
54
+ assert tesla_domain.key?(:server)
55
+ assert tesla_domain.key?(:creationDate)
56
+ assert tesla_domain.key?(:aliases)
57
+ assert tesla_domain.key?(:ldap)
58
+ end
59
+ end
60
+
61
+ def test_domain_by_id_not_found
62
+ VCR.use_cassette('domain_by_id_not_found') do
63
+ id = "test.notfound.com"
64
+ tesla_domain = @api.domain_by_id(id)
65
+ assert tesla_domain[:status] == 404
66
+ end
67
+ end
68
+
69
+ def test_domain_by_id_param_could_not_be_nil
70
+ assert_raises(RuntimeError) { @api.domain_by_id }
71
+ end
72
+
49
73
  def rule_msg_with_domain(domain)
50
74
  msg = create_rule_msg
51
75
  msg[:domain] = domain
metadata CHANGED
@@ -1,15 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mxhero-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
8
8
  - Maximiliano Dello Russo
9
+ - Juan Pablo Royo
10
+ - mxHero
9
11
  autorequire:
10
12
  bindir: bin
11
13
  cert_chain: []
12
- date: 2013-07-12 00:00:00.000000000 Z
14
+ date: 2013-08-07 00:00:00.000000000 Z
13
15
  dependencies:
14
16
  - !ruby/object:Gem::Dependency
15
17
  name: vcr
@@ -62,19 +64,25 @@ dependencies:
62
64
  description: A gem to provide easy access to the API of MxHero platform (http://www.mxhero.com/)
63
65
  email:
64
66
  - maxidr@mxhero.com
67
+ - juanpablo.royo@gmail.com
68
+ - mxhero@mxhero.com
65
69
  executables: []
66
70
  extensions: []
67
71
  extra_rdoc_files: []
68
72
  files:
73
+ - .gitignore
74
+ - .rvmrc
69
75
  - Gemfile
70
- - Gemfile.lock
71
76
  - README.md
72
77
  - Rakefile
78
+ - VERSION
73
79
  - lib/mxhero-api.rb
74
80
  - mxhero-api.gemspec
75
81
  - test/fixtures/api/create_rule_alredy_exist.yml
76
82
  - test/fixtures/api/create_rule_for_domain.yml
77
83
  - test/fixtures/api/create_rule_success.yml
84
+ - test/fixtures/api/domain_by_id.yml
85
+ - test/fixtures/api/domain_by_id_not_found.yml
78
86
  - test/fixtures/api/domain_rule.yml
79
87
  - test/fixtures/api/domains.yml
80
88
  - test/fixtures/api/rules_for_domain.yml
@@ -96,6 +104,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
96
104
  - - ! '>='
97
105
  - !ruby/object:Gem::Version
98
106
  version: '0'
107
+ segments:
108
+ - 0
109
+ hash: -1666481203265487076
99
110
  required_rubygems_version: !ruby/object:Gem::Requirement
100
111
  none: false
101
112
  requirements:
@@ -104,7 +115,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
104
115
  version: '0'
105
116
  requirements: []
106
117
  rubyforge_project:
107
- rubygems_version: 1.8.23
118
+ rubygems_version: 1.8.25
108
119
  signing_key:
109
120
  specification_version: 3
110
121
  summary: A MxHero API client for ruby
@@ -112,6 +123,8 @@ test_files:
112
123
  - test/fixtures/api/create_rule_alredy_exist.yml
113
124
  - test/fixtures/api/create_rule_for_domain.yml
114
125
  - test/fixtures/api/create_rule_success.yml
126
+ - test/fixtures/api/domain_by_id.yml
127
+ - test/fixtures/api/domain_by_id_not_found.yml
115
128
  - test/fixtures/api/domain_rule.yml
116
129
  - test/fixtures/api/domains.yml
117
130
  - test/fixtures/api/rules_for_domain.yml
@@ -121,4 +134,3 @@ test_files:
121
134
  - test/helper.rb
122
135
  - test/test_mxhero_api.rb
123
136
  - test/test_mxhero_api_response.rb
124
- has_rdoc:
data/Gemfile.lock DELETED
@@ -1,26 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- mxhero-api (0.1.1)
5
- httpclient (= 2.3.3)
6
-
7
- GEM
8
- remote: https://rubygems.org/
9
- specs:
10
- addressable (2.3.4)
11
- crack (0.3.2)
12
- httpclient (2.3.3)
13
- rake (10.1.0)
14
- vcr (2.5.0)
15
- webmock (1.11.0)
16
- addressable (>= 2.2.7)
17
- crack (>= 0.3.2)
18
-
19
- PLATFORMS
20
- ruby
21
-
22
- DEPENDENCIES
23
- mxhero-api!
24
- rake (= 10.1.0)
25
- vcr (= 2.5.0)
26
- webmock (= 1.11.0)