refactor: Remove SRA integration (no public API available)
The SRA (Solicitors Regulation Authority) does not provide a public REST API. Their register is only accessible via their website. Removed all SRA-related code and added ApiTester tool for testing remaining integrations. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
123
tools/ApiTester/Program.cs
Normal file
123
tools/ApiTester/Program.cs
Normal file
@@ -0,0 +1,123 @@
|
||||
using System.Net.Http.Headers;
|
||||
using System.Text.Json;
|
||||
|
||||
Console.WriteLine("=== RealCV API Integration Tester ===\n");
|
||||
|
||||
// Test 1: FCA Register API
|
||||
Console.WriteLine("1. Testing FCA Register API...");
|
||||
try
|
||||
{
|
||||
var fcaClient = new HttpClient();
|
||||
fcaClient.BaseAddress = new Uri("https://register.fca.org.uk/services/V0.1/");
|
||||
fcaClient.DefaultRequestHeaders.Add("X-Auth-Email", "peter.foster@ukdataservices.co.uk");
|
||||
fcaClient.DefaultRequestHeaders.Add("X-Auth-Key", "9ae1aee51e5c717a1135775501c89075");
|
||||
|
||||
var fcaResponse = await fcaClient.GetAsync("Individuals?q=John%20Smith&page=1");
|
||||
Console.WriteLine($" Status: {fcaResponse.StatusCode}");
|
||||
|
||||
if (fcaResponse.IsSuccessStatusCode)
|
||||
{
|
||||
var content = await fcaResponse.Content.ReadAsStringAsync();
|
||||
Console.WriteLine($" ✓ FCA API working");
|
||||
using var doc = JsonDocument.Parse(content);
|
||||
if (doc.RootElement.TryGetProperty("Data", out var data) && data.ValueKind == JsonValueKind.Array)
|
||||
{
|
||||
Console.WriteLine($" Found {data.GetArrayLength()} individuals matching 'John Smith'");
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine($" Response: {content.Substring(0, Math.Min(200, content.Length))}");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine($" ✗ Error: {fcaResponse.StatusCode}");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($" ✗ Error: {ex.Message}");
|
||||
}
|
||||
|
||||
Console.WriteLine();
|
||||
|
||||
// Test 2: ORCID API
|
||||
Console.WriteLine("2. Testing ORCID API...");
|
||||
try
|
||||
{
|
||||
var orcidClient = new HttpClient();
|
||||
orcidClient.BaseAddress = new Uri("https://pub.orcid.org/v3.0/");
|
||||
orcidClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
|
||||
|
||||
// Get a known ORCID record directly
|
||||
var orcidResponse = await orcidClient.GetAsync("0000-0001-5109-3700/record");
|
||||
Console.WriteLine($" Status: {orcidResponse.StatusCode}");
|
||||
|
||||
if (orcidResponse.IsSuccessStatusCode)
|
||||
{
|
||||
var content = await orcidResponse.Content.ReadAsStringAsync();
|
||||
Console.WriteLine($" ✓ ORCID API working");
|
||||
using var doc = JsonDocument.Parse(content);
|
||||
if (doc.RootElement.TryGetProperty("person", out var person) &&
|
||||
person.TryGetProperty("name", out var name))
|
||||
{
|
||||
var givenName = "";
|
||||
var familyName = "";
|
||||
if (name.TryGetProperty("given-names", out var gn) && gn.TryGetProperty("value", out var gnv))
|
||||
givenName = gnv.GetString() ?? "";
|
||||
if (name.TryGetProperty("family-name", out var fn) && fn.TryGetProperty("value", out var fnv))
|
||||
familyName = fnv.GetString() ?? "";
|
||||
Console.WriteLine($" Retrieved record for: {givenName} {familyName}");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine($" ✗ Error: {orcidResponse.StatusCode}");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($" ✗ Error: {ex.Message}");
|
||||
}
|
||||
|
||||
Console.WriteLine();
|
||||
|
||||
// Test 3: GitHub API
|
||||
Console.WriteLine("3. Testing GitHub API...");
|
||||
try
|
||||
{
|
||||
var githubClient = new HttpClient();
|
||||
githubClient.BaseAddress = new Uri("https://api.github.com/");
|
||||
githubClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/vnd.github+json"));
|
||||
githubClient.DefaultRequestHeaders.Add("X-GitHub-Api-Version", "2022-11-28");
|
||||
githubClient.DefaultRequestHeaders.UserAgent.ParseAdd("RealCV/1.0");
|
||||
|
||||
var githubResponse = await githubClient.GetAsync("users/torvalds");
|
||||
Console.WriteLine($" Status: {githubResponse.StatusCode}");
|
||||
|
||||
if (githubResponse.IsSuccessStatusCode)
|
||||
{
|
||||
var content = await githubResponse.Content.ReadAsStringAsync();
|
||||
Console.WriteLine($" ✓ GitHub API working");
|
||||
using var doc = JsonDocument.Parse(content);
|
||||
var name = doc.RootElement.GetProperty("name").GetString();
|
||||
var repos = doc.RootElement.GetProperty("public_repos").GetInt32();
|
||||
var followers = doc.RootElement.GetProperty("followers").GetInt32();
|
||||
Console.WriteLine($" User: {name}, Repos: {repos}, Followers: {followers}");
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine($" ✗ Error: {githubResponse.StatusCode}");
|
||||
}
|
||||
|
||||
if (githubResponse.Headers.TryGetValues("X-RateLimit-Remaining", out var remaining))
|
||||
{
|
||||
Console.WriteLine($" Rate limit remaining: {remaining.First()}");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($" ✗ Error: {ex.Message}");
|
||||
}
|
||||
|
||||
Console.WriteLine("\n=== Tests complete ===");
|
||||
Reference in New Issue
Block a user