Module: Jamf::Connection::JamfProAPI
- Included in:
- Jamf::Connection
- Defined in:
- lib/jamf/api/connection/jamf_pro_api.rb
Overview
This Module defines methods used for interacting with the Jamf Pro API. This includes creating the Faraday connection, sending HTTP requests and handling responses
Instance Method Summary collapse
-
#create_jp_connection(parse_json: true) ⇒ Object
create the faraday JPAPI connection object.
-
#jp_delete(rsrc) ⇒ String
(also: #delete)
Delete an existing Jamf Pro API resource.
-
#jp_download(rsrc) ⇒ Object
GET a rsrc without doing any JSON parsing, using a temporary Faraday connection object.
-
#jp_get(rsrc) ⇒ Hash
(also: #get)
The result of the get.
-
#jp_patch(rsrc, data) ⇒ String
(also: #patch)
Update an existing Jamf Pro API resource.
-
#jp_post(rsrc, data) ⇒ String
(also: #post)
Create a JPAPI resource via POST.
-
#jp_put(rsrc, data) ⇒ String
(also: #put)
Replace an existing Jamf Pro API resource.
Instance Method Details
#create_jp_connection(parse_json: true) ⇒ Object
create the faraday JPAPI connection object
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/jamf/api/connection/jamf_pro_api.rb', line 38 def create_jp_connection(parse_json: true) Faraday.new(@jp_base_url, ssl: ) do |cnx| # use a proc for the token value, so its looked up on every request # meaning we don't have to validate that the token is still valid before every request # because the Token instance will (usually) refresh it automatically. cnx.request :authorization, 'Bearer', -> { @token.token } cnx.[:timeout] = @timeout cnx.[:open_timeout] = @open_timeout if parse_json cnx.request :json cnx.response :json, parser_options: { symbolize_names: true } end cnx.adapter :net_http end end |
#jp_delete(rsrc) ⇒ String Also known as: delete
Delete an existing Jamf Pro API resource
156 157 158 159 160 161 162 163 164 |
# File 'lib/jamf/api/connection/jamf_pro_api.rb', line 156 def jp_delete(rsrc) validate_connected rsrc = rsrc.delete_prefix Jamf::Connection::SLASH resp = @jp_cnx.delete rsrc @last_http_response = resp return resp.body if resp.success? raise Jamf::Connection::JamfProAPIError, resp end |
#jp_download(rsrc) ⇒ Object
GET a rsrc without doing any JSON parsing, using a temporary Faraday connection object
171 172 173 174 175 176 177 178 179 |
# File 'lib/jamf/api/connection/jamf_pro_api.rb', line 171 def jp_download(rsrc) rsrc = rsrc.delete_prefix Jamf::Connection::SLASH temp_cnx = create_jp_connection(parse_json: false) resp = temp_cnx.get rsrc @last_http_response = resp return resp.body if resp.success? raise Jamf::Connection::JamfProAPIError, resp end |
#jp_get(rsrc) ⇒ Hash Also known as: get
Returns the result of the get.
62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/jamf/api/connection/jamf_pro_api.rb', line 62 def jp_get(rsrc) validate_connected rsrc = rsrc.delete_prefix Jamf::Connection::SLASH resp = @jp_cnx.get(rsrc) do |req| # Modify the request here if needed. # puts "JPAPI Cookie is: #{req.headers['Cookie']}" end @last_http_response = resp return resp.body if resp.success? raise Jamf::Connection::JamfProAPIError, resp end |
#jp_patch(rsrc, data) ⇒ String Also known as: patch
Update an existing Jamf Pro API resource
133 134 135 136 137 138 139 140 141 142 143 144 145 |
# File 'lib/jamf/api/connection/jamf_pro_api.rb', line 133 def jp_patch(rsrc, data) validate_connected rsrc = rsrc.delete_prefix Jamf::Connection::SLASH resp = @jp_cnx.patch(rsrc) do |req| # Patch requests must use this content type! req.headers['Content-Type'] = 'application/merge-patch+json' req.body = data end @last_http_response = resp return resp.body if resp.success? raise Jamf::Connection::JamfProAPIError, resp end |
#jp_post(rsrc, data) ⇒ String Also known as: post
Create a JPAPI resource via POST
87 88 89 90 91 92 93 94 95 96 97 |
# File 'lib/jamf/api/connection/jamf_pro_api.rb', line 87 def jp_post(rsrc, data) validate_connected rsrc = rsrc.delete_prefix Jamf::Connection::SLASH resp = @jp_cnx.post(rsrc) do |req| req.body = data end @last_http_response = resp return resp.body if resp.success? raise Jamf::Connection::JamfProAPIError, resp end |
#jp_put(rsrc, data) ⇒ String Also known as: put
Replace an existing Jamf Pro API resource
110 111 112 113 114 115 116 117 118 119 120 |
# File 'lib/jamf/api/connection/jamf_pro_api.rb', line 110 def jp_put(rsrc, data) validate_connected rsrc = rsrc.delete_prefix Jamf::Connection::SLASH resp = @jp_cnx.put(rsrc) do |req| req.body = data end @last_http_response = resp return resp.body if resp.success? raise Jamf::Connection::JamfProAPIError, resp end |