Skip to content
Nicolas Bigaouette edited this page Nov 29, 2016 · 3 revisions

API Notes

Choice 1

let gl = GitLab::new(&hostname, &token);

// FIXME: How to set the pagination?

// Builder pattern, committed with the list() method that performs the actual query.
// Pros: Follows GitLab API closely.
// Cons: Why do we always get the project after `merge_requests()`, `issues()`, etc. ?

// Get a specific merge request from its iid
let mr = gl.merge_requests().project(142).iid(418).list()
// List merge requests of project id 142 (mod.rs)
let mr = gl.merge_requests().project(142).list()
let mr = gl.merge_requests().project(142).state(...).iid(...).iid(...).list()
let mr = gl.merge_requests().project(142).state(...).iid(...).iid(...).order_by(...).sort(...).list()

// Issues
// List of all issues
let issues = gl.issues().list()
let issues = gl.issues().state(...).labels(...).order_by(...).sort(...).list()
// Single issue from a project
let issue = gl.issues().project(142).issue_id(5).list()
let issue = gl.issues().project(142).issue_iid(5).list()
// Project issues
let issues = gl.issues().project(142).state(...).labels(...).milestone(...).order_by(...).sort(...).list()
// Group issues
let issues = gl.issues().group(123).state(...).labels(...).milestone(...).order_by(...).sort(...).list()

// Projects
// List projects
let projects = gl.projects().list()
let projects = gl.projects().archived(...).visibility(...).order_by(...).sort(...).search(...).simple(...).list()
// List all projects (admin)
let projects = gl.projects().all().list()
let projects = gl.projects().all().archived(...).visibility(...).order_by(...).sort(...).search(...).list()
// Single project
let project = gl.projects().id(142).list()
// Search
let projects = gl.projects().search(...).list()
// Owned
let projects = gl.projects().owned().archived(...).visibility(...).order_by(...).sort(...).search(...).list()

Choice 2

// Builder pattern, committed with the list() method that performs the actual query.
// Difference with 1): Instead of having `issues().project()`, `merge_requests().project()`, etc. invert to get
// `project().issues()`, `project().merge_requests()`, `project()`, etc.
// Pros:
//     Might be nicer for the user.
// Cons:
//     Different from GitLab API
//     The Project struct would need to implement the `issues()` and `merge_requests()` methods.
Clone this wiki locally