mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-11-03 21:34:30 +08:00
279 lines
7.1 KiB
TypeScript
279 lines
7.1 KiB
TypeScript
/**
|
|
* Example usage of the Galaxy API client
|
|
*
|
|
* These examples demonstrate common operations using the Galaxy API.
|
|
* All examples use openapi-fetch's typed client for full type safety.
|
|
*/
|
|
import { createGalaxyApi } from "./index";
|
|
|
|
// =============================================================================
|
|
// CLIENT SETUP EXAMPLES
|
|
// =============================================================================
|
|
|
|
// Basic usage - just provide a base URL
|
|
const basicApi = createGalaxyApi("https://usegalaxy.org");
|
|
|
|
// With API key authentication
|
|
const authenticatedApi = createGalaxyApi({
|
|
baseUrl: "https://usegalaxy.org",
|
|
apiKey: "your-api-key-here",
|
|
});
|
|
|
|
// With custom headers and fetch options
|
|
const _customApi = createGalaxyApi({
|
|
baseUrl: "https://usegalaxy.org",
|
|
apiKey: "your-api-key-here",
|
|
headers: {
|
|
"User-Agent": "MyGalaxyApp/1.0",
|
|
},
|
|
fetchOptions: {
|
|
credentials: "include",
|
|
},
|
|
});
|
|
|
|
// =============================================================================
|
|
// HISTORY EXAMPLES
|
|
// =============================================================================
|
|
|
|
/**
|
|
* List all histories for the current user
|
|
*/
|
|
async function listHistories() {
|
|
const { data, error } = await authenticatedApi.GET("/api/histories");
|
|
|
|
if (error) {
|
|
console.error("Error fetching histories:", error);
|
|
return [];
|
|
}
|
|
|
|
console.log(`Found ${data.length} histories:`);
|
|
for (const history of data) {
|
|
console.log(` - ${history.name} (${history.id})`);
|
|
}
|
|
|
|
return data;
|
|
}
|
|
|
|
/**
|
|
* Get the most recently used history
|
|
*/
|
|
async function getMostRecentHistory() {
|
|
const { data, error } = await authenticatedApi.GET("/api/histories/most_recently_used");
|
|
|
|
if (error) {
|
|
console.error("Error fetching most recent history:", error);
|
|
return null;
|
|
}
|
|
|
|
console.log(`Most recent history: ${data.name}`);
|
|
return data;
|
|
}
|
|
|
|
/**
|
|
* Get detailed information about a specific history
|
|
*/
|
|
async function getHistoryDetails(historyId: string) {
|
|
const { data, error } = await authenticatedApi.GET("/api/histories/{history_id}", {
|
|
params: {
|
|
path: { history_id: historyId },
|
|
},
|
|
});
|
|
|
|
if (error) {
|
|
console.error("Error fetching history details:", error);
|
|
return null;
|
|
}
|
|
|
|
console.log(`History: ${data.name} (${data.id})`);
|
|
return data;
|
|
}
|
|
|
|
/**
|
|
* Update a history's name or annotation
|
|
*/
|
|
async function updateHistory(historyId: string, updates: { name?: string; annotation?: string }) {
|
|
const { data, error } = await authenticatedApi.PUT("/api/histories/{history_id}", {
|
|
params: {
|
|
path: { history_id: historyId },
|
|
},
|
|
body: updates,
|
|
});
|
|
|
|
if (error) {
|
|
console.error("Error updating history:", error);
|
|
return null;
|
|
}
|
|
|
|
console.log(`Updated history: ${data.name}`);
|
|
return data;
|
|
}
|
|
|
|
/**
|
|
* Delete a history (moves to trash)
|
|
*/
|
|
async function deleteHistory(historyId: string, purge = false) {
|
|
const { data, error } = await authenticatedApi.DELETE("/api/histories/{history_id}", {
|
|
params: {
|
|
path: { history_id: historyId },
|
|
query: { purge },
|
|
},
|
|
});
|
|
|
|
if (error) {
|
|
console.error("Error deleting history:", error);
|
|
return null;
|
|
}
|
|
|
|
console.log(`Deleted history: ${historyId}`);
|
|
return data;
|
|
}
|
|
|
|
/**
|
|
* Get published (public) histories
|
|
*/
|
|
async function getPublishedHistories() {
|
|
const { data, error } = await basicApi.GET("/api/histories/published");
|
|
|
|
if (error) {
|
|
console.error("Error fetching published histories:", error);
|
|
return [];
|
|
}
|
|
|
|
console.log(`Found ${data.length} published histories`);
|
|
return data;
|
|
}
|
|
|
|
// =============================================================================
|
|
// DATASET EXAMPLES
|
|
// =============================================================================
|
|
|
|
/**
|
|
* Get details about a specific dataset in a history
|
|
*/
|
|
async function getDatasetDetails(historyId: string, datasetId: string) {
|
|
const { data, error } = await authenticatedApi.GET("/api/histories/{history_id}/contents/{type}s/{id}", {
|
|
params: {
|
|
path: {
|
|
history_id: historyId,
|
|
type: "dataset",
|
|
id: datasetId,
|
|
},
|
|
},
|
|
});
|
|
|
|
if (error) {
|
|
console.error("Error fetching dataset:", error);
|
|
return null;
|
|
}
|
|
|
|
console.log(`Dataset: ${data.name}`);
|
|
return data;
|
|
}
|
|
|
|
// =============================================================================
|
|
// JOB EXAMPLES
|
|
// =============================================================================
|
|
|
|
/**
|
|
* Get job status and details
|
|
*/
|
|
async function getJobStatus(jobId: string) {
|
|
const { data, error } = await authenticatedApi.GET("/api/jobs/{job_id}", {
|
|
params: {
|
|
path: { job_id: jobId },
|
|
},
|
|
});
|
|
|
|
if (error) {
|
|
console.error("Error fetching job:", error);
|
|
return null;
|
|
}
|
|
|
|
console.log(`Job ${jobId}: ${data.state}`);
|
|
return data;
|
|
}
|
|
|
|
// =============================================================================
|
|
// WORKFLOW EXAMPLES
|
|
// =============================================================================
|
|
|
|
/**
|
|
* List all workflows accessible to the user
|
|
*/
|
|
async function listWorkflows() {
|
|
const { data, error } = await authenticatedApi.GET("/api/workflows");
|
|
|
|
if (error) {
|
|
console.error("Error fetching workflows:", error);
|
|
return [];
|
|
}
|
|
|
|
console.log(`Found ${data.length} workflows`);
|
|
return data;
|
|
}
|
|
|
|
/**
|
|
* Get workflow details
|
|
*/
|
|
async function getWorkflowDetails(workflowId: string) {
|
|
const { data, error } = await authenticatedApi.GET("/api/workflows/{workflow_id}", {
|
|
params: {
|
|
path: { workflow_id: workflowId },
|
|
},
|
|
});
|
|
|
|
if (error) {
|
|
console.error("Error fetching workflow:", error);
|
|
return null;
|
|
}
|
|
|
|
console.log(`Workflow: ${data.name}`);
|
|
return data;
|
|
}
|
|
|
|
// =============================================================================
|
|
// INVOCATION EXAMPLES
|
|
// =============================================================================
|
|
|
|
/**
|
|
* Get workflow invocation status
|
|
*/
|
|
async function getInvocationStatus(invocationId: string) {
|
|
const { data, error } = await authenticatedApi.GET("/api/invocations/{invocation_id}", {
|
|
params: {
|
|
path: { invocation_id: invocationId },
|
|
},
|
|
});
|
|
|
|
if (error) {
|
|
console.error("Error fetching invocation:", error);
|
|
return null;
|
|
}
|
|
|
|
console.log(`Invocation ${invocationId}: ${data.state}`);
|
|
return data;
|
|
}
|
|
|
|
// =============================================================================
|
|
// EXPORTS
|
|
// =============================================================================
|
|
|
|
export {
|
|
// History operations
|
|
listHistories,
|
|
getMostRecentHistory,
|
|
getHistoryDetails,
|
|
updateHistory,
|
|
deleteHistory,
|
|
getPublishedHistories,
|
|
// Dataset operations
|
|
getDatasetDetails,
|
|
// Job operations
|
|
getJobStatus,
|
|
// Workflow operations
|
|
listWorkflows,
|
|
getWorkflowDetails,
|
|
// Invocation operations
|
|
getInvocationStatus,
|
|
};
|