Sha256: 80cca4c70f9adb3035753d8ba584d7aeb9e1a7ddabb4395e6443c2873190b3a7
Contents?: true
Size: 1.51 KB
Versions: 1
Compression:
Stored size: 1.51 KB
Contents
module Octopi class Base def initialize(api, hash) @api = api @keys = [] raise "Missing data for #{@resource}" unless hash hash.each_pair do |k,v| @keys << k next if k =~ /\./ instance_variable_set("@#{k}", v) self.class.send :define_method, "#{k}=" do |v| instance_variable_set("@#{k}", v) end self.class.send :define_method, k do instance_variable_get("@#{k}") end end end def property(p, v) path = "#{self.class.path_for(:resource)}/#{p}" @api.find(path, self.class.resource_name(:singular), v) end def save hash = {} @keys.each { |k| hash[k] = send(k) } @api.save(self.path_for(:resource), hash) end private def self.extract_user_repository(*args) opts = args.last.is_a?(Hash) ? args.pop : {} if opts.empty? user, repo = *args else opts[:repo] = opts[:repository] if opts[:repository] repo = args.pop || opts[:repo] user = opts[:user] end user ||= repo.owner if repo.is_a? Repository if repo.is_a?(String) and !user raise "Need user argument when repository is identified by name" end ret = extract_names(user, repo) ret << opts ret end def self.extract_names(*args) args.map do |v| v = v.name if v.is_a? Repository v = v.login if v.is_a? User v end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
fcoury-octopi-0.0.5 | lib/octopi/base.rb |