rhc-rest 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (71) hide show
  1. data/COPYRIGHT +1 -0
  2. data/Gemfile +4 -0
  3. data/LICENSE +11 -0
  4. data/Rakefile +1 -0
  5. data/bin/sample-usage.rb +124 -0
  6. data/doc/Gemfile.html +119 -0
  7. data/doc/Rakefile.html +117 -0
  8. data/doc/Rhc/Rest/Application.html +571 -0
  9. data/doc/Rhc/Rest/BaseException.html +226 -0
  10. data/doc/Rhc/Rest/Cartridge.html +475 -0
  11. data/doc/Rhc/Rest/Client.html +609 -0
  12. data/doc/Rhc/Rest/ClientErrorException.html +167 -0
  13. data/doc/Rhc/Rest/Domain.html +457 -0
  14. data/doc/Rhc/Rest/Key.html +378 -0
  15. data/doc/Rhc/Rest/RequestDeniedException.html +166 -0
  16. data/doc/Rhc/Rest/ResourceAccessException.html +161 -0
  17. data/doc/Rhc/Rest/ResourceNotFoundException.html +166 -0
  18. data/doc/Rhc/Rest/ServerErrorException.html +161 -0
  19. data/doc/Rhc/Rest/ServiceUnavailableException.html +167 -0
  20. data/doc/Rhc/Rest/UnAuthorizedException.html +167 -0
  21. data/doc/Rhc/Rest/User.html +354 -0
  22. data/doc/Rhc/Rest/ValidationException.html +255 -0
  23. data/doc/Rhc/Rest.html +410 -0
  24. data/doc/Rhc.html +329 -0
  25. data/doc/created.rid +13 -0
  26. data/doc/doc/created.rid +0 -0
  27. data/doc/images/add.png +0 -0
  28. data/doc/images/brick.png +0 -0
  29. data/doc/images/brick_link.png +0 -0
  30. data/doc/images/bug.png +0 -0
  31. data/doc/images/bullet_black.png +0 -0
  32. data/doc/images/bullet_toggle_minus.png +0 -0
  33. data/doc/images/bullet_toggle_plus.png +0 -0
  34. data/doc/images/date.png +0 -0
  35. data/doc/images/delete.png +0 -0
  36. data/doc/images/find.png +0 -0
  37. data/doc/images/loadingAnimation.gif +0 -0
  38. data/doc/images/macFFBgHack.png +0 -0
  39. data/doc/images/package.png +0 -0
  40. data/doc/images/page_green.png +0 -0
  41. data/doc/images/page_white_text.png +0 -0
  42. data/doc/images/page_white_width.png +0 -0
  43. data/doc/images/plugin.png +0 -0
  44. data/doc/images/ruby.png +0 -0
  45. data/doc/images/tag_blue.png +0 -0
  46. data/doc/images/tag_green.png +0 -0
  47. data/doc/images/transparent.png +0 -0
  48. data/doc/images/wrench.png +0 -0
  49. data/doc/images/wrench_orange.png +0 -0
  50. data/doc/images/zoom.png +0 -0
  51. data/doc/index.html +112 -0
  52. data/doc/js/darkfish.js +153 -0
  53. data/doc/js/jquery.js +18 -0
  54. data/doc/js/navigation.js +142 -0
  55. data/doc/js/search.js +94 -0
  56. data/doc/js/search_index.js +1 -0
  57. data/doc/js/searcher.js +228 -0
  58. data/doc/rdoc.css +543 -0
  59. data/doc/table_of_contents.html +198 -0
  60. data/lib/rhc-rest/application.rb +81 -0
  61. data/lib/rhc-rest/cartridge.rb +64 -0
  62. data/lib/rhc-rest/client.rb +122 -0
  63. data/lib/rhc-rest/domain.rb +56 -0
  64. data/lib/rhc-rest/exceptions/exceptions.rb +73 -0
  65. data/lib/rhc-rest/key.rb +34 -0
  66. data/lib/rhc-rest/user.rb +41 -0
  67. data/lib/rhc-rest/version.rb +5 -0
  68. data/lib/rhc-rest.rb +155 -0
  69. data/rhc-rest.gemspec +26 -0
  70. data/rhc-rest.spec +79 -0
  71. metadata +162 -0
