ExamTools 0.0.6
dotnet add package ExamTools --version 0.0.6
NuGet\Install-Package ExamTools -Version 0.0.6
<PackageReference Include="ExamTools" Version="0.0.6" />
paket add ExamTools --version 0.0.6
#r "nuget: ExamTools, 0.0.6"
// Install ExamTools as a Cake Addin #addin nuget:?package=ExamTools&version=0.0.6 // Install ExamTools as a Cake Tool #tool nuget:?package=ExamTools&version=0.0.6
ExamTools API Helper
Note - the ExamTools internal API is undocumented and unsupported. It is not intended for external uses. Use this helper class at your own risk.
Getting Started
This helper class consists of 3 action groups
- Sessions: For taking actions on session objects
- Users: For taking user-related actions (such as logging into ExamTools)
- VEs: For taking VE-related actions
Each helper group also contains the base object and static API class for each type.
Setup
Requires a handful of environment variables. If set correctly, all login and session tracking should happen automatically.
- EXAMTOOLS_ENVIRONMENT - If set to "Production", it will use https://alpha.exam.tools/ as the base URL for ExamTools. Any other value (including null/empty) will use http://examtools.dev as the base ExamTools URL.
- EXAMTOOLS_USERNAME - your ExamTools user name
- EXAMTOOLS_PASSWORD - your ExamTools password
Rough usage
Session Class
The Session
class is a C# class that implements the IAsyncDisposable
interface. It represents a session and contains various properties related to the session.
Properties
Id
: (string, nullable) Represents the session ID.SessionDef
: (string) Represents the session definition.SequenceNumber
: (int) Represents the sequence number of the session.Owner
: (string) Represents the owner of the session.SessionCallsign
: (string) Represents the callsign associated with the session.SessionSummary
: (string) Represents the summary of the session.Date
: (DateTime) Represents the date of the session.Vec
: (VEC.VECs
) Represents the VEC (Volunteer Examiner Coordinator) associated with the session.SessionState
: (State
) Represents the state of the session.ApplicantCount
: (int) Represents the count of applicants for the session.ApplicantLimit
: (int) Represents the limit of applicants for the session.TeamHash
: (string) Represents the hash associated with the team of the session.TeamLeadCallsign
: (string) Represents the callsign of the team lead.TeamId
: (string) Represents the ID of the team.SessionIdentifier
: (string) Represents the identifier of the session.TeamDescription
: (string) Represents the description of the team.SessionVes
: (List<Ve>) Represents a list of VEs (Volunteer Examiners) associated with the session.SessionType
: (Type
) Represents the type of the session.ScheduleOnly
: (bool) Indicates if the session is scheduled only.StreetAddress
: (string) Represents the street address of the session.City
: (string) Represents the city of the session.State
: (string) Represents the state of the session.ZipCode
: (string) Represents the zip code of the session.CanEdit
: (bool) Indicates if the session can be edited.CanVisit
: (bool) Indicates if the session can be visited.AmAssigned
: (bool) Indicates if the session is assigned.
Constructors
Session()
: Default constructor.Session(string sessionId)
: Constructor with a parameter to set the session ID.Session(SessionRaw sessionRaw)
: Constructor that initializes the object from aSessionRaw
object.
Methods
DisposeAsync()
: Implements theDisposeAsync
method of theIAsyncDisposable
interface. Returns a completedValueTask
.
Note: The class uses enums and other custom types such as VEC.VECs
, State
, and Type
. The constructor also handles the conversion from a SessionRaw
object to initialize the Session
object.
Api Class Documentation
The Api
class provides methods to interact with the ExamTools API for managing exam sessions.
Properties
ExamToolsUrl
- Type:
string?
- Description: The base URL for ExamTools API, determined based on the environment (Production or Development).
Fields
Client
- Type:
RestClient
- Description: An instance of the RestClient class configured to communicate with the ExamTools API. It includes a base URL and a CookieContainer obtained from the
GetLoginCookie
method.
Methods
GetSessionList
public static async Task<List<Session>> GetSessionList(VECs vec, DateTime startDate = default(DateTime),
DateTime endDate = default(DateTime), string teamName = "")
- Description: Retrieves a list of exam sessions based on specified criteria.
- Parameters:
vec
: The VECs enumeration representing the VEC (Volunteer Examiner Coordinator).startDate
(optional): The start date for filtering sessions (default isdefault(DateTime)
).endDate
(optional): The end date for filtering sessions (default isdefault(DateTime)
).teamName
(optional): The team name for additional filtering (default is an empty string).
- Returns: A list of
Session
objects.
GetSessionDetailsFromExamTools
public static async Task<Session> GetSessionDetailsFromExamTools(this string Id)
- Description: Retrieves details of a specific exam session using its identifier.
- Parameters:
Id
: The identifier of the exam session.
- Returns: A
Session
object representing the details of the specified session.
Example Usage
// Get a list of sessions
List<Session> sessions = await Api.GetSessionList(VECs.ARRL, new DateTime(2023, 01, 01), new DateTime(2023, 12, 31), "TeamA");
// Get details of a specific session
Session sessionDetails = await "session_id_123".GetSessionDetailsFromExamTools();
Note: Replace VECs.ARRL
and "session_id_123"
with appropriate values in your application.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net7.0
- N1CCK.DateMath (>= 1.0.1)
- RestSharp.Serializers.NewtonsoftJson (>= 110.2.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.