gproxy-protocol 3.0.0-alpha.0

GPROXY v3 protocol model: operation taxonomy, wire kinds, and the OperationSpec registry
Documentation
use crate::spec::Seg::{Lit, Param, ParamAction};
use crate::spec::{Affinity, OperationSpec, SettleMode};

use super::{DELETE, FAM_GEM, FAM_OAI, GET, NEVER, POST, ing, video_character_op, video_op};

pub(super) const CREATE_VIDEO: OperationSpec = video_op(&[
    ing(POST, &[Lit("v1"), Lit("videos")], FAM_OAI, NEVER),
    ing(
        POST,
        &[
            Lit("v1beta"),
            Lit("models"),
            ParamAction("model", "predictLongRunning"),
        ],
        FAM_GEM,
        NEVER,
    ),
]);

pub(super) const RETRIEVE_VIDEO: OperationSpec = OperationSpec {
    ingress: &[
        ing(
            GET,
            &[Lit("v1"), Lit("videos"), Param("id")],
            FAM_OAI,
            NEVER,
        ),
        ing(
            GET,
            &[Lit("v1beta"), Lit("operations"), Param("id")],
            FAM_GEM,
            NEVER,
        ),
        ing(
            GET,
            &[
                Lit("v1beta"),
                Lit("models"),
                Param("model"),
                Lit("operations"),
                Param("id"),
            ],
            FAM_GEM,
            NEVER,
        ),
    ],
    settle: SettleMode::OnCompletedStatus,
    affinity: Affinity::Resource("video"),
};

pub(super) const LIST_VIDEOS: OperationSpec =
    video_op(&[ing(GET, &[Lit("v1"), Lit("videos")], FAM_OAI, NEVER)]);

pub(super) const DELETE_VIDEO: OperationSpec = video_op(&[ing(
    DELETE,
    &[Lit("v1"), Lit("videos"), Param("id")],
    FAM_OAI,
    NEVER,
)]);

pub(super) const VIDEO_CONTENT: OperationSpec = video_op(&[ing(
    GET,
    &[Lit("v1"), Lit("videos"), Param("id"), Lit("content")],
    FAM_OAI,
    NEVER,
)]);

pub(super) const REMIX_VIDEO: OperationSpec = video_op(&[ing(
    POST,
    &[Lit("v1"), Lit("videos"), Param("id"), Lit("remix")],
    FAM_OAI,
    NEVER,
)]);

pub(super) const CREATE_VIDEO_CHARACTER: OperationSpec = video_character_op(&[ing(
    POST,
    &[Lit("v1"), Lit("videos"), Lit("characters")],
    FAM_OAI,
    NEVER,
)]);

pub(super) const GET_VIDEO_CHARACTER: OperationSpec = video_character_op(&[ing(
    GET,
    &[Lit("v1"), Lit("videos"), Lit("characters"), Param("id")],
    FAM_OAI,
    NEVER,
)]);

pub(super) const EDIT_VIDEO: OperationSpec = video_op(&[ing(
    POST,
    &[Lit("v1"), Lit("videos"), Lit("edits")],
    FAM_OAI,
    NEVER,
)]);

pub(super) const EXTEND_VIDEO: OperationSpec = video_op(&[ing(
    POST,
    &[Lit("v1"), Lit("videos"), Lit("extensions")],
    FAM_OAI,
    NEVER,
)]);