Remove unused REST semantics from cofd API.

This commit is contained in:
projectmoon 2021-01-09 20:02:24 +00:00
parent 7fe28ef82e
commit 6030827464
6 changed files with 542 additions and 1005 deletions

View File

@ -6,7 +6,7 @@ package models.proto.cofd.api;
//Update basic information about a Chronicles of Darkness (or
//derivative system) character sheet. This is a straight overwrite of
//all basic information on the sheet.
message BasicInfo {
message UpdateBasicInfoRequest {
string name = 1;
string gender = 2;
string concept = 3;
@ -14,23 +14,6 @@ message BasicInfo {
int32 age = 5;
}
//Update all attributes in a Chronicles of Darkness character (or
//derivative system) character sheet. This is a straight overwrite of
//all basic information on the sheet.
message Attributes {
int32 strength = 1;
int32 dexterity = 2;
int32 stamina = 3;
int32 intelligence = 4;
int32 wits = 5;
int32 resolve = 6;
int32 presence = 7;
int32 manipulation = 8;
int32 composure = 9;
}
//Generic "did something succeed or not" response.
message ApiResult {
bool success = 1;
@ -45,18 +28,11 @@ message UpdateAttributeRequest {
int32 attribute_value = 4;
}
//Update skill entries in a Chronicles of Darkness character sheet.
//This is a straight overwrite of all skills in the sheet.
message Skills {
repeated CofdSheet.Skill physical_skills = 1;
repeated CofdSheet.Skill mental_skills = 2;
repeated CofdSheet.Skill social_skills = 3;
}
//Full update of a single skill
message SkillUpdate {
string name = 1;
CofdSheet.Skill skill = 2;
message UpdateSkillRequest {
string character_username = 1;
int32 character_id = 2;
CofdSheet.Skill skill = 3;
}
//Partial update of a single skill dot amount.
@ -69,12 +45,21 @@ message UpdateSkillValueRequest {
//Partial update of only a skill's specializations. The
//specializations will be overwritten with the new values.
message SkillSpecializationsUpdate {
message UpdateSkillSpecializationsRequest {
string name = 1;
repeated string specializations = 2;
}
//Add a Condition to a Chronicles of Darkness character sheet.
message Condition {
string name = 1;
message AddConditionRequest {
string character_username = 1;
int32 character_id = 2;
string condition_name = 3;
}
//Remove a Condition from a Chronicles of Darkness character sheet.
message RemoveConditionRequest {
string character_username = 1;
int32 character_id = 2;
string condition_name = 3;
}

View File

@ -4,7 +4,7 @@
import * as jspb from "google-protobuf";
import * as cofd_pb from "./cofd_pb";
export class BasicInfo extends jspb.Message {
export class UpdateBasicInfoRequest extends jspb.Message {
getName(): string;
setName(value: string): void;
@ -21,16 +21,16 @@ export class BasicInfo extends jspb.Message {
setAge(value: number): void;
serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): BasicInfo.AsObject;
static toObject(includeInstance: boolean, msg: BasicInfo): BasicInfo.AsObject;
toObject(includeInstance?: boolean): UpdateBasicInfoRequest.AsObject;
static toObject(includeInstance: boolean, msg: UpdateBasicInfoRequest): UpdateBasicInfoRequest.AsObject;
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
static serializeBinaryToWriter(message: BasicInfo, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): BasicInfo;
static deserializeBinaryFromReader(message: BasicInfo, reader: jspb.BinaryReader): BasicInfo;
static serializeBinaryToWriter(message: UpdateBasicInfoRequest, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): UpdateBasicInfoRequest;
static deserializeBinaryFromReader(message: UpdateBasicInfoRequest, reader: jspb.BinaryReader): UpdateBasicInfoRequest;
}
export namespace BasicInfo {
export namespace UpdateBasicInfoRequest {
export type AsObject = {
name: string,
gender: string,
@ -40,58 +40,6 @@ export namespace BasicInfo {
}
}
export class Attributes extends jspb.Message {
getStrength(): number;
setStrength(value: number): void;
getDexterity(): number;
setDexterity(value: number): void;
getStamina(): number;
setStamina(value: number): void;
getIntelligence(): number;
setIntelligence(value: number): void;
getWits(): number;
setWits(value: number): void;
getResolve(): number;
setResolve(value: number): void;
getPresence(): number;
setPresence(value: number): void;
getManipulation(): number;
setManipulation(value: number): void;
getComposure(): number;
setComposure(value: number): void;
serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): Attributes.AsObject;
static toObject(includeInstance: boolean, msg: Attributes): Attributes.AsObject;
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
static serializeBinaryToWriter(message: Attributes, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): Attributes;
static deserializeBinaryFromReader(message: Attributes, reader: jspb.BinaryReader): Attributes;
}
export namespace Attributes {
export type AsObject = {
strength: number,
dexterity: number,
stamina: number,
intelligence: number,
wits: number,
resolve: number,
presence: number,
manipulation: number,
composure: number,
}
}
export class ApiResult extends jspb.Message {
getSuccess(): boolean;
setSuccess(value: boolean): void;
@ -148,43 +96,12 @@ export namespace UpdateAttributeRequest {
}
}
export class Skills extends jspb.Message {
clearPhysicalSkillsList(): void;
getPhysicalSkillsList(): Array<cofd_pb.CofdSheet.Skill>;
setPhysicalSkillsList(value: Array<cofd_pb.CofdSheet.Skill>): void;
addPhysicalSkills(value?: cofd_pb.CofdSheet.Skill, index?: number): cofd_pb.CofdSheet.Skill;
export class UpdateSkillRequest extends jspb.Message {
getCharacterUsername(): string;
setCharacterUsername(value: string): void;
clearMentalSkillsList(): void;
getMentalSkillsList(): Array<cofd_pb.CofdSheet.Skill>;
setMentalSkillsList(value: Array<cofd_pb.CofdSheet.Skill>): void;
addMentalSkills(value?: cofd_pb.CofdSheet.Skill, index?: number): cofd_pb.CofdSheet.Skill;
clearSocialSkillsList(): void;
getSocialSkillsList(): Array<cofd_pb.CofdSheet.Skill>;
setSocialSkillsList(value: Array<cofd_pb.CofdSheet.Skill>): void;
addSocialSkills(value?: cofd_pb.CofdSheet.Skill, index?: number): cofd_pb.CofdSheet.Skill;
serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): Skills.AsObject;
static toObject(includeInstance: boolean, msg: Skills): Skills.AsObject;
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
static serializeBinaryToWriter(message: Skills, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): Skills;
static deserializeBinaryFromReader(message: Skills, reader: jspb.BinaryReader): Skills;
}
export namespace Skills {
export type AsObject = {
physicalSkillsList: Array<cofd_pb.CofdSheet.Skill.AsObject>,
mentalSkillsList: Array<cofd_pb.CofdSheet.Skill.AsObject>,
socialSkillsList: Array<cofd_pb.CofdSheet.Skill.AsObject>,
}
}
export class SkillUpdate extends jspb.Message {
getName(): string;
setName(value: string): void;
getCharacterId(): number;
setCharacterId(value: number): void;
hasSkill(): boolean;
clearSkill(): void;
@ -192,18 +109,19 @@ export class SkillUpdate extends jspb.Message {
setSkill(value?: cofd_pb.CofdSheet.Skill): void;
serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): SkillUpdate.AsObject;
static toObject(includeInstance: boolean, msg: SkillUpdate): SkillUpdate.AsObject;
toObject(includeInstance?: boolean): UpdateSkillRequest.AsObject;
static toObject(includeInstance: boolean, msg: UpdateSkillRequest): UpdateSkillRequest.AsObject;
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
static serializeBinaryToWriter(message: SkillUpdate, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): SkillUpdate;
static deserializeBinaryFromReader(message: SkillUpdate, reader: jspb.BinaryReader): SkillUpdate;
static serializeBinaryToWriter(message: UpdateSkillRequest, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): UpdateSkillRequest;
static deserializeBinaryFromReader(message: UpdateSkillRequest, reader: jspb.BinaryReader): UpdateSkillRequest;
}
export namespace SkillUpdate {
export namespace UpdateSkillRequest {
export type AsObject = {
name: string,
characterUsername: string,
characterId: number,
skill?: cofd_pb.CofdSheet.Skill.AsObject,
}
}
@ -240,7 +158,7 @@ export namespace UpdateSkillValueRequest {
}
}
export class SkillSpecializationsUpdate extends jspb.Message {
export class UpdateSkillSpecializationsRequest extends jspb.Message {
getName(): string;
setName(value: string): void;
@ -250,39 +168,75 @@ export class SkillSpecializationsUpdate extends jspb.Message {
addSpecializations(value: string, index?: number): string;
serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): SkillSpecializationsUpdate.AsObject;
static toObject(includeInstance: boolean, msg: SkillSpecializationsUpdate): SkillSpecializationsUpdate.AsObject;
toObject(includeInstance?: boolean): UpdateSkillSpecializationsRequest.AsObject;
static toObject(includeInstance: boolean, msg: UpdateSkillSpecializationsRequest): UpdateSkillSpecializationsRequest.AsObject;
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
static serializeBinaryToWriter(message: SkillSpecializationsUpdate, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): SkillSpecializationsUpdate;
static deserializeBinaryFromReader(message: SkillSpecializationsUpdate, reader: jspb.BinaryReader): SkillSpecializationsUpdate;
static serializeBinaryToWriter(message: UpdateSkillSpecializationsRequest, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): UpdateSkillSpecializationsRequest;
static deserializeBinaryFromReader(message: UpdateSkillSpecializationsRequest, reader: jspb.BinaryReader): UpdateSkillSpecializationsRequest;
}
export namespace SkillSpecializationsUpdate {
export namespace UpdateSkillSpecializationsRequest {
export type AsObject = {
name: string,
specializationsList: Array<string>,
}
}
export class Condition extends jspb.Message {
getName(): string;
setName(value: string): void;
export class AddConditionRequest extends jspb.Message {
getCharacterUsername(): string;
setCharacterUsername(value: string): void;
getCharacterId(): number;
setCharacterId(value: number): void;
getConditionName(): string;
setConditionName(value: string): void;
serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): Condition.AsObject;
static toObject(includeInstance: boolean, msg: Condition): Condition.AsObject;
toObject(includeInstance?: boolean): AddConditionRequest.AsObject;
static toObject(includeInstance: boolean, msg: AddConditionRequest): AddConditionRequest.AsObject;
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
static serializeBinaryToWriter(message: Condition, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): Condition;
static deserializeBinaryFromReader(message: Condition, reader: jspb.BinaryReader): Condition;
static serializeBinaryToWriter(message: AddConditionRequest, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): AddConditionRequest;
static deserializeBinaryFromReader(message: AddConditionRequest, reader: jspb.BinaryReader): AddConditionRequest;
}
export namespace Condition {
export namespace AddConditionRequest {
export type AsObject = {
name: string,
characterUsername: string,
characterId: number,
conditionName: string,
}
}
export class RemoveConditionRequest extends jspb.Message {
getCharacterUsername(): string;
setCharacterUsername(value: string): void;
getCharacterId(): number;
setCharacterId(value: number): void;
getConditionName(): string;
setConditionName(value: string): void;
serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): RemoveConditionRequest.AsObject;
static toObject(includeInstance: boolean, msg: RemoveConditionRequest): RemoveConditionRequest.AsObject;
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
static serializeBinaryToWriter(message: RemoveConditionRequest, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): RemoveConditionRequest;
static deserializeBinaryFromReader(message: RemoveConditionRequest, reader: jspb.BinaryReader): RemoveConditionRequest;
}
export namespace RemoveConditionRequest {
export type AsObject = {
characterUsername: string,
characterId: number,
conditionName: string,
}
}

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,5 @@
import * as jspb from "google-protobuf";
import { CofdSheet } from "../_proto/cofd_pb";
import { Skills, ApiResult, UpdateAttributeRequest, UpdateSkillValueRequest } from "../_proto/cofd_api_pb";
import { ApiResult, UpdateAttributeRequest, UpdateSkillValueRequest } from "../_proto/cofd_api_pb";
const PROTOBUF_CONTENT_TYPE = { 'Content-Type': 'application/x-protobuf' };

View File

@ -8,9 +8,8 @@ mod cofd;
pub(crate) fn routes() -> Vec<rocket::Route> {
routes![
cofd::update_basic_info,
cofd::update_attributes,
cofd::update_attribute_value,
cofd::update_skills,
cofd::update_skill,
cofd::update_skill_value,
cofd::add_condition,
cofd::remove_condition

View File

@ -37,21 +37,8 @@ fn find_skill<'a>(sheet: &'a mut CofdSheet, skill_name: &'a str) -> Option<&'a m
find_skill_entry(sheet, skill_name).map(|entry| entry.into_mut())
}
#[post("/cofd/<owner>/<character_id>/basic-info", data = "<info>")]
pub(super) fn update_basic_info<'a>(
owner: String,
character_id: i32,
info: Proto<BasicInfo>,
) -> &'a str {
"lol"
}
#[post("/cofd/<owner>/<character_id>/attributes", data = "<info>")]
pub(super) fn update_attributes<'a>(
owner: String,
character_id: i32,
info: Proto<Attributes>,
) -> &'a str {
#[post("/rpc/cofd/update_basic_info", data = "<info>")]
pub(super) fn update_basic_info<'a>(info: Proto<UpdateBasicInfoRequest>) -> &'a str {
"lol"
}
@ -92,22 +79,23 @@ pub(super) async fn update_attribute_value(
}))
}
#[patch(
"/cofd/<owner>/<character_id>/skills",
data = "<skill_update>",
rank = 1
)]
pub(super) async fn update_skills<'a>(
owner: String,
character_id: i32,
skill_update: Proto<SkillUpdate>,
#[patch("/rpc/cofd/update_skill", data = "<skill_update>")]
pub(super) async fn update_skill<'a>(
skill_update: Proto<UpdateSkillRequest>,
conn: TenebrousDbConn<'_>,
logged_in_user: Option<&User>,
) -> Result<&'a str, Error> {
let mut character = load_character(&conn, logged_in_user, &owner, character_id).await?;
let mut character = load_character(
&conn,
logged_in_user,
&skill_update.character_username,
skill_update.character_id,
)
.await?;
let mut sheet: CofdSheet = character.try_deserialize()?;
let updated_skill: &Skill = skill_update.skill.as_ref().ok_or(Error::InvalidInput)?;
let skill_entry = find_skill_entry(&mut sheet, &skill_update.name);
let skill_entry = find_skill_entry(&mut sheet, &updated_skill.name);
skill_entry
.map(|mut entry| entry.insert(updated_skill.clone()))
@ -115,7 +103,7 @@ pub(super) async fn update_skills<'a>(
println!(
"updated skill {} with {:?}",
skill_update.name, skill_update.skill
updated_skill.name, skill_update.skill
);
character.update_data(&sheet)?;
@ -145,9 +133,7 @@ pub(super) async fn update_skill_value<'a>(
s.dots = request.skill_value;
}
let updated_skill: Skill = skill.map(|s| s.clone()).ok_or(Error::InvalidInput)?;
println!("updated skill value",);
println!("updated skill value");
character.update_data(&sheet)?;
conn.update_character_sheet(&character).await?;
@ -157,20 +143,12 @@ pub(super) async fn update_skill_value<'a>(
}))
}
#[put("/cofd/<owner>/<character_id>/conditions", data = "<info>")]
pub(super) fn add_condition<'a>(
owner: String,
character_id: i32,
info: Proto<Condition>,
) -> &'a str {
#[put("/rpc/cofd/add_condition", data = "<info>")]
pub(super) fn add_condition<'a>(info: Proto<AddConditionRequest>) -> &'a str {
"lol"
}
#[delete("/cofd/<owner>/<character_id>/conditions", data = "<info>")]
pub(super) fn remove_condition<'a>(
owner: String,
character_id: i32,
info: Proto<Condition>,
) -> &'a str {
#[delete("/rpc/cofd/remove_condition", data = "<info>")]
pub(super) fn remove_condition<'a>(info: Proto<RemoveConditionRequest>) -> &'a str {
"lol"
}