ci_manager/ci_provider/
gitlab.rs1#![allow(dead_code, unused_variables)]
2use crate::*;
3
4pub struct GitLab {
5 client: gitlab::Gitlab,
6}
7
8impl GitLab {
9 pub fn get() -> Self {
10 let token = std::env::var("CI_PAT").unwrap();
12 let client = Gitlab::new("gitlab.com", token).unwrap();
14 Self { client }
15 }
16
17 pub fn handle(&self, command: &commands::Command) -> Result<()> {
18 let endpoint = projects::Project::builder()
19 .project("CramBL/github-workflow-parser")
20 .build()
21 .unwrap();
22 let project: Project = endpoint.query(&self.client).unwrap();
24 println!("{project:?}");
26
27 let endpoint = projects::issues::Issues::builder()
29 .project("CramBL/github-workflow-parser")
30 .state(projects::issues::IssueState::Opened)
31 .label("bug")
32 .build()
33 .unwrap();
34
35 let issues: Vec<Issue> = endpoint.query(&self.client).unwrap();
36 println!("{issues:?}");
37
38 let endpoint = projects::pipelines::PipelineJobs::builder()
40 .project("CramBL/github-workflow-parser")
41 .pipeline(1180296622)
42 .build()
43 .unwrap();
44
45 let pipeline_jobs: Vec<Job> = endpoint.query(&self.client).unwrap();
46
47 println!("{pipeline_jobs:?}");
48
49 let failed_job = pipeline_jobs
51 .iter()
52 .find(|job| job.status == "failed")
53 .unwrap();
54
55 let endpoint = projects::jobs::Job::builder()
56 .project("CramBL/github-workflow-parser")
57 .job(6195815626)
58 .build()
59 .unwrap();
60
61 let job: Job = endpoint.query(&self.client).unwrap();
62
63 println!("{job:?}");
64
65 let endpoint = projects::jobs::JobTrace::builder()
66 .project("CramBL/github-workflow-parser")
67 .job(6195815626)
68 .build()
69 .unwrap();
70
71 let resp = api::raw(endpoint).query(&self.client).unwrap();
72
73 println!("{}", String::from_utf8_lossy(&resp));
74
75 Ok(())
98 }
99}
100
101#[derive(Debug, Deserialize)]
102struct Project {
103 name: String,
104 name_with_namespace: String,
105}
106
107#[derive(Debug, Deserialize)]
108struct Issue {
109 title: String,
110 description: String,
111 labels: Vec<String>,
112}
113
114#[derive(Debug, Deserialize)]
115struct Job {
116 id: u64,
117 name: String,
118 status: String,
119 #[serde(rename = "ref")]
120 ref_: String,
121}