This code returns the query but how can I invoke it within the queryUri? Thanks in advance.
class Program
{
static void Main(string[] args)
{
ServicePointManager.ServerCertificateValidationCallback = ServerCertificateValidationCallback;
var client = new SwisJsonClient
{
Hostname = "localhost",
Username = "admin",
Password = "mypassword"
};
JObject results = client.Query(@"SELECT AlertObjectID
FROM Orion.AlertActive
WHERE ISNULL(Acknowledged, 0) != 1
ORDER BY TriggeredDateTime DESC");
//new JObject {{"vendor", "Cisco"}});
var rows = (JArray)results["results"];
foreach (JObject row in rows)
{
Console.WriteLine("AlertObjectID={0}", row["AlertObjectID"]);
}
}
private static bool ServerCertificateValidationCallback(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
return true; // Trust any certificate
}
}
class SwisJsonClient
{
public string Hostname { get; set; }
public string Username { get; set; }
public string Password { get; set; }
public JObject Query(string swql, JObject parameters = null)
{
var queryObject = new JObject
{
{"query", swql},
{"parameters", parameters ?? new JObject()}
};
return GetSwisJsonResponse(queryObject, "Query");
}
private JObject GetSwisJsonResponse(JObject queryObject, string queryStringTail)
{
string queryUri = string.Format("https://{0}:17778/SolarWinds/InformationService/v3/Json/{1}", Hostname, queryStringTail);
byte[] postData = Encoding.UTF8.GetBytes(queryObject.ToString());
var request = WebRequest.Create(queryUri);
request.Method = "POST";
request.Credentials = new NetworkCredential(Username, Password);
request.ContentType = "application/json";
request.ContentLength = postData.Length;
using (var postStream = request.GetRequestStream())
{
postStream.Write(postData, 0, postData.Length);
}
WebResponse response = request.GetResponse();
using (var responseStream = response.GetResponseStream())
using (var responseReader = new StreamReader(responseStream))
using (var jsonReader = new JsonTextReader(responseReader))
{
return (JObject)JToken.ReadFrom(jsonReader);
}
}
}