
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

Forum

Support

Gallery
Igor Pro 9
Learn More
Igor XOP Toolkit
Learn More
Igor NIDAQ Tools MX
Learn More