Skip to content

Instantly share code, notes, and snippets.

@ToJans
Last active February 21, 2024 17:22
Show Gist options
  • Save ToJans/2fc2e225f5c7583d33d0d0a571042576 to your computer and use it in GitHub Desktop.
Save ToJans/2fc2e225f5c7583d33d0d0a571042576 to your computer and use it in GitHub Desktop.
Example console application that downloads leads from vslweb and dumps it to the console
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Net.Http;
using System.Text;
namespace VSL.Examples
{
public class Program
{
public static void Main(string[] args)
{
var client = new AuthorizedHttpClient(username: "a@b.com", password: "xyz");
// request leads for
var storage = "vsl";
var tenant = "vsl";
var from = "20170401"; // YYYYMMDD
var to = "20170430"; // YYYYMMDD
var url =
"https://api.virtualsaleslab.com/r/" +
storage + "/" + tenant +
"/nl/reporting/data/details?From=" +
from + "&To=" + to;
var json = client.GetStringAsync(url).Result;
Console.WriteLine(json);
Console.ReadKey();
}
/// <summary>
/// A http client where the default headers contain the necessary JSON Web token (JWT) in the header.
/// </summary>
public class AuthorizedHttpClient : HttpClient
{
public AuthorizedHttpClient(string username, string password)
{
// always accept JSON format
base.DefaultRequestHeaders.Add("Accept", "application/json");
var tokenRequestUrl = "https://virtualsaleslab.eu.auth0.com/oauth/ro";
var tokenRequestJSON = JsonConvert.SerializeObject(new
{
client_id = "2NGDZHG76TdaNxeupbPZhU4HgPTDBmO0",
username = username,
password = password,
connection = "Username-Password-Authentication",
scope = "openid app_metadata"
});
var tokenRequestContent = new StringContent(tokenRequestJSON, Encoding.UTF8, "application/json");
// request a JWT (JSON Web Token)
var tokenResponseMessage = base.PostAsync(tokenRequestUrl, tokenRequestContent).Result;
// parse the json response text
string tokenResponseText = tokenResponseMessage.Content.ReadAsStringAsync().Result;
var tokenResponse = JObject.Parse(tokenResponseText);
// extract the token from the response
var jwtToken = tokenResponse["id_token"].ToString(); ;
// add the authorization header with the token to the default request headers
base.DefaultRequestHeaders.Add("Authorization", "Bearer " + jwtToken);
}
}
}
}
#!/bin/bash
username="a@b.com"
password="pwd"
storage="vsl"
tenant="vsl"
from="20170401"
to="20170430"
data='{"client_id":"2NGDZHG76TdaNxeupbPZhU4HgPTDBmO0", "username":"'
data=$data$username'", "password":"'
data=$data$password'", "connection":"Username-Password-Authentication", "scope":"openid app_metadata"}'
token=$(curl \
--request POST \
--url 'https://virtualsaleslab.eu.auth0.com/oauth/ro' \
--header 'content-type: application/json' \
--data "$data" \
| grep -Po '"id_token":"[^\"]*' \
| grep -Po '[^\"]*$' )
authheader="Authorization: Bearer $token"
url="https://api.virtualsaleslab.com/r/$storage/$tenant/nl/reporting/data/details?From=$from&To=$to"
curl -H "$authheader" "$url"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment