# encoding: utf-8 class Panel::Feed::BackEnd::FeedsController < OrbitBackendController before_filter :skip_current_site, only: [:new, :create] CATEGORIES = %w{全部 緊急 一般 研討會 演講 活動 徵才 招標 拖吊 校外 過期 H1N1 失物招領 近期} # Sites available for subscription SITES = [ ["總務處 - 總務處", "www.ga.ntu.edu.tw", "0"], ["總務處 - 總務長室暨總務處秘書室", "sec.ga.ntu.edu.tw", "1"], ["總務處 - 文書組", "doc.ga.ntu.edu.tw", "2"], ["總務處 - 事務組", "general.ga.ntu.edu.tw", "3"], ["總務處 - 保管組", "property.ga.ntu.edu.tw", "4"], ["總務處 - 營繕組", "construction.ga.ntu.edu.tw", "5"], ["總務處 - 出納組", "cashier.ga.ntu.edu.tw", "6"], ["總務處 - 採購組", "procurement.ga.ntu.edu.tw", "7"], ["總務處 - 經營管理組", "fss.ga.ntu.edu.tw", "8"], ["總務處 - 駐警隊", "police.ga.ntu.edu.tw", "9"], ["社科院總務分處", "social.ga.ntu.edu.tw", "10"], ["醫學院總務分處", "medicine.ga.ntu.edu.tw", "11"], ["[測試站]ntu-ga-sec","ntu-ga-sec-new.tp.rulingcom.com","12"], ["[測試站]ntu-ga-police","ntu-ga-police-new.tp.rulingcom.com","13"] ] def index @feeds = AnnouncementFeed.where({from_request: false}) @permission_feeds = AnnouncementFeed.where({from_request: true}) respond_to do |format| format.html end end def new @feed = AnnouncementFeed.new @categories = CATEGORIES @sites = @filtered_sites end def edit @feed = AnnouncementFeed.find(params[:id]) @current_categories = @feed.categories @categories = CATEGORIES end def create @feed = AnnouncementFeed.new(params[:announcement_feed]) @feed.name = SITES[ params[:site].to_i ][0] @feed.link = SITES[ params[:site].to_i ][1] @categories = CATEGORIES @sites = @filtered_sites # if @feed.save ## Testing(TO-DO) ## if permission_request(@feed) @feed.save redirect_to panel_feed_back_end_feeds_url else flash.now[:notice] = t('feed.connection_fail') render 'new' end end def update @feed = AnnouncementFeed.find(params[:id]) if @feed.update_attributes(params[:announcement_feed]) redirect_to panel_feed_back_end_feeds_url else render 'edit' end end def destroy @feed = AnnouncementFeed.find(params[:id]) @feed.destroy redirect_to panel_feed_back_end_feeds_url end def agree require 'net/http' require 'uri' require 'json' @feed = AnnouncementFeed.find(params[:id], conditions: [ "from_request = ?", true]) uri_path = "/panel/feed/back_end/feed_requests/accepted_request" http = Net::HTTP.new(@feed.from_request_link, 80) request = Net::HTTP::Post.new(uri_path) categories = @feed.categories.join(' ') body = { 'link' => @feed.link, 'name' => @feed.name, 'categories' => categories } 3.times do request.set_form_data(body) request.add_field 'X-Auth-Token', '3kjlfksjDFJ' response = http.request(request) if response.code == "200" @feed.destroy break end end redirect_to panel_feed_back_end_feeds_url end def permission_request(feed) require 'net/http' require 'uri' require 'json' uri_path = "/panel/feed/back_end/feed_requests/transferred_request" # http = Net::HTTP.new(feed.link, 80) http = Net::HTTP.new(feed.link, 80) request = Net::HTTP::Post.new(uri_path) categories = feed.categories.join(' ') unless feed.categories.blank? body = { 'link' => feed.link, 'name' => feed.name, 'from_host' => env["HTTP_ORIGIN"].sub("http://",""), 'categories' => categories } status = false 3.times do request.set_form_data(body) request.add_field 'X-Auth-Token', '3kjlfksjDFJ' response = http.request(request) if response.code == "200" status = true break end end return status end private def skip_current_site @filtered_sites = SITES.collect {|site| site unless site[1] == request.host} @filtered_sites.compact! end end