zixcel-github 0.1.1

Policy-neutral GitHub API wrapper boundary for Zixcel
Documentation
use zixcel_github::{
    API_REQUEST_SCHEMA, ConnectorError, GitHubAction, GitHubApiRequest, GitHubBackend,
    GitHubBackendReceipt,
};

pub const DIGEST: &str = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";

pub fn request(action: GitHubAction) -> GitHubApiRequest {
    GitHubApiRequest {
        schema: API_REQUEST_SCHEMA.into(),
        request_id: "github-request-1".into(),
        operation_id: "github-operation-1".into(),
        connection_ref: "github-connection-1".into(),
        owner: "example-org".into(),
        repository: "example-api".into(),
        action,
    }
}

#[derive(Default)]
pub struct RecordingBackend {
    calls: usize,
}

impl RecordingBackend {
    pub const fn calls(&self) -> usize {
        self.calls
    }
}

impl GitHubBackend for RecordingBackend {
    fn perform(
        &mut self,
        _request: &GitHubApiRequest,
    ) -> Result<GitHubBackendReceipt, ConnectorError> {
        self.calls += 1;
        Ok(GitHubBackendReceipt {
            provider_request_id: "github-provider-1".into(),
            remote_reference: "github/example-org/example-api".into(),
            remote_digest_sha256: Some(DIGEST.into()),
        })
    }
}