in tools/Elasticurl/Elasticurl.cs [73:207]
static void ParseArgs(string[] args)
{
try
{
// Convert --arg=value into --arg value
List<string> expandedArgs = new List<string>();
foreach (string arg in args)
{
if (arg.StartsWith("--"))
{
expandedArgs.AddRange(arg.Split('='));
}
else
{
expandedArgs.Add(arg);
}
}
args = expandedArgs.ToArray();
string uri = "";
for (int argIdx = 0; argIdx < args.Length; ++argIdx)
{
string arg = args[argIdx];
switch (arg)
{
case "--cacert":
ctx.CACert = NextArg(args, ref argIdx);
break;
case "--capath":
ctx.CAPath = NextArg(args, ref argIdx);
break;
case "-c":
case "--cert":
ctx.Certificate = NextArg(args, ref argIdx);
break;
case "--data":
case "-d":
string data = NextArg(args, ref argIdx);
ctx.PayloadStream = new MemoryStream(Encoding.UTF8.GetBytes(data));
break;
case "--key":
ctx.PrivateKey = NextArg(args, ref argIdx);
break;
case "--connect-timeout":
ctx.ConnectTimeoutMs = uint.Parse(NextArg(args, ref argIdx));
break;
case "--get":
case "-G":
ctx.Verb = "GET";
break;
case "--data-file":
string file = NextArg(args, ref argIdx);
ctx.PayloadStream = File.OpenRead(file);
break;
case "--header":
case "-H":
ctx.Headers.Add(NextArg(args, ref argIdx));
break;
case "--help":
case "-h":
ShowHelp();
Environment.Exit(0);
break;
case "--head":
case "-I":
ctx.Verb = "HEAD";
break;
case "--include":
case "-i":
ctx.IncludeHeaders = true;
break;
case "--insecure":
case "-k":
ctx.Insecure = true;
break;
case "--method":
case "-M":
ctx.Verb = NextArg(args, ref argIdx);
break;
case "--output":
case "-o":
ctx.OutputFilename = NextArg(args, ref argIdx);
break;
case "--post":
case "-P":
ctx.Verb = "POST";
break;
case "--trace":
case "-t":
ctx.TraceFile = NextArg(args, ref argIdx);
break;
case "--verbose":
case "-v":
string level = NextArg(args, ref argIdx);
bool found = false;
foreach (LogLevel value in Enum.GetValues(typeof(LogLevel)))
{
if (string.Equals(level, value.ToString(), StringComparison.OrdinalIgnoreCase))
{
ctx.LogLevel = value;
found = true;
break;
}
}
if (!found)
{
Console.WriteLine("Invalid log level: {0}", level);
ShowHelp();
Environment.Exit(-1);
}
break;
default:
if (argIdx < args.Length - 1) {
ShowHelp();
Environment.Exit(0);
return;
} else {
uri = arg;
}
break;
}
}
ctx.Uri = new Uri(uri);
}
catch (IndexOutOfRangeException)
{
ShowHelp();
Environment.Exit(-1);
}
catch (UriFormatException ufe)
{
Console.WriteLine("Invalid URI: {0}: {1}", args[args.Length - 1], ufe.Message);
Environment.Exit(-1);
}
}