cpanel 0.1.0 → 0.1.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/Rakefile CHANGED
@@ -13,8 +13,8 @@ begin
13
13
 
14
14
  gem.add_development_dependency "thoughtbot-shoulda"
15
15
 
16
- gem.add_dependency "active_resource"
17
- gem.add_dependency "active_support"
16
+ gem.add_dependency "activeresource"
17
+ gem.add_dependency "activesupport"
18
18
  end
19
19
  rescue LoadError
20
20
  puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.1.1
@@ -0,0 +1,62 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{cpanel}
8
+ s.version = "0.1.1"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Josh Delsman"]
12
+ s.date = %q{2010-06-25}
13
+ s.description = %q{cPanel connection wrapper for Ruby}
14
+ s.email = %q{jdelsman@voxxit.com}
15
+ s.extra_rdoc_files = [
16
+ "LICENSE",
17
+ "README.rdoc"
18
+ ]
19
+ s.files = [
20
+ ".document",
21
+ ".gitignore",
22
+ "LICENSE",
23
+ "README.rdoc",
24
+ "Rakefile",
25
+ "VERSION",
26
+ "cpanel.gemspec",
27
+ "lib/cpanel.rb",
28
+ "lib/cpanel/response.rb",
29
+ "lib/cpanel/server.rb",
30
+ "test/cpanel_test.rb",
31
+ "test/test_helper.rb"
32
+ ]
33
+ s.homepage = %q{http://github.com/voxxit/cpanel}
34
+ s.rdoc_options = ["--charset=UTF-8"]
35
+ s.require_paths = ["lib"]
36
+ s.rubygems_version = %q{1.3.7}
37
+ s.summary = %q{cPanel connection wrapper for Ruby}
38
+ s.test_files = [
39
+ "test/cpanel_test.rb",
40
+ "test/test_helper.rb"
41
+ ]
42
+
43
+ if s.respond_to? :specification_version then
44
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
45
+ s.specification_version = 3
46
+
47
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
48
+ s.add_development_dependency(%q<thoughtbot-shoulda>, [">= 0"])
49
+ s.add_runtime_dependency(%q<activeresource>, [">= 0"])
50
+ s.add_runtime_dependency(%q<activesupport>, [">= 0"])
51
+ else
52
+ s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
53
+ s.add_dependency(%q<activeresource>, [">= 0"])
54
+ s.add_dependency(%q<activesupport>, [">= 0"])
55
+ end
56
+ else
57
+ s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
58
+ s.add_dependency(%q<activeresource>, [">= 0"])
59
+ s.add_dependency(%q<activesupport>, [">= 0"])
60
+ end
61
+ end
62
+
@@ -0,0 +1,31 @@
1
+ require 'active_support/json'
2
+
3
+ module Cpanel
4
+ class Response
5
+ attr_accessor :response, :success
6
+
7
+ def initialize(response)
8
+ response = ActiveSupport::JSON.decode(response)
9
+
10
+ if response["result"]
11
+ @response = response["result"][0] ? response["result"][0] : response["result"]
12
+ else
13
+ @response = response
14
+ end
15
+
16
+ @success = success?
17
+ end
18
+
19
+ def errors
20
+ if success?
21
+ nil
22
+ else
23
+ return response["statusmsg"] ? response["statusmsg"] : nil
24
+ end
25
+ end
26
+
27
+ def success?
28
+ return response["status"] ? response["status"] == 1 : true
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,71 @@
1
+ require 'uri'
2
+ require 'net/https'
3
+ require 'openssl'
4
+ require 'active_resource'
5
+
6
+ module Cpanel
7
+ class Server
8
+ include ActiveResource
9
+
10
+ attr_accessor :url, :key, :timeout, :api
11
+
12
+ def initialize(options = {})
13
+ @url = URI.parse(options[:url])
14
+ @key = format_key(options[:key])
15
+ @timeout = options[:timeout] || 300
16
+ @api = options[:api] || "json"
17
+ end
18
+
19
+ def key=(api_key)
20
+ @key = format_key(api_key)
21
+ end
22
+
23
+ def request(script, options = {})
24
+ request = Net::HTTP::Get.new("/#{api}-api/" + script)
25
+ request.add_field "Authorization", "WHM root:#{key}"
26
+ request.set_form_data(options) unless options.empty?
27
+
28
+ result = http.request(request)
29
+ response = handle_response(result)
30
+
31
+ return Response.new(response)
32
+ rescue Timeout::Error, Errno::ETIMEDOUT => e
33
+ raise TimeoutError.new(e.message)
34
+ rescue Errno::ECONNREFUSED => e
35
+ raise CommandFailed.new("Connection to cPanel server was refused; may be down or unreachable")
36
+ end
37
+
38
+ private
39
+
40
+ def format_key(key)
41
+ key.gsub("\n", "").gsub("\r", "").strip
42
+ end
43
+
44
+ def handle_response(response)
45
+ case response.code.to_i
46
+ when 301, 302 then raise(Redirection.new(response))
47
+ when 200...400 then return(response.body)
48
+ when 400 then raise(BadRequest.new(response))
49
+ when 401 then raise(UnauthorizedAccess.new(response))
50
+ when 403 then raise(ForbiddenAccess.new(response))
51
+ when 404 then raise(ResourceNotFound.new(response))
52
+ when 405 then raise(MethodNotAllowed.new(response))
53
+ when 409 then raise(ResourceConflict.new(response))
54
+ when 422 then raise(ResourceInvalid.new(response))
55
+ when 401...500 then raise(ClientError.new(response))
56
+ when 500...600 then raise(ServerError.new(response))
57
+ else
58
+ raise ConnectionError.new(response, "Unknown response code: #{response.code}")
59
+ end
60
+ end
61
+
62
+ def http
63
+ http = Net::HTTP.new(url.host, url.port)
64
+ http.use_ssl = (url.scheme == 'https')
65
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE if url.scheme == 'https'
66
+ http.read_timeout = timeout
67
+ http.open_timeout = timeout
68
+ http
69
+ end
70
+ end
71
+ end
metadata CHANGED
@@ -1,7 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cpanel
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ hash: 25
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 1
10
+ version: 0.1.1
5
11
  platform: ruby
6
12
  authors:
7
13
  - Josh Delsman
@@ -9,39 +15,51 @@ autorequire:
9
15
  bindir: bin
10
16
  cert_chain: []
11
17
 
12
- date: 2010-02-02 00:00:00 +00:00
18
+ date: 2010-06-25 00:00:00 -04:00
13
19
  default_executable:
14
20
  dependencies:
15
21
  - !ruby/object:Gem::Dependency
16
22
  name: thoughtbot-shoulda
17
- type: :development
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
20
26
  requirements:
21
27
  - - ">="
22
28
  - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
23
32
  version: "0"
24
- version:
33
+ type: :development
34
+ version_requirements: *id001
25
35
  - !ruby/object:Gem::Dependency
26
- name: active_resource
27
- type: :runtime
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
36
+ name: activeresource
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
30
40
  requirements:
31
41
  - - ">="
32
42
  - !ruby/object:Gem::Version
43
+ hash: 3
44
+ segments:
45
+ - 0
33
46
  version: "0"
34
- version:
35
- - !ruby/object:Gem::Dependency
36
- name: active_support
37
47
  type: :runtime
38
- version_requirement:
39
- version_requirements: !ruby/object:Gem::Requirement
48
+ version_requirements: *id002
49
+ - !ruby/object:Gem::Dependency
50
+ name: activesupport
51
+ prerelease: false
52
+ requirement: &id003 !ruby/object:Gem::Requirement
53
+ none: false
40
54
  requirements:
41
55
  - - ">="
42
56
  - !ruby/object:Gem::Version
57
+ hash: 3
58
+ segments:
59
+ - 0
43
60
  version: "0"
44
- version:
61
+ type: :runtime
62
+ version_requirements: *id003
45
63
  description: cPanel connection wrapper for Ruby
46
64
  email: jdelsman@voxxit.com
47
65
  executables: []
@@ -58,7 +76,10 @@ files:
58
76
  - README.rdoc
59
77
  - Rakefile
60
78
  - VERSION
79
+ - cpanel.gemspec
61
80
  - lib/cpanel.rb
81
+ - lib/cpanel/response.rb
82
+ - lib/cpanel/server.rb
62
83
  - test/cpanel_test.rb
63
84
  - test/test_helper.rb
64
85
  has_rdoc: true
@@ -71,21 +92,27 @@ rdoc_options:
71
92
  require_paths:
72
93
  - lib
73
94
  required_ruby_version: !ruby/object:Gem::Requirement
95
+ none: false
74
96
  requirements:
75
97
  - - ">="
76
98
  - !ruby/object:Gem::Version
99
+ hash: 3
100
+ segments:
101
+ - 0
77
102
  version: "0"
78
- version:
79
103
  required_rubygems_version: !ruby/object:Gem::Requirement
104
+ none: false
80
105
  requirements:
81
106
  - - ">="
82
107
  - !ruby/object:Gem::Version
108
+ hash: 3
109
+ segments:
110
+ - 0
83
111
  version: "0"
84
- version:
85
112
  requirements: []
86
113
 
87
114
  rubyforge_project:
88
- rubygems_version: 1.3.5
115
+ rubygems_version: 1.3.7
89
116
  signing_key:
90
117
  specification_version: 3
91
118
  summary: cPanel connection wrapper for Ruby