### Copyright 2022 Pixar ### ### Licensed under the Apache License, Version 2.0 (the "Apache License") ### with the following modification; you may not use this file except in ### compliance with the Apache License and the following modification to it: ### Section 6. Trademarks. is deleted and replaced with: ### ### 6. Trademarks. This License does not grant permission to use the trade ### names, trademarks, service marks, or product names of the Licensor ### and its affiliates, except as required to comply with Section 4(c) of ### the License and to reproduce the content of the NOTICE file. ### ### You may obtain a copy of the Apache License at ### ### http://www.apache.org/licenses/LICENSE-2.0 ### ### Unless required by applicable law or agreed to in writing, software ### distributed under the Apache License with the above modification is ### distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY ### KIND, either express or implied. See the Apache License for the specific ### language governing permissions and limitations under the Apache License. ### ### module Jamf class Connection # This module defines general attributes of a connection object # # These attributes actually come from the token: # base_url, host, port, user, keep_alive?, ssl_version, verify_cert?, # ssl_options, pw_fallback?, jamf_version, jamf_build # There are convience getters defined for them below ############################################################# module Attributes # @return [String,Symbol] an arbitrary name that can be given to this # connection during initialization, using the name: parameter. # defaults to user@hostname:port attr_reader :name # @return [Boolean] are we connected right now? attr_reader :connected alias connected? connected # @return [Integer] Seconds before an http request times out attr_reader :timeout # @return [Integer] Seconds before an http connection open times out attr_reader :open_timeout # @return [Faraday::Connection] the underlying C-API connection object attr_reader :c_cnx # @return [Faraday::Connection] the underlying JPAPI connection object attr_reader :jp_cnx # @return [Jamf::Connection::Token] the token used for connecting attr_reader :token # @return [String] any path in the URL below the hostname. See {#connect} attr_reader :server_path # @return [Faraday::Response] The response from the most recent API call attr_reader :last_http_response # @return [Time] when this connection was connected attr_reader :connect_time alias login_time connect_time # Reset the response timeout for the rest connection # # @param timeout[Integer] the new timeout in seconds # # @return [void] # def timeout=(new_timeout) @timeout = new_timeout.to_i @c_cnx.options[:timeout] = @timeout if @c_cnx @jp_cnx.options[:timeout] = @timeout if @jp_cnx end # Reset the open-connection timeout for the rest connection # # @param timeout[Integer] the new timeout in seconds # # @return [void] # def open_timeout=(new_timeout) @open_timeout = new_timeout.to_i @c_cnx.options[:open_timeout] = @open_timeout if @c_cnx @jp_cnx.options[:open_timeout] = @open_timeout if @jp_cnx end # @return [URI::HTTPS] the base URL to the server def base_url validate_token @token.base_url end # @return [String] the hostname of the Jamf Pro server API connection def host validate_token @token.host end alias server host alias hostname host # @return [Integer] The port of the Jamf Pro server API connection def port validate_token @token.port end # @return [String] the username who's connected to the JSS API def user validate_token @token.user end # @return [Boolean] Is the connection token being automatically refreshed? def keep_alive? validate_token @token.keep_alive? end # @return [Boolean] If keep_alive is true, is the password Cached in memory # to use if the refresh fails? def pw_fallback? validate_token @token.pw_fallback? end # @return [String] SSL version used for the connection def ssl_version validate_token @token.ssl_version end # @return [Boolean] Should the SSL certifcate from the server be verified? def verify_cert? validate_token @token.verify_cert? end alias verify_cert verify_cert? # @return [Hash] the ssl version and verify cert, to pass into faraday connections def ssl_options validate_token @token.ssl_options end # @return [Gem::Version] the version of the Jamf Pro server def jamf_version validate_token @token.jamf_version end # @return [String] the build of the Jamf Pro server def jamf_build validate_token @token.jamf_build end # raise an error if no token yet # @return [void] def validate_token raise Jamf::InvalidConnectionError, 'No token available, use #connect first' unless @token end end # module end # class Connection end # module