Sha256: fb47be0ed37fd7bc99e7526baaf1db3f10ccb5450c1e9565a6850af0a215c176

Contents?: true

Size: 1.89 KB

Versions: 770

Compression:

Stored size: 1.89 KB

Contents

require 'httparty'

class Caboose::BlockTypeSource < ActiveRecord::Base
  self.table_name = "block_type_sources"
  
  has_many :block_types, :class_name => 'Caboose::BlockType', :order => 'name'    
  attr_accessible :id,
    :name, 
    :url,
    :token,
    :priority,
    :active    

  # Just get the names and descriptions of all block types from the source
  def refresh_summaries
    resp = nil
    begin
      resp = HTTParty.get("#{self.url}/caboose/block-types?token=#{self.token}")
    rescue HTTParty::Error => e
      Caboose.log(e.message)
      return false
    end
    
    summaries = nil
    begin
      summaries = JSON.parse(resp.body)
    rescue
      Caboose.log("Response body isn't valid JSON.")
      return false
    end
    
    summaries.each do |h|      
      s = Caboose::BlockTypeSummary.where(:block_type_source_id => self.id, :name => h['name']).first
      s = Caboose::BlockTypeSummary.create(:block_type_source_id => self.id) if s.nil?
      s.parse_api_hash(h)
      s.save
    end
    
    return true
  end
  
  # Get the full block type (including children)
  def refresh(name, force = false)
    bt = Caboose::BlockType.where(:name => name).first
    bt = Caboose::BlockType.create(:name => name) if bt.nil?
    return if bt.downloaded && !force    
    if force
      bt.children.each { |bt2| bt2.destroy }
    end

    # Try to contact the source URL
    resp = nil
    begin                             
      resp = HTTParty.get("#{self.url}/caboose/block-types/#{bt.name}?token=#{self.token}")
    rescue HTTParty::Error => e
      Caboose.log(e.message)
      return false
    end
                
    # Try to parse the response
    h = nil
    begin
      h = JSON.parse(resp.body)
    rescue
      Caboose.log("Response body isn't valid JSON.")
      return false
    end     
    #Caboose.log(h)
    # Update the block type
    bt.parse_api_hash(h)
    
    return true
  end
  
end

Version data entries

770 entries across 770 versions & 1 rubygems

Version Path
caboose-cms-0.9.229 app/models/caboose/block_type_source.rb
caboose-cms-0.9.228 app/models/caboose/block_type_source.rb
caboose-cms-0.9.227 app/models/caboose/block_type_source.rb
caboose-cms-0.9.226 app/models/caboose/block_type_source.rb
caboose-cms-0.9.225 app/models/caboose/block_type_source.rb
caboose-cms-0.9.224 app/models/caboose/block_type_source.rb
caboose-cms-0.9.223 app/models/caboose/block_type_source.rb
caboose-cms-0.9.222 app/models/caboose/block_type_source.rb
caboose-cms-0.9.221 app/models/caboose/block_type_source.rb
caboose-cms-0.9.220 app/models/caboose/block_type_source.rb
caboose-cms-0.9.219 app/models/caboose/block_type_source.rb
caboose-cms-0.9.218 app/models/caboose/block_type_source.rb
caboose-cms-0.9.217 app/models/caboose/block_type_source.rb
caboose-cms-0.9.216 app/models/caboose/block_type_source.rb
caboose-cms-0.9.215 app/models/caboose/block_type_source.rb
caboose-cms-0.9.214 app/models/caboose/block_type_source.rb
caboose-cms-0.9.213 app/models/caboose/block_type_source.rb
caboose-cms-0.9.212 app/models/caboose/block_type_source.rb
caboose-cms-0.9.211 app/models/caboose/block_type_source.rb
caboose-cms-0.9.210 app/models/caboose/block_type_source.rb