data/lib/rhc-rest.rb ADDED
@@ -0,0 +1,155 @@
1
+ require 'rubygems'
2
+ require 'rest-client'
3
+ require 'logger'
4
+ require 'json'
5
+ require File.dirname(__FILE__) + '/rhc-rest/exceptions/exceptions.rb'
6
+ require File.dirname(__FILE__) + '/rhc-rest/application'
7
+ require File.dirname(__FILE__) + '/rhc-rest/cartridge'
8
+ require File.dirname(__FILE__) + '/rhc-rest/client'
9
+ require File.dirname(__FILE__) + '/rhc-rest/domain'
10
+ require File.dirname(__FILE__) + '/rhc-rest/key'
11
+ require File.dirname(__FILE__) + '/rhc-rest/user'
12
+
13
+ @@end_point = ""
14
+ @@headers = {:accept => :json}
15
+
16
+ module Rhc
17
+ module Rest
18
+ def logger
19
+ if defined?Rails.logger
20
+ Rails.logger
21
+ else
22
+ Logger.new(STDOUT)
23
+ end
24
+ end
25
+
26
+ def parse_response(response)
27
+ result = JSON.parse(response)
28
+ type = result['type']
29
+ data = result['data']
30
+ case type
31
+ when 'domains'
32
+ domains = Array.new
33
+ data.each do |domain_json|
34
+ domains.push(Domain.new(domain_json))
35
+ end
36
+ return domains
37
+ when 'domain'
38
+ return Domain.new(data)
39
+ when 'applications'
40
+ apps = Array.new
41
+ data.each do |app_json|
42
+ apps.push(Application.new(app_json))
43
+ end
44
+ return apps
45
+ when 'application'
46
+ return Application.new(data)
47
+ when 'cartridges'
48
+ carts = Array.new
49
+ data.each do |cart_json|
50
+ carts.push(Cartridge.new(cart_json))
51
+ end
52
+ return carts
53
+ when 'cartridge'
54
+ return Cartridge.new(data)
55
+ when 'user'
56
+ return User.new(data)
57
+ when 'keys'
58
+ keys = Array.new
59
+ data.each do |key_json|
60
+ keys.push(Key.new(key_json))
61
+ end
62
+ return keys
63
+ when 'key'
64
+ return Key.new(data)
65
+ else
66
+ data
67
+ end
68
+ end
69
+
70
+ def send(request)
71
+ begin
72
+ #puts request.headers
73
+ response = request.execute
74
+ #set cookie
75
+ rh_sso = response.cookies['rh_sso']
76
+ #puts response.cookies
77
+ if not rh_sso.nil?
78
+ @@headers["cookie"] = "rh_sso=#{rh_sso}"
79
+ end
80
+ #puts "#{response}"
81
+ return parse_response(response) unless response.nil? or response.code == 204
82
+ rescue RestClient::ExceptionWithResponse => e
83
+ #puts "#{e.response}"
84
+ process_error_response(e.response)
85
+ rescue Exception => e
86
+ raise ResourceAccessException.new("Failed to access resource: #{e.message}")
87
+ end
88
+ end
89
+
90
+ def process_error_response(response)
91
+ messages = Array.new
92
+ begin
93
+ result = JSON.parse(response)
94
+ messages = result['messages']
95
+ rescue Exception => e
96
+ logger.debug "Response did not include a message from server"
97
+ #puts response
98
+ end
99
+ case response.code
100
+ when 401
101
+ raise UnAuthorizedException.new("Not authenticated")
102
+ when 403
103
+ messages.each do |message|
104
+ if message['severity'].upcase == "ERROR"
105
+ raise RequestDeniedException.new(message['text'])
106
+ end
107
+ end
108
+ when 404
109
+ messages.each do |message|
110
+ if message['severity'].upcase == "ERROR"
111
+ raise ResourceNotFoundException.new(message['text'])
112
+ end
113
+ end
114
+ when 409
115
+ messages.each do |message|
116
+ if message['severity'] and message['severity'].upcase == "ERROR"
117
+ raise ValidationException.new(message['text'])
118
+ end
119
+ end
120
+ when 422
121
+ #puts response
122
+ e = nil
123
+ messages.each do |message|
124
+ if message["field"]
125
+ if e and e.field ==message["field"]
126
+ e.message << " #{message["text"]}"
127
+ else
128
+ e = ValidationException.new(message["text"], message["field"])
129
+ end
130
+ end
131
+ end
132
+ raise e
133
+ when 400
134
+ messages.each do |message|
135
+ if message['severity'].upcase == "ERROR"
136
+ raise ClientErrorException.new(message['text'])
137
+ end
138
+ end
139
+ when 500
140
+ messages.each do |message|
141
+ if message['severity'].upcase == "ERROR"
142
+ raise ServerErrorException.new(message['text'])
143
+ end
144
+ end
145
+ when 503
146
+ messages.each do |message|
147
+ if message['severity'].upcase == "ERROR"
148
+ raise ServiceUnavailableException.new(message['text'])
149
+ end
150
+ end
151
+ end
152
+
153
+ end
154
+ end
155
+ end
data/rhc-rest.gemspec ADDED
@@ -0,0 +1,26 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "rhc-rest/version"
4
+ bin_dir = File.join("bin", "*")
5
+ lib_dir = File.join(File.join("lib", "**"), "*")
6
+ doc_dir = File.join(File.join("doc", "**"), "*")
7
+
8
+ Gem::Specification.new do |s|
9
+ s.name = "rhc-rest"
10
+ s.version = /(Version: )(.*)/.match(File.read("rhc-rest.spec"))[2].strip
11
+ s.authors = ["Red Hat"]
12
+ s.email = ["openshift@redhat.com"]
13
+ s.homepage = "http://www.openshift.com"
14
+ s.summary = %q{Ruby REST client for OpenShift REST API}
15
+ s.description = %q{Ruby bindings for OpenShift REST API}
16
+
17
+ s.rubyforge_project = "rhc-rest"
18
+
19
+ s.files = Dir[lib_dir] + Dir[bin_dir] + Dir[doc_dir]
20
+ s.files += %w(Rakefile rhc-rest.gemspec Gemfile rhc-rest.spec COPYRIGHT LICENSE)
21
+ s.require_paths = ["lib"]
22
+
23
+ # specify any dependencies here; for example:
24
+ s.add_dependency("json")
25
+ s.add_dependency("rest-client")
26
+ end
data/rhc-rest.spec ADDED
@@ -0,0 +1,79 @@
1
+ %global ruby_sitelib %(ruby -rrbconfig -e "puts Config::CONFIG['sitelibdir']")
2
+ %define gemdir %(ruby -rubygems -e 'puts Gem::dir' 2>/dev/null)
3
+ %global gemname rhc-rest
4
+ %global geminstdir %{gemdir}/gems/%{gemname}-%{version}
5
+
6
+
7
+ Summary: Ruby bindings/client for OpenShift REST API
8
+ Name: rhc-rest
9
+ Version: 0.0.7
10
+ Release: 1%{?dist}
11
+ Group: Network/Daemons
12
+ License: ASL 2.0
13
+ URL: http://openshift.redhat.com
14
+ Source0: rhc-rest-%{version}.tar.gz
15
+
16
+ BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
17
+ BuildRequires: rubygem-rake
18
+ BuildRequires: rubygem-rspec
19
+ Requires: ruby >= 1.8.5
20
+ Requires: rubygem-rest-client
21
+ Requires: rubygem-json
22
+
23
+ BuildArch: noarch
24
+
25
+ %description
26
+ Provides Ruby bindings/client for OpenShift REST API
27
+
28
+ %prep
29
+ %setup -q
30
+
31
+ %build
32
+ for f in lib/*.rb
33
+ do
34
+ ruby -c $f
35
+ done
36
+
37
+ %install
38
+ rm -rf %{buildroot}
39
+ mkdir -p %{buildroot}%{gemdir}
40
+ mkdir -p %{buildroot}%{ruby_sitelib}
41
+
42
+ # Build and install into the rubygem structure
43
+ gem build %{gemname}.gemspec
44
+ gem install --local --install-dir %{buildroot}/%{gemdir} --force %{gemname}-%{version}.gem
45
+
46
+ %clean
47
+ rm -rf %{buildroot}
48
+
49
+ %files
50
+ %defattr(-,root,root,-)
51
+ %{gemdir}/gems/rhc-rest-%{version}/
52
+ %{gemdir}/cache/rhc-rest-%{version}.gem
53
+ %{gemdir}/doc/rhc-rest-%{version}
54
+ %{gemdir}/specifications/rhc-rest-%{version}.gemspec
55
+ %doc LICENSE
56
+ %doc COPYRIGHT
57
+
58
+ %changelog
59
+ * Wed Mar 21 2012 Lili Nader <lnader@redhat.com> 0.0.7-1
60
+ - Get rhc-rest a building ... (ramr@redhat.com)
61
+ - Fix to get rhc-rest building. (ramr@redhat.com)
62
+
63
+ * Tue Mar 20 2012 Lili Nader <lnader@redhat.com> 0.0.5-1
64
+ - corrected version in gemspec (lnader@redhat.com)
65
+
66
+ * Tue Mar 20 2012 Lili Nader <lnader@redhat.com> 0.0.4-1
67
+ - corrected build error (lnader@redhat.com)
68
+
69
+ * Fri Mar 16 2012 Lili Nader <lnader@redhat.com> 0.0.3-1
70
+ - new package built with tito
71
+
72
+ * Tue Feb 14 2012 Lili Nader <lnader@redhat.com> 0.0.2-1
73
+ - new package built with tito
74
+
75
+
76
+
77
+
78
+
79
+
metadata ADDED
@@ -0,0 +1,162 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rhc-rest
3
+ version: !ruby/object:Gem::Version
4
+ hash: 17
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 7
10
+ version: 0.0.7
11
+ platform: ruby
12
+ authors:
13
+ - Red Hat
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2012-04-04 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: json
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ hash: 3
29
+ segments:
30
+ - 0
31
+ version: "0"
32
+ type: :runtime
33
+ version_requirements: *id001
34
+ - !ruby/object:Gem::Dependency
35
+ name: rest-client
36
+ prerelease: false
37
+ requirement: &id002 !ruby/object:Gem::Requirement
38
+ none: false
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ hash: 3
43
+ segments:
44
+ - 0
45
+ version: "0"
46
+ type: :runtime
47
+ version_requirements: *id002
48
+ description: Ruby bindings for OpenShift REST API
49
+ email:
50
+ - openshift@redhat.com
51
+ executables: []
52
+
53
+ extensions: []
54
+
55
+ extra_rdoc_files: []
56
+
57
+ files:
58
+ - lib/rhc-rest/application.rb
59
+ - lib/rhc-rest/client.rb
60
+ - lib/rhc-rest/exceptions/exceptions.rb
61
+ - lib/rhc-rest/user.rb
62
+ - lib/rhc-rest/key.rb
63
+ - lib/rhc-rest/domain.rb
64
+ - lib/rhc-rest/cartridge.rb
65
+ - lib/rhc-rest/version.rb
66
+ - lib/rhc-rest.rb
67
+ - bin/sample-usage.rb
68
+ - doc/created.rid
69
+ - doc/Rhc.html
70
+ - doc/Rakefile.html
71
+ - doc/rdoc.css
72
+ - doc/Rhc/Rest.html
73
+ - doc/Rhc/Rest/Application.html
74
+ - doc/Rhc/Rest/User.html
75
+ - doc/Rhc/Rest/ResourceNotFoundException.html
76
+ - doc/Rhc/Rest/Client.html
77
+ - doc/Rhc/Rest/Domain.html
78
+ - doc/Rhc/Rest/ResourceAccessException.html
79
+ - doc/Rhc/Rest/BaseException.html
80
+ - doc/Rhc/Rest/ClientErrorException.html
81
+ - doc/Rhc/Rest/ValidationException.html
82
+ - doc/Rhc/Rest/ServiceUnavailableException.html
83
+ - doc/Rhc/Rest/Cartridge.html
84
+ - doc/Rhc/Rest/ServerErrorException.html
85
+ - doc/Rhc/Rest/UnAuthorizedException.html
86
+ - doc/Rhc/Rest/RequestDeniedException.html
87
+ - doc/Rhc/Rest/Key.html
88
+ - doc/table_of_contents.html
89
+ - doc/index.html
90
+ - doc/images/tag_green.png
91
+ - doc/images/bug.png
92
+ - doc/images/page_green.png
93
+ - doc/images/page_white_text.png
94
+ - doc/images/tag_blue.png
95
+ - doc/images/zoom.png
96
+ - doc/images/page_white_width.png
97
+ - doc/images/package.png
98
+ - doc/images/wrench_orange.png
99
+ - doc/images/transparent.png
100
+ - doc/images/bullet_toggle_minus.png
101
+ - doc/images/bullet_black.png
102
+ - doc/images/date.png
103
+ - doc/images/brick.png
104
+ - doc/images/ruby.png
105
+ - doc/images/wrench.png
106
+ - doc/images/plugin.png
107
+ - doc/images/macFFBgHack.png
108
+ - doc/images/brick_link.png
109
+ - doc/images/find.png
110
+ - doc/images/delete.png
111
+ - doc/images/bullet_toggle_plus.png
112
+ - doc/images/loadingAnimation.gif
113
+ - doc/images/add.png
114
+ - doc/js/darkfish.js
115
+ - doc/js/navigation.js
116
+ - doc/js/searcher.js
117
+ - doc/js/search_index.js
118
+ - doc/js/search.js
119
+ - doc/js/jquery.js
120
+ - doc/doc/created.rid
121
+ - doc/Gemfile.html
122
+ - Rakefile
123
+ - rhc-rest.gemspec
124
+ - Gemfile
125
+ - rhc-rest.spec
126
+ - COPYRIGHT
127
+ - LICENSE
128
+ homepage: http://www.openshift.com
129
+ licenses: []
130
+
131
+ post_install_message:
132
+ rdoc_options: []
133
+
134
+ require_paths:
135
+ - lib
136
+ required_ruby_version: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ">="
140
+ - !ruby/object:Gem::Version
141
+ hash: 3
142
+ segments:
143
+ - 0
144
+ version: "0"
145
+ required_rubygems_version: !ruby/object:Gem::Requirement
146
+ none: false
147
+ requirements:
148
+ - - ">="
149
+ - !ruby/object:Gem::Version
150
+ hash: 3
151
+ segments:
152
+ - 0
153
+ version: "0"
154
+ requirements: []
155
+
156
+ rubyforge_project: rhc-rest
157
+ rubygems_version: 1.8.11
158
+ signing_key:
159
+ specification_version: 3
160
+ summary: Ruby REST client for OpenShift REST API
161
+ test_files: []
162
+