Module: Nexpose::AJAX
- Defined in:
- lib/nexpose/ajax.rb
Overview
Accessor to the Nexpose AJAX API. These core methods should allow direct access to underlying controllers in order to test functionality that is not currently exposed through the XML API.
Defined Under Namespace
Modules: CONTENT_TYPE
Class Method Summary collapse
- ._get_rows(nsc, pref) ⇒ Object
-
._headers(nsc, request) ⇒ Object
Attach necessary header fields.
-
._https(nsc) ⇒ Object
Use the Nexpose::Connection to establish a correct HTTPS object.
- ._request(nsc, request) ⇒ Object
- ._row_pref_of(val) ⇒ Object
- ._set_rows(nsc, pref, value) ⇒ Object
-
.delete(nsc, uri, content_type = CONTENT_TYPE::XML) ⇒ Object
DELETE call to a Nexpose controller.
-
.form_post(nsc, uri, parameters, content_type = CONTENT_TYPE::FORM) ⇒ Hash
POST call to a Nexpose controller that uses a form-post model.
-
.get(nsc, uri, content_type = CONTENT_TYPE::XML, options = {}) ⇒ String|REXML::Document|Hash
GET call to a Nexpose controller.
-
.parameterize_uri(uri, parameters) ⇒ Hash
Append the query parameters to given URI.
-
.patch(nsc, uri, payload = nil, content_type = CONTENT_TYPE::XML) ⇒ String
PATCH call to a Nexpose controller.
-
.post(nsc, uri, payload = nil, content_type = CONTENT_TYPE::XML) ⇒ String|REXML::Document|Hash
POST call to a Nexpose controller.
- .preserving_preference(nsc, pref) ⇒ Object
-
.put(nsc, uri, payload = nil, content_type = CONTENT_TYPE::XML) ⇒ String
PUT call to a Nexpose controller.
Class Method Details
._get_rows(nsc, pref) ⇒ Object
167 168 169 170 171 172 173 174 175 176 177 |
# File 'lib/nexpose/ajax.rb', line 167 def _get_rows(nsc, pref) uri = '/ajax/user_pref_get.txml' resp = get(nsc, uri, CONTENT_TYPE::XML, 'name' => "#{pref}.rows") xml = REXML::Document.new(resp) if val = REXML::XPath.first(xml, 'GetUserPref/userPref') rows = val.text.to_i rows > 0 ? rows : 10 else 10 end end |
._headers(nsc, request) ⇒ Object
Attach necessary header fields.
143 144 145 146 |
# File 'lib/nexpose/ajax.rb', line 143 def _headers(nsc, request) request.add_field('nexposeCCSessionID', nsc.session_id) request.add_field('Cookie', "nexposeCCSessionID=#{nsc.session_id}") end |
._https(nsc) ⇒ Object
Use the Nexpose::Connection to establish a correct HTTPS object.
135 136 137 138 139 140 |
# File 'lib/nexpose/ajax.rb', line 135 def _https(nsc) http = Net::HTTP.new(nsc.host, nsc.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE http end |
._request(nsc, request) ⇒ Object
148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 |
# File 'lib/nexpose/ajax.rb', line 148 def _request(nsc, request) http = _https(nsc) _headers(nsc, request) # Return response body if request is successful. Brittle. response = http.request(request) case response when Net::HTTPOK response.body when Net::HTTPCreated response.body when Net::HTTPUnauthorized raise Nexpose::PermissionError.new(response) else req_type = request.class.name.split('::').last.upcase raise Nexpose::APIError.new(response, "#{req_type} request to #{request.path} failed. #{request.body}") end end |
._row_pref_of(val) ⇒ Object
190 191 192 193 194 195 196 197 198 199 200 201 202 |
# File 'lib/nexpose/ajax.rb', line 190 def _row_pref_of(val) if val.nil? || val > 100 500 elsif val > 50 100 elsif val > 25 50 elsif val > 10 25 else 10 end end |
._set_rows(nsc, pref, value) ⇒ Object
179 180 181 182 183 184 185 186 187 188 |
# File 'lib/nexpose/ajax.rb', line 179 def _set_rows(nsc, pref, value) uri = '/ajax/user_pref_set.txml' params = { 'name' => "#{pref}.rows", 'value' => value } resp = get(nsc, uri, CONTENT_TYPE::XML, params) xml = REXML::Document.new(resp) if attr = REXML::XPath.first(xml, 'SetUserPref/@success') attr.value == '1' end end |
.delete(nsc, uri, content_type = CONTENT_TYPE::XML) ⇒ Object
DELETE call to a Nexpose controller.
101 102 103 104 105 |
# File 'lib/nexpose/ajax.rb', line 101 def delete(nsc, uri, content_type = CONTENT_TYPE::XML) delete = Net::HTTP::Delete.new(uri) delete.set_content_type(content_type) _request(nsc, delete) end |
.form_post(nsc, uri, parameters, content_type = CONTENT_TYPE::FORM) ⇒ Hash
POST call to a Nexpose controller that uses a form-post model. This is here to support legacy use of POST in old controllers.
89 90 91 92 93 94 |
# File 'lib/nexpose/ajax.rb', line 89 def form_post(nsc, uri, parameters, content_type = CONTENT_TYPE::FORM) post = Net::HTTP::Post.new(uri) post.set_content_type(content_type) post.set_form_data(parameters) _request(nsc, post) end |
.get(nsc, uri, content_type = CONTENT_TYPE::XML, options = {}) ⇒ String|REXML::Document|Hash
GET call to a Nexpose controller.
27 28 29 30 31 32 |
# File 'lib/nexpose/ajax.rb', line 27 def get(nsc, uri, content_type = CONTENT_TYPE::XML, = {}) parameterize_uri(uri, ) get = Net::HTTP::Get.new(uri) get.set_content_type(content_type) _request(nsc, get) end |
.parameterize_uri(uri, parameters) ⇒ Hash
Append the query parameters to given URI.
114 115 116 117 118 119 120 |
# File 'lib/nexpose/ajax.rb', line 114 def parameterize_uri(uri, parameters) params = Hash.try_convert(parameters) unless params.nil? || params.empty? uri = uri.concat(('?').concat(parameters.map { |k, v| "#{k}=#{CGI.escape(v.to_s)}" }.join('&'))) end uri end |
.patch(nsc, uri, payload = nil, content_type = CONTENT_TYPE::XML) ⇒ String
PATCH call to a Nexpose controller.
72 73 74 75 76 77 |
# File 'lib/nexpose/ajax.rb', line 72 def patch(nsc, uri, payload = nil, content_type = CONTENT_TYPE::XML) patch = Net::HTTP::Patch.new(uri) patch.set_content_type(content_type) patch.body = payload.to_s if payload _request(nsc, patch) end |
.post(nsc, uri, payload = nil, content_type = CONTENT_TYPE::XML) ⇒ String|REXML::Document|Hash
POST call to a Nexpose controller.
57 58 59 60 61 62 |
# File 'lib/nexpose/ajax.rb', line 57 def post(nsc, uri, payload = nil, content_type = CONTENT_TYPE::XML) post = Net::HTTP::Post.new(uri) post.set_content_type(content_type) post.body = payload.to_s if payload _request(nsc, post) end |
.preserving_preference(nsc, pref) ⇒ Object
122 123 124 125 126 127 128 129 |
# File 'lib/nexpose/ajax.rb', line 122 def preserving_preference(nsc, pref) begin orig = _get_rows(nsc, pref) yield ensure _set_rows(nsc, pref, orig) end end |
.put(nsc, uri, payload = nil, content_type = CONTENT_TYPE::XML) ⇒ String
PUT call to a Nexpose controller.
42 43 44 45 46 47 |
# File 'lib/nexpose/ajax.rb', line 42 def put(nsc, uri, payload = nil, content_type = CONTENT_TYPE::XML) put = Net::HTTP::Put.new(uri) put.set_content_type(content_type) put.body = payload.to_s if payload _request(nsc, put) end |