Skip to main content

General

The General handler aides Ranger with preparation of certain Deputy package types such as Event and allows Ranger to query the Deputy package repository. Currently the General handler supports two types of gRpc services, Event and DeputyQuery.

Services

Event

Event package types are used to display additional information to the participant in the Ranger environment in the form of a custom HTML page.

create

The Event create gRPC endpoint is used to convert the Markdown pages to HTML and prepare them for Ranger to use. Redis is used to keep track of the created files and their metadata.

message Source {
string name = 1;
string version = 2;
}
Successful Response
message EventCreateResponse {
string id = 1;
string checksum = 2;
string filename = 3;
int64 size = 4;
}

stream

The previously prepared HTML pages are streamed to Ranger through the stream gRPC endpoint.

Request
message Identifier {
string value = 1;
}
Successful Response
stream message EventStreamResponse {
bytes chunk = 1;
}

delete

Delete is used to remove a previously created HTML file from the General handler.

Request
message Identifier {
string value = 1;
}
Successful Response
message Empty {}

DeputyQuery

DeputyQuery currently has two gRPC endpoints, GetPackagesByType and GetScenario.

GetPackagesByType

GetPackagesByType is used to query the Deputy package repository for packages of a specific type.

Request
message GetPackagesQuery {
string package_type = 1;
}
Successful Response
message GetPackagesResponse {
repeated Package packages = 1;
}

For reference, the Package message is defined as follows:

message Package {
string name = 1;
string version = 2;
string type = 3;
}

GetScenario

GetScenario is used to extract the SDL from a given Deputy package of type Exercise.

Request
message Source {
string name = 1;
string version = 2;
}
Successful Response
message GetScenarioResponse {
string sdl = 1;
}

Configuration

The following configuration options are available for the General handler:

VariableMandatoryTypeRules
redis_addressyesstringRedis address
redis_passwordyesstringRedis password
server_addressyesstringThe handlers own address and port

Example configuration file:

redis_address: redis-container:6379
redis_password: redis_password
server_address: 0.0.0.0:7777