require "P4" def p4_login ( port, user, pass, charset ) begin p4 = P4.new p4.port = port if charset p4.charset = charset end p4.connect p4.user = user p4.input = pass ticket = p4.run( "login", "-p" ) info = p4.run( "info" ) if charset return "#{ticket[0]}*#{port}*#{charset}*#{user}", info end return "#{ticket[0]}*#{port}**#{user}", info rescue P4Exception return Array p4.errors.join("\n") ensure if p4.connected? p4.disconnect end end end def p4_cmd( cookie, cmd, args, data ) parts = cookie.split("*") if parts.length < 4 then return Array "Invalid ticket" end ticket = parts[0] port = parts[1] charset = parts[2] user = parts[3, parts.length - 1].join("*") begin p4 = P4.new p4.port = port p4.user = user p4.password = "#{ticket}" if charset.length > 0 p4.charset = charset end p4.connect if data p4.input = data end listing = p4.run( cmd, args ) return "200", listing rescue P4Exception errs = Array.new p4.errors return errs ensure p4.disconnect end end def p4_args( query_hash ) args = Array.new query_hash.each { | name, value | if name != "d" and name != "i" and name != "o" if name and name.length > 0 args << "-#{name}" end if value and value.length > 0 args << "#{value[0]}" end end } return args end