class PuppetForge::V3::Base
Acts as the base class for all PuppetForge::V3::* models.
@api private
Constants
- API_VERSION
Public Class Methods
all(params = {})
click to toggle source
Return a paginated collection of all modules
# File lib/puppet_forge/v3/base.rb, line 105 def all(params = {}) where(params) end
all_stateless(params = {}, conn_opts = {})
click to toggle source
Return a paginated collection of all modules
# File lib/puppet_forge/v3/base.rb, line 110 def all_stateless(params = {}, conn_opts = {}) where_stateless(params, conn_opts) end
api_version()
click to toggle source
# File lib/puppet_forge/v3/base.rb, line 52 def api_version API_VERSION end
convert_plus_to_space(str)
click to toggle source
Faraday's Util#escape method will replace a '+' with '%2B' to prevent it being interpreted as a space. For compatibility with the Forge API, we would like a '+' to be interpreted as a space so they are changed to spaces here.
# File lib/puppet_forge/v3/base.rb, line 133 def convert_plus_to_space(str) str.gsub(/[+]/, ' ') end
find(slug)
click to toggle source
# File lib/puppet_forge/v3/base.rb, line 81 def find(slug) find_request(slug) end
find_request(slug, reset_connection = false, conn_opts = {})
click to toggle source
@private
# File lib/puppet_forge/v3/base.rb, line 73 def find_request(slug, reset_connection = false, conn_opts = {}) return nil if slug.nil? resp = request("#{self.name.split("::").last.downcase}s", slug, {}, reset_connection, conn_opts) self.new(resp.body) end
find_stateless(slug, conn_opts = {})
click to toggle source
# File lib/puppet_forge/v3/base.rb, line 85 def find_stateless(slug, conn_opts = {}) find_request(slug, true, conn_opts) end
get_collection(uri_path)
click to toggle source
# File lib/puppet_forge/v3/base.rb, line 122 def get_collection(uri_path) get_collection_request(uri_path) end
get_collection_request(uri_path, reset_connection = false, conn_opts = {})
click to toggle source
@private
# File lib/puppet_forge/v3/base.rb, line 115 def get_collection_request(uri_path, reset_connection = false, conn_opts = {}) resource, params = split_uri_path uri_path resp = request(resource, nil, params, reset_connection, conn_opts) new_collection(resp) end
get_collection_stateless(uri_path, conn_opts)
click to toggle source
# File lib/puppet_forge/v3/base.rb, line 126 def get_collection_stateless(uri_path, conn_opts) get_collection_request(uri_path, true, conn_opts) end
new(json_response)
click to toggle source
# File lib/puppet_forge/v3/base.rb, line 18 def initialize(json_response) @attributes = json_response orm_resp_item json_response end
new_collection(faraday_resp)
click to toggle source
@private
# File lib/puppet_forge/v3/base.rb, line 153 def new_collection(faraday_resp) if faraday_resp[:errors].nil? PaginatedCollection.new(self, faraday_resp.body[:results], faraday_resp.body[:pagination], nil) else PaginatedCollection.new(self) end end
request(resource, item = nil, params = {}, reset_connection = false, conn_opts = {})
click to toggle source
@private
# File lib/puppet_forge/v3/base.rb, line 57 def request(resource, item = nil, params = {}, reset_connection = false, conn_opts = {}) conn(reset_connection, conn_opts) if reset_connection unless conn.url_prefix =~ /^#{PuppetForge.host}/ conn.url_prefix = "#{PuppetForge.host}" end if item.nil? uri_path = "/v3/#{resource}" else uri_path = "/v3/#{resource}/#{item}" end PuppetForge::V3::Base.conn.get uri_path, params end
split_uri_path(uri_path)
click to toggle source
@private
# File lib/puppet_forge/v3/base.rb, line 138 def split_uri_path(uri_path) all, resource, params = /(?:\/v3\/)([^\/]+)(?:\?)(.*)/.match(uri_path).to_a params = convert_plus_to_space(params).split('&') param_hash = Hash.new params.each do |param| key, val = param.split('=') param_hash[key] = val end [resource, param_hash] end
where(params)
click to toggle source
# File lib/puppet_forge/v3/base.rb, line 96 def where(params) where_request(params) end
where_request(params, reset_connection = false, conn_opts = {})
click to toggle source
@private
# File lib/puppet_forge/v3/base.rb, line 90 def where_request(params, reset_connection = false, conn_opts = {}) resp = request("#{self.name.split("::").last.downcase}s", nil, params, reset_connection, conn_opts) new_collection(resp) end
where_stateless(params, conn_opts = {})
click to toggle source
# File lib/puppet_forge/v3/base.rb, line 100 def where_stateless(params, conn_opts = {}) where_request(params, true, conn_opts) end
Public Instance Methods
attribute(name)
click to toggle source
# File lib/puppet_forge/v3/base.rb, line 38 def attribute(name) @attributes[:"#{name}"] end
attributes()
click to toggle source
# File lib/puppet_forge/v3/base.rb, line 42 def attributes @attributes end
has_attribute?(attr)
click to toggle source
@return true if attribute exists, false otherwise
# File lib/puppet_forge/v3/base.rb, line 34 def has_attribute?(attr) @attributes.has_key?(:"#{attr}") end
orm_resp_item(json_response)
click to toggle source
# File lib/puppet_forge/v3/base.rb, line 23 def orm_resp_item(json_response) json_response.each do |key, value| unless respond_to? key define_singleton_method("#{key}") { @attributes[key] } define_singleton_method("#{key}=") { |val| @attributes[key] = val } end end end