require "net/http" require "uri" require 'json' class Admin::ImportController < ApplicationController def rss2_news @url = params['url'] uri = URI.parse(@url) @host = uri.host http = Net::HTTP.new(uri.host, uri.port) request = Net::HTTP::Get.new(uri.request_uri) response = http.request(request) data = response.body data = JSON.parse(data) @categories = data['categories'] @data = data['data'] @xxx = [] @new_category_ids = {} l = I18n.locale I18n.locale = :zh_tw module_id = ModuleApp.where(:key=>"announcement").first.id @categories.each do |category| x = Category.where(:title => category["zh_tw"]).first if x.nil? @xxx << category cat = Category.new titles = {} @site_valid_locales.each do |locale| titles[locale] = category[locale] end cat.title_translations = titles cat.module_app_id = module_id cat.save! @new_category_ids[category["id"]] = cat.id else @new_category_ids[category["id"]] = x.id end end @user = User.where(:user_id => "rulingcom").first @data.each do |row| bulletin = Bulletin.new bulletin.title_translations = row['Title'] bulletin.subtitle_translations = row['Summary'] @site_valid_locales.each do |locale| temp = row['Content'][locale] urls = Nokogiri::HTML(temp).css("img").map do |link| if URI.parse(link.attr("src")).host == @host link.attr("src") end end urls.each do |url| a = Asset.new a.remote_data_url = url a.assetable_type = "User" a.assetable_id = @user.id a.title = {"en" => a["data"], "zh_tw" => a["data"]} a.save! temp.sub!(url,a.data.to_s) end row['Content'][locale] = temp end bulletin.text_translations = row['Content'] bulletin.category_id = @new_category_ids[row["Category"]] bulletin.view_count = row["Visits"] bulletin.postdate = row["PostDate"] bulletin.deadline = row['Deadline'] bulletin.remote_image_url = row["Pic"] if row["Pic"] if row["URL"] && row['URL'] != "" bl = BulletinLink.new bl.url = row["URL"] bl.title_translations = {"en" => "Link", "zh_tw" => "Link"} bl.bulletin_id = bulletin.id bl.save! end row['files'].each do |f| bf = BulletinFile.new bf.remote_file_url = f['url'] bf.title_translations = {"en" => f['title'], "zh_tw" => f['title']} bf.bulletin_id = bulletin.id bf.save! end bulletin.tagged_ids = [] bulletin.save! end I18n.locale = l render :json => {"success"=>true}.to_json end end