From 75e3bf86382edf99275a25895b362647158e25c1 Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Tue, 10 Jan 2012 22:37:26 -0500 Subject: v3dv, add dev branch (use to make some changes to module & class names & test) * (intended as) short term branch, merge back into v3 once tested * sisu --dev (to invoke) --- lib/sisu/v3dv/remote.rb | 212 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 212 insertions(+) create mode 100644 lib/sisu/v3dv/remote.rb (limited to 'lib/sisu/v3dv/remote.rb') diff --git a/lib/sisu/v3dv/remote.rb b/lib/sisu/v3dv/remote.rb new file mode 100644 index 00000000..8da87e42 --- /dev/null +++ b/lib/sisu/v3dv/remote.rb @@ -0,0 +1,212 @@ +# 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 . + + If you have Internet connection, the latest version of the GPL should be + available at these locations: + + + + + + + + * SiSU uses: + * Standard SiSU markup syntax, + * Standard SiSU meta-markup syntax, and the + * Standard SiSU object citation numbering and system + + * Hompages: + + + + * Download: + + + * Ralph Amissah + + + + ** 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::Info_env.new(@opt.fns) + @put=(@opt.fns =~/\.ssm\.sst$/) \ + ? @opt.fns.gsub(/(.+)?\.ssm\.sst$/,'\1.ssm') + : @opt.fns + @remote=SiSU_Env::Info_remote.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::Remote_image.new.image(imagedir) + images=[] + skin=SiSU_Assemble::Remote_image.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::Remote_image.new.download_doc_skin(skin) + end + if images \ + and images.length > 1 + images.flatten! + images.uniq! + images.delete_if {|x| x =~/https?:\/\// } + images.sort! + @msg,@msgs='downloading images:', [ images.join(',') ] + @tell.call.warn unless @opt.cmd =~/q/ + image_info=image_download_url + images + SiSU_Assemble::Remote_image.new.download_images(image_info) + #SiSU_Assemble::Remote_image.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=Remote_download.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 Remote_download + 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__ -- cgit v1.2.3 From df67ee1079d074dc2af54aa87187c6538e73d5d7 Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Tue, 10 Jan 2012 22:50:12 -0500 Subject: v3dv: class names, use more CamelCase --- lib/sisu/v3dv/remote.rb | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'lib/sisu/v3dv/remote.rb') diff --git a/lib/sisu/v3dv/remote.rb b/lib/sisu/v3dv/remote.rb index 8da87e42..39e929cc 100644 --- a/lib/sisu/v3dv/remote.rb +++ b/lib/sisu/v3dv/remote.rb @@ -63,11 +63,11 @@ module SiSU_Remote class Put def initialize(opt) @opt=opt - @dir=SiSU_Env::Info_env.new(@opt.fns) + @dir=SiSU_Env::InfoEnv.new(@opt.fns) @put=(@opt.fns =~/\.ssm\.sst$/) \ ? @opt.fns.gsub(/(.+)?\.ssm\.sst$/,'\1.ssm') : @opt.fns - @remote=SiSU_Env::Info_remote.new(@opt) + @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/ @@ -124,9 +124,9 @@ module SiSU_Remote 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::Remote_image.new.image(imagedir) + image_download_url=SiSU_Assemble::RemoteImage.new.image(imagedir) images=[] - skin=SiSU_Assemble::Remote_image.new.image(doc_skin_dir) + 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 @@ -139,7 +139,7 @@ module SiSU_Remote end if skin \ and skin.length > 0 - SiSU_Assemble::Remote_image.new.download_doc_skin(skin) + SiSU_Assemble::RemoteImage.new.download_doc_skin(skin) end if images \ and images.length > 1 @@ -150,8 +150,8 @@ module SiSU_Remote @msg,@msgs='downloading images:', [ images.join(',') ] @tell.call.warn unless @opt.cmd =~/q/ image_info=image_download_url + images - SiSU_Assemble::Remote_image.new.download_images(image_info) - #SiSU_Assemble::Remote_image.new.download_images(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 @@ -166,7 +166,7 @@ module SiSU_Remote if get_p.length > 0 #% remote sisupod require 'net/http' for requested_pod in get_p - pod_info=Remote_download.new(requested_pod) + 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| @@ -177,7 +177,7 @@ module SiSU_Remote end end end - class Remote_download + class RemoteDownload def initialize(requested_file) @requested_file=requested_file end -- cgit v1.2.3