class PagelimeReceiverController

Public Instance Methods

after_publish_callback() click to toggle source
# File lib/app/controllers/pagelime_receiver_controller.rb, line 7
  def after_publish_callback
    
        page_key = Base64.encode64(params[:path])
    Rails.cache.delete("cms:#{page_key}")
    Rails.cache.delete("cms:shared")

# don't do the prefetch below, as the page isn't done publishing (mySQL transaction hasn't completed) at the point when this gets called
=begin
        begin
                new_content = fetch_cms_xml(params[:path]);
        rescue
        end
=end
        
        render :inline => "cache cleared", :status => 200
        
  end
after_publish_callback_old() click to toggle source
# File lib/app/controllers/pagelime_receiver_controller.rb, line 25
def after_publish_callback_old
  
  # the page_id will come from the request
  page_id = params[:page_id]
  
  # TODO: use the API to get content
  uri = URI.parse("http://qa.cms.pagelime.com/API/Account/SOAP/Page.asmx/Get")
  http = Net::HTTP.new(uri.host, uri.port)
  # http.use_ssl = true
  http.open_timeout = 2
  http.read_timeout = 7
  # http.set_debug_output $stderr
  data = {:apiKey => "0fa155c4-9c42-4df6-856a-5cff6e2ff631", :pageId => page_id}.to_json
  response = http.post(uri.path,data,{"content-type"=>"application/json; charset=utf-8","accept"=>"application/json, text/javascript, */*"})

  page_json = JSON.parse(response.body)
  page_json = page_json["d"]
  
  # try to find existing page
  page = PagelimePage.find_by_page_id(page_id)
  if (page)
    # delete existing content
    page.editable_areas.destroy
    page.meta_data.destroy
  else
    # if no page is found, create a new one
    page = PagelimePage.new
  end

  # set the page data
  page.page_id = page_id
  page.path = page_json[:Path]
  page.title = page_json[:Title]
  page.date_published = DateTime.now
  
  # save the page
  page.save
  
  # for each piece of content
  for page_content_json in page_json["EditableRegions"]
    
    # create the content data
    page_content = PagelimeContent.new
    page_content.client_id = page_content_json[:ClientID]
    page_content.page = page
    page_content.html = page_content_json[:Html]
    
    # save content
    page_content.save
    
  end
  
  # for each piece of meta data
  for metadata_json in page_json["MetaDataJSON"]
    
    # create the content data
    page_metadata = PagelimeMetaData.new
    page_metadata.name = metadata_json[0]
    page_metadata.content = metadata_json[1]
    page_metadata.page = page
    
    # save content
    page_metadata.save
    
  end
  
  # respond with an OK status or CREATED status
  render :status => 200
  
end
index() click to toggle source
# File lib/app/controllers/pagelime_receiver_controller.rb, line 3
def index
  render :inline => "working", :status => 200
end