lib/splash/helpers.rb in prometheus-splash-0.5.3 vs lib/splash/helpers.rb in prometheus-splash-0.6.0

- old
+ new

@@ -1,26 +1,32 @@ -# @option options [String] :stdout_trace the path of the file where to redirect STDOUT # coding: utf-8 + +# base Splash Module module Splash + + # Helpers namespace module Helpers - + # return the 'root' name + # @return [String] name def user_root return Etc.getpwuid(0).name end + # return the 'root' group name : root or wheel + # @return [String] name def group_root return Etc.getgrgid(0).name end - # facilité pour récupérer les PID depuis une regexp + # facility for retreiving PID from process query # @param [Hash] options - # @option options [String] :pattern un motif de regexp - # @option options [Array] :patterns Un tableau de motif de regexp - # @option options [Bool] :full renvoie tout les details si True - # @return [String|Array] le PID or tout les détails + # @option options [String] :pattern a regexp to search + # @option options [Array] :patterns an array of regexp to search + # @option options [Bool] :full flag to retrieve all process data not only PID + # @return [String|Array] PID or data structure def get_processes(options = {}) patterns = [] patterns = options[:patterns] if options[:patterns] patterns << options[:pattern] if options[:pattern] res = PS.get_all_processes @@ -33,11 +39,11 @@ return res.pick_attr('PID') end end - # facilities to find a file in gem path + # facility to find a file in gem path # @param [String] _gem a Gem name # @param [String] _file a file relative path in the gem # @return [String] the path of the file, if found. # @return [False] if not found def search_file_in_gem(_gem,_file) @@ -65,24 +71,24 @@ end end - # facilité pour vérifier si le process actif est root - # @return [Bool] vrai ou faux + # facility to verifyingif the active process run as root + # @return [Bool] status def is_root? case (Process.uid) when 0 return true else return false end end - # facilité pour s'assurer qu'on execute une méthode avec les droits root + # wrapping execution if process run as root # @param [Symbol] method a method name th wrap - # @return [void] le retour de la méthode wrappée + # @return [void] return of wrapped method def run_as_root(method, options = {}) unless is_root? return {:case => :not_root, :more => "subcommands : #{method.to_s}"} else return self.send method, options @@ -186,19 +192,19 @@ end return 0 end - # @!group facilités sur le système de fichier + # @!group facilities for file system commands - # facilité d'installation de fichier + # facility for file installation # @param [Hash] options - # @option options [String] :source le chemin source du fichier - # @option options [String] :target le chemin cible du fichier - # @option options [String] :mode les droits du fichier du type Octal "XXX" - # @option options [String] :owner le owner du fichier - # @option options [String] :group le groupe du fichier + # @option options [String] :source file source path + # @option options [String] :target file target path + # @option options [String] :mode String for OCTAL rights like "644" + # @option options [String] :owner file owner for target + # @option options [String] :group file group for target def install_file(options = {}) #begin FileUtils::copy options[:source], options[:target] #unless File::exist? options[:target] FileUtils.chmod options[:mode].to_i(8), options[:target] if options[:mode] FileUtils.chown options[:owner], options[:group], options[:target] if options[:owner] and options[:group] @@ -206,16 +212,16 @@ #rescue StandardError # return false #end end - # facilité de création de répertoire + # facility for folder creation # @param [Hash] options - # @option options [String] :path le répertoire à créer (relatif ou absolut) - # @option options [String] :mode les droits du fichier du type Octal "XXX" - # @option options [String] :owner le owner du fichier - # @option options [String] :group le groupe du fichier + # @option options [String] :path folder path (relative or absolute) + # @option options [String] :mode String for OCTAL rights like "644" + # @option options [String] :owner file owner for folder + # @option options [String] :group file group for folder def make_folder(options = {}) begin FileUtils::mkdir_p options[:path] unless File::exist? options[:path] FileUtils.chmod options[:mode].to_i(8), options[:path] if options[:mode] FileUtils.chown options[:owner], options[:group], options[:path] if options[:owner] and options[:group] @@ -223,14 +229,14 @@ rescue StandardError return false end end - # facilité de liaison symbolique de fichier + # facility for Symbolic link # @param [Hash] options - # @option options [String] :source le chemin source du fichier - # @option options [String] :link le chemin du lien symbolique + # @option options [String] :source path of the file + # @option options [String] :link path of the symlink def make_link(options = {}) begin FileUtils::rm options[:link] if (File::symlink? options[:link] and not File::exist? options[:link]) FileUtils::ln_s options[:source], options[:link] unless File::exist? options[:link] return true @@ -239,19 +245,19 @@ end end # @!endgroup - #@!group Vérifiers de l'application + #@!group Verifiers for application : FS and TCP/IP services - # verifier d'existence d'un repertoire + # check folder # @return [Array] of Symbol with error type : [:inexistant,:mode,:owner,:group] # @param [Hash] options - # @option options [String] :path le répertoire (relatif ou absolut) obligatoire - # @option options [String] :mode droit du répertoire optionnel - # @option options [String] :owner owner du répertoire optionnel - # @option options [String] :group groupe du répertoire optionnel + # @option options [String] :path folder path (relative or absolute) + # @option options [String] :mode String for OCTAL rights like "644", optionnal + # @option options [String] :owner file owner for folder, optionnal + # @option options [String] :group file group for folder, optionnal def verify_folder(options ={}) res = Array::new return [:inexistant] unless File.directory?(options[:name]) stat = File.stat(options[:name]) if options[:mode] then @@ -265,25 +271,25 @@ res << :group if Etc.getgrgid(stat.gid).name != options[:group] end return res end - # verifier d'existence d'un lien - # @return [Bool] vrai ou faux + # check symlink + # @return [Boolean] # @param [Hash] options - # @option options [String] :name path du lien + # @option options [String] :name path of the link def verify_link(options ={}) return File.file?(options[:name]) end - # verifier d'existence d'un fichier + # check file # @return [Array] of Symbol with error type : [:inexistant,:mode,:owner,:group] # @param [Hash] options - # @option options [String] :name path du fichier obligatoire - # @option options [String] :mode droit du fichier optionnel - # @option options [String] :owner owner du fichier optionnel - # @option options [String] :group groupe du fichier optionnel + # @option options [String] :name path of file + # @option options [String] :mode String for OCTAL rights like "644", optionnal + # @option options [String] :owner file owner for file, optionnal + # @option options [String] :group file group for file, optionnal def verify_file(options ={}) res = Array::new return [:inexistant] unless File.file?(options[:name]) stat = File.stat(options[:name]) if options[:mode] then @@ -297,15 +303,15 @@ res << :group if Etc.getgrgid(stat.gid).name != options[:group] end return res end - # verifier de l'ecoute d'un service sur un host et port donné en TCP - # @return [Bool] vrai ou faux + # TCP/IP service checker + # @return [Bool] status # @param [Hash] options - # @option options [String] :host le nom d'hote - # @option options [String] :port le port TCP + # @option options [String] :host hostname + # @option options [String] :port TCP port def verify_service(options ={}) begin Timeout::timeout(1) do begin s = TCPSocket.new(options[:host], options[:port]) @@ -319,9 +325,27 @@ return false end end #!@endgroup + + def format_response(data, format) + response = case format + when 'application/json' then JSON.pretty_generate(data) + when 'text/x-yaml' then data.to_yaml + else JSON.pretty_generate(data) + end + return response + end + + def format_by_extensions(extension) + result = { + 'json' => 'application/json', + 'yaml' => 'text/x-yaml', + 'yml' => 'text/x-yaml' + } + return result[extension] + end end end