pub struct ReleasesClient { /* private fields */ }Expand description
Domain client for release operations.
Obtained via InstallationClient::releases(). Cheap to clone (Arc-backed).
See docs/specs/interfaces/additional-operations.md
Implementations§
Source§impl ReleasesClient
impl ReleasesClient
Sourcepub async fn list(
&self,
owner: &str,
repo: &str,
) -> Result<Vec<Release>, ApiError>
pub async fn list( &self, owner: &str, repo: &str, ) -> Result<Vec<Release>, ApiError>
List releases in a repository.
Retrieves all releases for a repository, including drafts and prereleases.
§Arguments
owner- Repository ownerrepo- Repository name
§Returns
Returns vector of releases ordered by creation date (newest first).
§Errors
ApiError::NotFound- Repository does not existApiError::AuthorizationFailed- Insufficient permissions
§Example
let releases = client.list("owner", "repo").await?;
for release in releases {
println!("Release: {} ({})", release.name.unwrap_or_default(), release.tag_name);
}Sourcepub async fn get_latest(
&self,
owner: &str,
repo: &str,
) -> Result<Release, ApiError>
pub async fn get_latest( &self, owner: &str, repo: &str, ) -> Result<Release, ApiError>
Get the latest published release.
Returns the most recent non-draft, non-prerelease release.
§Arguments
owner- Repository ownerrepo- Repository name
§Returns
Returns the latest published Release.
§Errors
ApiError::NotFound- Repository or no published releases existApiError::AuthorizationFailed- Insufficient permissions
§Example
let release = client.get_latest("owner", "repo").await?;
println!("Latest: {} ({})", release.name.unwrap_or_default(), release.tag_name);Sourcepub async fn get_by_tag(
&self,
owner: &str,
repo: &str,
tag: &str,
) -> Result<Release, ApiError>
pub async fn get_by_tag( &self, owner: &str, repo: &str, tag: &str, ) -> Result<Release, ApiError>
Get a release by tag name.
Retrieves a release by its git tag name.
§Arguments
owner- Repository ownerrepo- Repository nametag- Git tag name
§Returns
Returns the Release with the specified tag.
§Errors
ApiError::NotFound- Release with tag does not existApiError::AuthorizationFailed- Insufficient permissions
§Example
let release = client.get_by_tag("owner", "repo", "v1.0.0").await?;
println!("Release: {}", release.tag_name);Sourcepub async fn get(
&self,
owner: &str,
repo: &str,
release_id: u64,
) -> Result<Release, ApiError>
pub async fn get( &self, owner: &str, repo: &str, release_id: u64, ) -> Result<Release, ApiError>
Get a release by ID.
Retrieves a release by its unique identifier.
§Arguments
owner- Repository ownerrepo- Repository namerelease_id- Release ID
§Returns
Returns the Release with the specified ID.
§Errors
ApiError::NotFound- Release does not existApiError::AuthorizationFailed- Insufficient permissions
§Example
let release = client.get("owner", "repo", 12345).await?;
println!("Release: {}", release.tag_name);Sourcepub async fn create(
&self,
owner: &str,
repo: &str,
request: CreateReleaseRequest,
) -> Result<Release, ApiError>
pub async fn create( &self, owner: &str, repo: &str, request: CreateReleaseRequest, ) -> Result<Release, ApiError>
Create a new release.
Creates a new release for a repository. Can create published releases, drafts, or prereleases.
§Arguments
owner- Repository ownerrepo- Repository namerequest- Release creation parameters
§Returns
Returns the created Release.
§Errors
ApiError::InvalidRequest- Tag already exists or invalid parametersApiError::AuthorizationFailed- Insufficient permissions
§Example
let request = CreateReleaseRequest {
tag_name: "v1.0.0".to_string(),
name: Some("Version 1.0.0".to_string()),
body: Some("Release notes".to_string()),
draft: Some(false),
prerelease: Some(false),
target_commitish: None,
generate_release_notes: None,
};
let release = client.create("owner", "repo", request).await?;
println!("Created release: {}", release.tag_name);Sourcepub async fn update(
&self,
owner: &str,
repo: &str,
release_id: u64,
request: UpdateReleaseRequest,
) -> Result<Release, ApiError>
pub async fn update( &self, owner: &str, repo: &str, release_id: u64, request: UpdateReleaseRequest, ) -> Result<Release, ApiError>
Update an existing release.
Updates release properties. Only specified fields are modified.
§Arguments
owner- Repository ownerrepo- Repository namerelease_id- Release IDrequest- Fields to update
§Returns
Returns the updated Release.
§Errors
ApiError::NotFound- Release does not existApiError::InvalidRequest- Invalid parametersApiError::AuthorizationFailed- Insufficient permissions
§Example
let request = UpdateReleaseRequest {
name: Some("Updated name".to_string()),
body: Some("Updated notes".to_string()),
..Default::default()
};
let release = client.update("owner", "repo", 12345, request).await?;
println!("Updated release: {}", release.tag_name);Sourcepub async fn delete(
&self,
owner: &str,
repo: &str,
release_id: u64,
) -> Result<(), ApiError>
pub async fn delete( &self, owner: &str, repo: &str, release_id: u64, ) -> Result<(), ApiError>
Delete a release.
Deletes a release. Does not delete the associated git tag.
§Arguments
owner- Repository ownerrepo- Repository namerelease_id- Release ID
§Returns
Returns Ok(()) on successful deletion.
§Errors
ApiError::NotFound- Release does not existApiError::AuthorizationFailed- Insufficient permissions
§Example
client.delete("owner", "repo", 12345).await?;
println!("Release deleted");Trait Implementations§
Source§impl Clone for ReleasesClient
impl Clone for ReleasesClient
Source§fn clone(&self) -> ReleasesClient
fn clone(&self) -> ReleasesClient
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more