public static string InitVar(string input, PipelineCommand command, ExecutionLog log) { foreach (var variableName in command.GetMultiArgument("var")) { if (!command.Pipeline.Variables.ContainsKey(variableName)) { command.Pipeline.SafeSetVariable(variableName, String.Empty); } } return(input); }
public static string IsInGroup(string input, PipelineCommand command) { if (HttpContext.Current == null) { return(input); } var groups = command.GetMultiArgument("group"); foreach (var group in groups) { if (HttpContext.Current.User.IsInRole(group)) { command.SendToLabel = command.GetArgument("label"); return(input); } } return(input); }
public static string Proxy(string input, PipelineCommand command, ExecutionLog log) { var method = command.GetArgument("method", HttpContext.Current.Request.HttpMethod); var get = command.GetMultiArgument("get"); var post = command.GetMultiArgument("post"); var cookie = command.GetMultiArgument("cookie"); var header = command.GetMultiArgument("header"); var url = GetUrlArgument(input, command); var builder = new UriBuilder(url); // Add querystring args var query = HttpUtility.ParseQueryString(builder.Query); foreach (var getItem in get) { if (HttpContext.Current.Request.QueryString.AllKeys.Contains(getItem)) { query[getItem] = HttpContext.Current.Request.QueryString[getItem]; } } builder.Query = query.ToString(); //var request = CreateProxyRequest(builder.Uri); var request = (HttpWebRequest)WebRequest.Create(builder.Uri); request.Method = method.ToUpper(); // Add form args if (post.Count > 0) { var postBody = HttpUtility.ParseQueryString(""); foreach (var postItem in post) { postBody[postItem] = HttpContext.Current.Request.Form[postItem]; } if (postBody.Count > 0) { var buf = Encoding.UTF8.GetBytes(postBody.ToString()); request.ContentLength = buf.Length; request.GetRequestStream().Write(buf, 0, buf.Length); } } HttpWebResponse response; try { response = (HttpWebResponse)request.GetResponse(); } catch (Exception e) { throw new DeninaException("Proxy request returned an error.", e); } var responseStream = response.GetResponseStream(); if (responseStream == null) { return(String.Empty); } var enc = Encoding.UTF8; // TODO: This is very poor form. I need to dynamically detect encoding... return(new StreamReader(responseStream, enc).ReadToEnd()); }
public static string Concat(string input, PipelineCommand command) { var arguments = command.GetMultiArgument("value"); return(String.Join(String.Empty, arguments)); }