diff options
Diffstat (limited to 'lib/sisu/v3dv/remote.rb')
-rw-r--r-- | lib/sisu/v3dv/remote.rb | 211 |
1 files changed, 0 insertions, 211 deletions
diff --git a/lib/sisu/v3dv/remote.rb b/lib/sisu/v3dv/remote.rb deleted file mode 100644 index 4004e5f8..00000000 --- a/lib/sisu/v3dv/remote.rb +++ /dev/null @@ -1,211 +0,0 @@ -# encoding: utf-8 -=begin - - * Name: SiSU - - * Description: a framework for document structuring, publishing and search - - * Author: Ralph Amissah - - * Copyright: (C) 1997 - 2012, Ralph Amissah, All Rights Reserved. - - * License: GPL 3 or later: - - SiSU, a framework for document structuring, publishing and search - - Copyright (C) Ralph Amissah - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation, either version 3 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along with - this program. If not, see <http://www.gnu.org/licenses/>. - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - <http://www.fsf.org/licensing/licenses/gpl.html> - <http://www.gnu.org/licenses/gpl.html> - - <http://www.jus.uio.no/sisu/gpl.fsf/toc.html> - <http://www.jus.uio.no/sisu/gpl.fsf/doc.html> - <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt> - - * SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - - * Hompages: - <http://www.jus.uio.no/sisu> - <http://www.sisudoc.org> - - * Download: - <http://www.jus.uio.no/sisu/SiSU/download.html> - - * Ralph Amissah - <ralph@amissah.com> - <ralph.amissah@gmail.com> - - ** Description: remote operations, get source from or copy output to remote server - -=end -module SiSU_Remote - require_relative 'sysenv' # sysenv.rb - include SiSU_Env - pwd=Dir.pwd - class Put - def initialize(opt) - @opt=opt - @dir=SiSU_Env::InfoEnv.new(@opt.fns) - @put=(@opt.fns =~/\.ssm\.sst$/) \ - ? @opt.fns.gsub(/(.+)?\.ssm\.sst$/,'\1.ssm') - : @opt.fns - @remote=SiSU_Env::InfoRemote.new(@opt) - end - def rsync - SiSU_Screen::Ansi.new(@opt.cmd,'Remote placement ->',@put).dark_grey_title_hi unless @opt.cmd =~/q/ - @remote.rsync.document - end - def rsync_base - SiSU_Screen::Ansi.new(@opt.cmd,'Remote placement ->','rsync').dark_grey_title_hi unless @opt.cmd =~/q/ - @remote.rsync.site_base - end - def rsync_base_sync - SiSU_Screen::Ansi.new(@opt.cmd,'Remote placement ->','rsync and sync').dark_grey_title_hi unless @opt.cmd =~/q/ - @remote.rsync.site_base_sync - end - def rsync_sitemaps - SiSU_Screen::Ansi.new(@opt.cmd,'Remote placement sitemaps ->','rsync').dark_grey_title_hi unless @opt.cmd =~/q/ - @remote.rsync_sitemaps - end - def rsync_harvest - SiSU_Screen::Ansi.new(@opt.cmd,'Remote placement metadata harvest ->','rsync_harvest').dark_grey_title_hi unless @opt.cmd =~/q/ - @remote.rsync_harvest - end - def scp - SiSU_Screen::Ansi.new(@opt.cmd,'Remote placement ->',@put).dark_grey_title_hi unless @opt.cmd =~/q/ - @remote.scp.document - end - def scp_base - SiSU_Screen::Ansi.new(@opt.cmd,'Remote placement of base site ->','excluding images').dark_grey_title_hi unless @opt.cmd =~/q/ - @remote.scp.site_base - end - def scp_base_all - SiSU_Screen::Ansi.new(@opt.cmd,'Remote placement ->','complete').dark_grey_title_hi unless @opt.cmd =~/q/ - @remote.scp.site_base_all - end - end - class Get - def initialize(opt,get_s) - @opt,@get_s=opt,get_s - @msg,@msgs='',nil - @tell=lambda { SiSU_Screen::Ansi.new(@opt.cmd,@msg,"#{@msgs.inspect if @msgs}") } - end - def fns - require 'open-uri' - require 'pp' - require_relative 'composite' # composite.rb - @rgx_image=/(?:^|[^_\\])\{\s*(\S+?\.(?:png|jpg|gif))/ - @rgx_skin=/@skin:\s+(\S+)/ - threads=[] - for requested_page in @get_s - re_fnb=/((?:https?|file):\/\/[^\/ ]+?\/[^\/ ]+?)\/\S+?\/([^\/]+?)\.ss(t)/ #revisit and remove DO - threads << Thread.new(requested_page) do |url| - open(url) do |f| - raise "#{url} not found" unless f - base_uri,fnb,instr=re_fnb.match(url)[1..3] if re_fnb - imagedir=base_uri + '/_sisu/image' #check on - doc_skin_dir = /((?:https?|file):\/\/\S+?)\/[^\/]+?\.sst$/.match(url).captures.join + '/_sisu/skin/doc' - downloaded_file=File.new("#{fnb}.-sst",'w+') - image_download_url=SiSU_Assemble::RemoteImage.new.image(imagedir) - images=[] - skin=SiSU_Assemble::RemoteImage.new.image(doc_skin_dir) - f.collect.each do |r| # work area - unless r =~/^%+\s/ - skin << r.scan(@rgx_skin).uniq if r =~@rgx_skin - if r !~/^%+\s/ \ - and r =~@rgx_image - images << r.scan(@rgx_image).uniq - end - end - downloaded_file << r - end - if skin \ - and skin.length > 0 - SiSU_Assemble::RemoteImage.new.download_doc_skin(skin) - end - if images \ - and images.length > 1 - images=images.flatten.uniq - images.delete_if {|x| x =~/https?:\/\// } - images=images.sort - @msg,@msgs='downloading images:', [ images.join(',') ] - @tell.call.warn unless @opt.cmd =~/q/ - image_info=image_download_url + images - SiSU_Assemble::RemoteImage.new.download_images(image_info) - #SiSU_Assemble::RemoteImage.new.download_images(image_download_url,images) - @msg,@msgs='downloading done',nil - @tell.call.warn unless @opt.cmd =~/q/ - end - downloaded_file.close - end - end - end - threads.each {|thr| thr.join} if threads #and threads.length > 0 - end - def sisupod - get_p=@get_s - if get_p.length > 0 #% remote sisupod - require 'net/http' - for requested_pod in get_p - pod_info=RemoteDownload.new(requested_pod) - Net::HTTP.start(pod_info.pod.site) do |http| - resp=http.get("#{pod_info.pod.path}/#{pod_info.pod.name_source}") - open(pod_info.pod.name,'wb') do |file| - file.write(resp.body) - end - end - end - end - end - end - class RemoteDownload - def initialize(requested_file) - @requested_file=requested_file - end - def pod - re_p_div=/https?:\/\/([^\/]+)(\/\S+)\/(sisupod\.(?:txz|zip)|\S+?(?:\.ss[mt]\.(?:txz|zip))?|[^\/]+?\.ssp)$/ - re_p=/(sisupod\.(?:txz|zip)|\S+?\.ss[mt]\.(?:txz|zip)?|[^\/]+?\.ssp)$/ - if @requested_file =~ re_p_div - @site,@pth,@pod= re_p_div.match(@requested_file).captures - elsif @requested_file =~ re_p - @pod=re_p.match(@requested_file).captures.join - end - def site - @site - end - def path - @pth - end - def dir_stub - re_p_stub=/.+?([^\/]+)$/ - pod_stub= re_p_stub.match(path).captures.join if path - end - def name_source - @pod - end - def name - name_source - end - self - end - end -end -__END__ |