Gitlab REST API: Editing merge requests
thomas_braun
#pragma TextEncoding = "UTF-8"
#pragma rtGlobals=3
#pragma IgorVersion=8.0.0
#include "json_functions"
StrConstant PRIVATE_TOKEN="PRIVATE_TOKEN_XXX"
// Example of interacting with gitlab
//
// The goal is to find all merge requests which can
// not be merged due to conflicts and change their state to draft mode.
//
// Requires the JSON XOP from https://docs.byte-physics.de/json-xop
//
// Steps:
// - Fill in your access tocken in PRIVATE_TOKEN
// - Change projectPath to the desired project
// - Execute RewriteMergeRequestTitles()
//
// Gitlab Documentation:
//
// https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html
// https://docs.gitlab.com/ee/api/README.html#namespaced-path-encoding
// https://docs.gitlab.com/ee/api/merge_requests.html#update-mr
// https://docs.gitlab.com/ee/api/merge_requests.html#list-merge-requests
Function RewriteMergeRequestTitles()
variable jsonID, i, numEntries, iid, regJSON
string title, str, projectPath, jsonPath
projectPath = UrlEncode("tango-controls/cppTango")
UrlRequest headers=("PRIVATE-TOKEN: " + PRIVATE_TOKEN) \
, url="https://gitlab.com/api/v4/projects/" + projectPath + "/merge_requests?state=opened&per_page=100"
// print V_responseCode, S_serverresponse
jsonID = JSON_Parse(S_serverResponse)
numEntries = JSON_GetArraySize(jsonID, "")
for(i = 0; i < numEntries; i += 1)
jsonPath = num2str(i)
iid = JSON_GetVariable(jsonID, jsonPath + "/iid")
title = JSON_GetString(jsonID, jsonPath + "/title")
str = JSON_Getstring(jsonID, jsonPath + "/merge_status")
if(!cmpstr(str, "cannot_be_merged") && !GrepString(title, "^Draft"))
regJSON = JSON_New()
JSON_AddString(regJSON, "/title", "Draft: " + title)
UrlRequest/DSTR=JSON_Dump(regJSON) headers=("PRIVATE-TOKEN: " + PRIVATE_TOKEN + "\rContent-Type: application/json") \
, url=("https://gitlab.com/api/v4/projects/" + projectPath + "/merge_requests/" + num2str(iid)) \
, method=put
// print V_responseCode, S_serverresponse
JSON_Release(regJSON)
endif
endfor
JSON_Release(jsonID)
End
#pragma rtGlobals=3
#pragma IgorVersion=8.0.0
#include "json_functions"
StrConstant PRIVATE_TOKEN="PRIVATE_TOKEN_XXX"
// Example of interacting with gitlab
//
// The goal is to find all merge requests which can
// not be merged due to conflicts and change their state to draft mode.
//
// Requires the JSON XOP from https://docs.byte-physics.de/json-xop
//
// Steps:
// - Fill in your access tocken in PRIVATE_TOKEN
// - Change projectPath to the desired project
// - Execute RewriteMergeRequestTitles()
//
// Gitlab Documentation:
//
// https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html
// https://docs.gitlab.com/ee/api/README.html#namespaced-path-encoding
// https://docs.gitlab.com/ee/api/merge_requests.html#update-mr
// https://docs.gitlab.com/ee/api/merge_requests.html#list-merge-requests
Function RewriteMergeRequestTitles()
variable jsonID, i, numEntries, iid, regJSON
string title, str, projectPath, jsonPath
projectPath = UrlEncode("tango-controls/cppTango")
UrlRequest headers=("PRIVATE-TOKEN: " + PRIVATE_TOKEN) \
, url="https://gitlab.com/api/v4/projects/" + projectPath + "/merge_requests?state=opened&per_page=100"
// print V_responseCode, S_serverresponse
jsonID = JSON_Parse(S_serverResponse)
numEntries = JSON_GetArraySize(jsonID, "")
for(i = 0; i < numEntries; i += 1)
jsonPath = num2str(i)
iid = JSON_GetVariable(jsonID, jsonPath + "/iid")
title = JSON_GetString(jsonID, jsonPath + "/title")
str = JSON_Getstring(jsonID, jsonPath + "/merge_status")
if(!cmpstr(str, "cannot_be_merged") && !GrepString(title, "^Draft"))
regJSON = JSON_New()
JSON_AddString(regJSON, "/title", "Draft: " + title)
UrlRequest/DSTR=JSON_Dump(regJSON) headers=("PRIVATE-TOKEN: " + PRIVATE_TOKEN + "\rContent-Type: application/json") \
, url=("https://gitlab.com/api/v4/projects/" + projectPath + "/merge_requests/" + num2str(iid)) \
, method=put
// print V_responseCode, S_serverresponse
JSON_Release(regJSON)
endif
endfor
JSON_Release(jsonID)
End
Forum
Support
Gallery
Igor Pro 9
Learn More
Igor XOP Toolkit
Learn More
Igor NIDAQ Tools MX
Learn More