lib/siteleaf/site.rb in siteleaf-2.0.0.pre.beta5 vs lib/siteleaf/site.rb in siteleaf-2.0.0.pre.beta7

- old
+ new

@@ -1,44 +1,99 @@ module Siteleaf class Site < Entity - attr_accessor :title, :domain, :timezone, :metadata + attr_accessor :title, :domain, :timezone, :metadata, :defaults attr_reader :id, :user_id, :created_at, :updated_at def self.find_by_domain(domain) results = Client.get self.endpoint result = results.find {|d| d['domain'] == domain } self.new(result) if result end + def self.import(attrs) + result = Client.post "import", attrs + Job.new(id: result["job_id"]) if result + end + def files result = Client.get "sites/#{self.id}/files" - result.map { |r| File.new(r) } if result + result.map { |r| File.new(r) } if result.is_a? Array end def uploads result = Client.get "sites/#{self.id}/uploads" - result.map { |r| Upload.new(r) } if result + result.map { |r| Upload.new(r) } if result.is_a? Array end def pages result = Client.get "sites/#{self.id}/pages" - result.map { |r| Page.new(r) } if result + result.map { |r| Page.new(r) } if result.is_a? Array end def posts result = Client.get "sites/#{self.id}/posts" - result.map { |r| Post.new(r) } if result + result.map { |r| Post.new(r) } if result.is_a? Array end def collections result = Client.get "sites/#{self.id}/collections" - result.map { |r| Collection.new(r) } if result + result.map { |r| Collection.new(r) } if result.is_a? Array end def publish result = Client.post "sites/#{self.id}/publish", {} - Job.new(id: result.parsed_response["job_id"]) if result + Job.new(id: result["job_id"]) if result + end + + def full_url + "http://#{domain}" + end + + def filename + "_config.yml" + end + + def sha + Digest::SHA1.hexdigest(to_file) + end + + def to_file + config + end + + protected + + def uploads_collection + Collection.new('title' => 'Uploads', 'path' => 'uploads', 'output' => true) + end + + def defaults_config + defaults.map do |d| + { 'scope' => {}, 'values' => d['values'] }.tap do |default| + default['scope']['path'] = d['path'] if d['path'] + default['scope']['type'] = d['type'] if d['type'] + end + end + end + + def collections_config + collections.unshift(uploads_collection).each_with_object({}) do |collection, hash| + hash[collection.path] = collection.metadata || {} + hash[collection.path]['title'] = collection.title + hash[collection.path]['output'] = collection.output + hash[collection.path]['permalink'] = collection.permalink unless collection.permalink.nil? + end + end + + def config + attrs = metadata || {} + attrs['title'] = title + attrs['url'] = full_url + attrs['timezone'] = timezone + attrs['collections'] = collections_config + attrs['defaults'] = defaults_config unless defaults.empty? + attrs.to_yaml end end end \ No newline at end of file