@@ -48,3 +48,83 @@ export async function updateSessionById(sessionId, data, lambdaCredentials){
4848 logger . error ( error ) ;
4949 }
5050}
51+
52+ /**
53+ * Updates a build by id
54+ * @param {string } buildId
55+ * @param {('passed'|'failed') } status
56+ * @param {any } lambdaCredentials
57+ */
58+ export async function updateBuildById ( buildId , lambdaCredentials , status ) {
59+ if ( ! buildId ) return ;
60+ const buildsUrl = lambdaCredentials . isApp
61+ ? `${ baseUrlApp } ${ appVersion . latestVersion } /builds/${ buildId } `
62+ : `${ baseUrl } ${ version . latestVersion } /builds/${ buildId } ` ;
63+ const body = { status } ;
64+ try {
65+ let config = {
66+ method : 'patch' ,
67+ maxBodyLength : Infinity ,
68+ url : buildsUrl ,
69+ headers : {
70+ 'accept' : 'application/json' ,
71+ 'Authorization' : `Basic ${ Buffer . from ( lambdaCredentials . username + ':' + lambdaCredentials . accessKey ) . toString ( 'base64' ) } ` ,
72+ 'Content-Type' : 'application/json'
73+ } ,
74+ data : body
75+ } ;
76+ let response = await axios . request ( config ) ;
77+ logger . info ( response ?. data ) ;
78+ } catch ( error ) {
79+ logger . error ( error ) ;
80+ }
81+ }
82+
83+ /**
84+ * Get a session by id
85+ * @param {string } sessionId
86+ * @param {any } lambdaCredentials
87+ */
88+ export async function getSessionById ( sessionId , lambdaCredentials ) {
89+ if ( ! sessionId ) return undefined ;
90+ const sessionUrl = lambdaCredentials ?. isApp
91+ ? `${ baseUrlApp } ${ appVersion . latestVersion } /sessions/${ sessionId } `
92+ : `${ baseUrl } ${ version . latestVersion } /sessions/${ sessionId } ` ;
93+ try {
94+ const config = {
95+ method : 'get' ,
96+ maxBodyLength : Infinity ,
97+ url : sessionUrl ,
98+ headers : {
99+ 'accept' : 'application/json' ,
100+ 'Authorization' : `Basic ${ Buffer . from ( lambdaCredentials . username + ':' + lambdaCredentials . accessKey ) . toString ( 'base64' ) } `
101+ }
102+ } ;
103+ const response = await axios . request ( config ) ;
104+ return response ?. data ;
105+ } catch ( error ) {
106+ logger . error ( error ) ;
107+ return undefined ;
108+ }
109+ }
110+
111+ /**
112+ * Update a build status based on a session id and exitCode
113+ * @param {string } sessionId
114+ * @param {any } lambdaCredentials
115+ * @param {number } exitCode 0 => passed, >0 => failed
116+ */
117+ export async function updateBuildStatusForSession ( sessionId , lambdaCredentials , exitCode ) {
118+ try {
119+ const session = await getSessionById ( sessionId , lambdaCredentials ) ;
120+ const buildId = session ?. data ?. build_id ;
121+ if ( ! buildId ) {
122+ logger . error ( 'Could not determine build_id from session' ) ;
123+ return ;
124+ }
125+ const status = exitCode === 0 ? 'passed' : 'failed' ;
126+ await updateBuildById ( buildId , lambdaCredentials , status ) ;
127+ } catch ( error ) {
128+ logger . error ( error ) ;
129+ }
130+ }
0 commit comments