class Octoprint::API
Public Class Methods
new(url, api_key)
click to toggle source
# File lib/octoprint/api.rb, line 6 def initialize(url, api_key) @url = url @api_key = api_key end
Public Instance Methods
method_missing(name, **args, &block)
click to toggle source
Calls superclass method
# File lib/octoprint/api.rb, line 11 def method_missing(name, **args, &block) super unless name_qualified_for_api_request?(name) http_verb = args[:method] || :get response = _connection.public_send http_verb, generate_api_path(name) super if response.status == 404 raise Octoprint::ResponseError.new(response.status, response.body) unless (200..299).include?(response.status) parse(response.body) end
respond_to_missing?(method_name, include_private = false)
click to toggle source
Calls superclass method
# File lib/octoprint/api.rb, line 23 def respond_to_missing?(method_name, include_private = false) return super unless name_qualified_for_api_request?(method_name) super || _connection.get(generate_api_path(method_name)) end
Private Instance Methods
_connection()
click to toggle source
# File lib/octoprint/api.rb, line 31 def _connection @_connection ||= Faraday.new url: @url do |conn| conn.request :multipart conn.headers['X-Api-Key'] = @api_key conn.adapter ::Faraday.default_adapter end end
convert_method_name_into_http_path(name)
click to toggle source
# File lib/octoprint/api.rb, line 43 def convert_method_name_into_http_path(name) name.to_s.gsub('_', '/') end
generate_api_path(method_name)
click to toggle source
# File lib/octoprint/api.rb, line 47 def generate_api_path(method_name) path = convert_method_name_into_http_path(method_name) ['api', path].join('/') end
name_qualified_for_api_request?(name)
click to toggle source
# File lib/octoprint/api.rb, line 52 def name_qualified_for_api_request?(name) # Not qualified if _ at the beginning (name =~ /\A_\w*\z/).nil? end
parse(value)
click to toggle source
# File lib/octoprint/api.rb, line 39 def parse(value) JSON.parse value end