lib/siteleaf/site.rb in siteleaf-1.0.11 vs lib/siteleaf/site.rb in siteleaf-2.0.0.pre.beta1

- old
+ new

@@ -1,108 +1,44 @@ module Siteleaf class Site < Entity - attr_accessor :title, :domain, :timezone, :meta, :posts_path, :version + attr_accessor :title, :domain, :timezone, :metadata attr_reader :id, :user_id, :created_at, :updated_at - + def self.find_by_domain(domain) - result = Client.get self.endpoint, {"domain" => domain} - self.new(result.first) if result and result.size >= 1 + results = Client.get self.endpoint + result = results.find {|d| d['domain'] == domain } + self.new(result) if result end - - def theme - @theme ||= if result = Client.get("sites/#{self.id}/theme") - theme = Theme.new(result) - theme.site_id = self.id - theme - end + + def files + result = Client.get "sites/#{self.id}/files" + result.map { |r| File.new(r) } if result end - - def assets - result = Client.get "sites/#{self.id}/assets" - result.map { |r| Asset.new(r) } if result + + def uploads + result = Client.get "sites/#{self.id}/uploads" + result.map { |r| Upload.new(r) } if result end - + def pages - result = Client.get "sites/#{self.id}/pages?include=user" + result = Client.get "sites/#{self.id}/pages" result.map { |r| Page.new(r) } if result end - + def posts - result = Client.get "sites/#{self.id}/posts?include=user" + result = Client.get "sites/#{self.id}/posts" result.map { |r| Post.new(r) } if result end - - def resolve(url = '/') - Client.get "sites/#{self.id}/resolve", {"url" => url} + + def collections + result = Client.get "sites/#{self.id}/collections" + result.map { |r| Collection.new(r) } if result end - - def preview(url = '/', template = nil) - Client.post "sites/#{self.id}/preview", {"url" => url, "template" => template} - end - + def publish result = Client.post "sites/#{self.id}/publish", {} Job.new(id: result.parsed_response["job_id"]) if result end - - def posts_path - @posts_path || 'posts' - end - - def filename - "_config.yml" - end - - def config - attrs = {} - attrs['title'] = title - attrs['url'] = "http://#{domain}" - attrs['timezone'] = timezone - attrs['permalink'] = 'pretty' - attrs['markdown'] = 'kramdown' - - meta.each{|m| attrs[m['key'].to_s.downcase] = m['value'].to_s == '' ? nil : m['value'].to_s.gsub("\r\n","\n")} unless meta.nil? - - # output uploads using v1 /assets path - attrs['collections'] = { - 'uploads' => { - 'title' => 'Uploads', - 'output' => true - } - } - - # use collections for any set of posts not called "posts" - pages.each do |page| - path = page.url.sub('/','').gsub('/','_') - if path != posts_path && page.posts.size > 0 - attrs['collections'][path] = {'output' => true} - # output permalink for non-standard urls (e.g. posts inside sub-pages) - attrs['collections'][path]['permalink'] = "#{page.url}/:path" if path != page.slug - end - end - - # set permalink style for posts - attrs['defaults'] = [{ - 'scope' => { - 'path' => '', - 'type' => 'posts' - }, - 'values' => { - 'permalink' => "/#{posts_path}/:title/" - } - }] - - attrs - end - - def to_file(dir = 'export') - assets = Dir.glob("#{dir}/_uploads/**/*").each_with_object({}) do |var, hash| - # remap assets to _uploads - hash[var.sub("#{dir}/_uploads",'/assets')] = var.sub("#{dir}/_uploads",'/uploads') - end - - config.to_yaml.gsub(Regexp.union(assets.keys), assets) - end - + end -end +end \ No newline at end of file