93 lines
2.4 KiB
Ruby
93 lines
2.4 KiB
Ruby
require "rss"
|
|
class ArchiveFeedsController < ApplicationController
|
|
include Admin::ArchiveFilesHelper
|
|
def feed_add_remote
|
|
if params[:url].present?
|
|
uid = params[:uid]
|
|
archive_file_feed = ArchiveFileFeed.where(uid: uid).first
|
|
if !(archive_file_feed.remote_urls.include?(params[:url]))
|
|
archive_file_feed.remote_urls << params[:url]
|
|
archive_file_feed.save
|
|
end
|
|
end
|
|
render :json => {success: true}
|
|
end
|
|
def feed_remove_remote
|
|
if params[:url].present?
|
|
uid = params[:uid]
|
|
archive_file_feed = ArchiveFileFeed.where(uid: uid).first
|
|
if archive_file_feed.remote_urls.delete(params[:url])
|
|
archive_file_feed.save
|
|
end
|
|
end
|
|
render :json => {success: true}
|
|
end
|
|
def feed
|
|
uid = params[:uid]
|
|
feed_cache = ArchiveFileFeedCache.where(uid: uid)
|
|
feed_cache_old = feed_cache.last
|
|
count = feed_cache.count
|
|
if count > 1
|
|
feed_cache.limit(count-1).destroy
|
|
end
|
|
feed_cache = feed_cache.first
|
|
archive_content = ''
|
|
if feed_cache.nil?
|
|
archive_content = ArchiveFileFeed.where(uid: uid).first.generate_one_cache_timeout(base_url: request.base_url,timeout: 20)
|
|
archive_content = (feed_cache_old.content rescue "") if archive_content.nil?
|
|
else
|
|
archive_content = feed_cache.content
|
|
end
|
|
render :json => archive_content
|
|
end
|
|
|
|
def rssfeed
|
|
uid = params[:uid]
|
|
@aff = ArchiveFileFeed.find_by(:uid => uid) rescue nil
|
|
if !@aff.nil?
|
|
tags = @aff.tag_ids
|
|
if !tags.empty?
|
|
@archive_files = ArchiveFile.local_data.can_display_and_sorted.filter_by_tags(tags)
|
|
else
|
|
@archive_files = ArchiveFile.local_data.can_display_and_sorted
|
|
end
|
|
categories = @aff.category_ids
|
|
if !categories.empty?
|
|
@archive_files = @archive_files.filter_by_categories(categories)
|
|
end
|
|
end
|
|
respond_to do |format|
|
|
format.html {redirect_to "/xhr/archive_files/rssfeed/#{@aff.uid}.rss"}
|
|
format.rss
|
|
end
|
|
end
|
|
|
|
def feeds
|
|
feeds = []
|
|
ArchiveFileFeed.all.each do |aff|
|
|
feed = {}
|
|
feed["title_translations"] = aff.title_translations
|
|
feed["uid"] = aff.uid
|
|
feed["url"] = "#{request.base_url}/xhr/archive_files/feed/#{aff.uid}"
|
|
feed["xml_url"] = "#{request.base_url}/xhr/archive_files/rssfeed/#{aff.uid}.rss"
|
|
feed["tags"] = []
|
|
aff.tag_ids.each do |t|
|
|
tag = Tag.find(t)
|
|
d = {}
|
|
d["name_translations"] = tag.name_translations
|
|
feed["tags"] << d
|
|
end
|
|
feeds << feed
|
|
end
|
|
render :json => {"feeds" => feeds}.to_json
|
|
end
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|