1
0
mirror of https://github.com/sasjs/core.git synced 2026-01-05 00:20:05 +00:00

Compare commits

...

3 Commits

Author SHA1 Message Date
Allan Bowe
e049ab99a7 Merge pull request #390 from sasjs/svgfix
fix: streamlining viya deploys
2025-05-29 17:52:57 +01:00
github-actions
e9deab3885 chore: updating all.sas 2025-05-29 16:51:46 +00:00
allan
8d2f084316 fix: streamlining viya deploys 2025-05-29 17:51:23 +01:00
6 changed files with 69 additions and 49 deletions

84
all.sas
View File

@@ -24172,13 +24172,13 @@ run;
/** /**
@file @file
@brief Returns the uri of a file or folder @brief Returns the uri of a file or folder
@details The automatic variable _FILESRVC_[fref]_URI is used after assigning @details The automatic variable `_FILESRVC_[fref]_URI` is used after assigning
a fileref using the filesrvc engine. a fileref using the filesrvc engine.
Usage: Usage:
%put %mfv_existfile(/Public/folder/file.txt); %put %mfv_getpathuri(/Public/folder/file.txt);
%put %mfv_existfile(/Public/folder); %put %mfv_getpathuri(/Public/folder);
@param [in] filepath The full path to the file on SAS drive @param [in] filepath The full path to the file on SAS drive
(eg /Public/myfile.txt) (eg /Public/myfile.txt)
@@ -24258,6 +24258,8 @@ run;
@li password @li password
@li authorization_code @li authorization_code
@li sas_services @li sas_services
@param [in] force= (YES) Will overwrite (delete / recreate) files by default.
Set to NO to abort if a file already exists in that location.
@param [out] outds= (_null_) Output dataset with the uri of the new file @param [out] outds= (_null_) Output dataset with the uri of the new file
@param [in] mdebug= (0) Set to 1 to enable DEBUG messages @param [in] mdebug= (0) Set to 1 to enable DEBUG messages
@@ -24268,6 +24270,7 @@ run;
@li mf_getuniquename.sas @li mf_getuniquename.sas
@li mf_isblank.sas @li mf_isblank.sas
@li mf_mimetype.sas @li mf_mimetype.sas
@li mfv_getpathuri.sas
@li mp_abort.sas @li mp_abort.sas
@li mp_base64copy.sas @li mp_base64copy.sas
@li mv_createfolder.sas @li mv_createfolder.sas
@@ -24287,6 +24290,7 @@ run;
,grant_type=sas_services ,grant_type=sas_services
,mdebug=0 ,mdebug=0
,outds=_null_ ,outds=_null_
,force=YES
); );
%local dbg; %local dbg;
%if &mdebug=1 %then %do; %if &mdebug=1 %then %do;
@@ -24308,16 +24312,16 @@ run;
%mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password %mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password
and &grant_type ne sas_services and &grant_type ne sas_services
) )
,mac=&sysmacroname ,mac=MV_CREATEFILE
,msg=%str(Invalid value for grant_type: &grant_type) ,msg=%str(Invalid value for grant_type: &grant_type)
) )
%mp_abort(iftrue=(%mf_isblank(&path)=1 or %length(&path)=1) %mp_abort(iftrue=(%mf_isblank(&path)=1 or %length(&path)=1)
,mac=&sysmacroname ,mac=MV_CREATEFILE
,msg=%str(path value must be provided) ,msg=%str(path value must be provided)
) )
%mp_abort(iftrue=(%mf_isblank(&name)=1 or %length(&name)=1) %mp_abort(iftrue=(%mf_isblank(&name)=1 or %length(&name)=1)
,mac=&sysmacroname ,mac=MV_CREATEFILE
,msg=%str(name value with length >1 must be provided) ,msg=%str(name value with length >1 must be provided)
) )
@@ -24340,9 +24344,12 @@ run;
run; run;
%end; %end;
options noquotelenmax;
%local base_uri; /* location of rest apis */
%let base_uri=%mf_getplatform(VIYARESTAPI);
/* create folder if it does not already exist */ /* create folder if it does not already exist */
%local folderds parenturi; %local folderds self_uri;
%let folderds=%mf_getuniquename(prefix=folderds); %let folderds=%mf_getuniquename(prefix=folderds);
%mv_createfolder(path=&path %mv_createfolder(path=&path
,access_token_var=&access_token_var ,access_token_var=&access_token_var
@@ -24355,26 +24362,43 @@ data _null_;
call symputx('self_uri',self_uri,'l'); call symputx('self_uri',self_uri,'l');
run; run;
/* abort or delete if file already exists */
%let force=%upcase(&force);
%local fileuri ;
%let fileuri=%mfv_getpathuri(&path/&name);
%mp_abort(iftrue=(%mf_isblank(&fileuri)=0 and &force ne YES)
,mac=MV_CREATEFILE
,msg=%str(File &path/&name already exists and force=&force)
)
options noquotelenmax; %if %mf_isblank(&fileuri)=0 and &force=YES %then %do;
%local base_uri; /* location of rest apis */ proc http method="DELETE" url="&base_uri&fileuri" &oauth_bearer;
%let base_uri=%mf_getplatform(VIYARESTAPI); headers
%if &grant_type=authorization_code %then %do;
"Authorization"="Bearer &&&access_token_var"
%end;
"Accept"="*/*";
run;
%put &sysmacroname DELETE &base_uri&fileuri
&=SYS_PROCHTTP_STATUS_CODE &=SYS_PROCHTTP_STATUS_PHRASE;
%end;
%local url mimetype; %local url mimetype ext;
%let url=&base_uri/files/files?parentFolderUri=&self_uri; %let url=&base_uri/files/files?parentFolderUri=&self_uri;
%let ext=%upcase(%scan(&name,-1,.));
/* fetch job info */ /* fetch job info */
%local fname1; %local fname1;
%let fname1=%mf_getuniquefileref(); %let fname1=%mf_getuniquefileref();
proc http method='POST' out=&fname1 &oauth_bearer in=&fref proc http method='POST' out=&fname1 &oauth_bearer in=&fref
%if "&ctype" = "0" %then %do; %if "&ctype" = "0" %then %do;
%let mimetype=%mf_mimetype(%scan(&name,-1,.)); %let mimetype=%mf_mimetype(&ext);
ct="&mimetype" ct="&mimetype"
%end; %end;
%else %do; %else %do;
ct="&ctype" ct="&ctype"
%end; %end;
%if "&mimetype"="text/html" %then %do; %if "&ext"="HTML" or "&ext"="CSS" or "&ext"="JS" or "&ext"="SVG" %then %do;
url="&url%str(&)typeDefName=file"; url="&url%str(&)typeDefName=file";
%end; %end;
%else %do; %else %do;
@@ -24387,10 +24411,10 @@ proc http method='POST' out=&fname1 &oauth_bearer in=&fref
%end; %end;
"Content-Disposition"= "&contentdisp filename=""&name""; name=""&name"";"; "Content-Disposition"= "&contentdisp filename=""&name""; name=""&name"";";
run; run;
%put &=SYS_PROCHTTP_STATUS_CODE; %if &mdebug=1 %then %put &sysmacroname POST &=url
%put &=SYS_PROCHTTP_STATUS_PHRASE; &=SYS_PROCHTTP_STATUS_CODE &=SYS_PROCHTTP_STATUS_PHRASE;
%mp_abort(iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 201) %mp_abort(iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 201)
,mac=&sysmacroname ,mac=MV_CREATEFILE
,msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE) ,msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)
) )
%local libref2; %local libref2;
@@ -24576,8 +24600,9 @@ options noquotelenmax;
'Content-Type'='application/vnd.sas.content.folder+json' 'Content-Type'='application/vnd.sas.content.folder+json'
'Accept'='application/vnd.sas.content.folder+json'; 'Accept'='application/vnd.sas.content.folder+json';
run; run;
%put &=SYS_PROCHTTP_STATUS_CODE; %if &SYS_PROCHTTP_STATUS_CODE ne 200 %then %do;
%put &=SYS_PROCHTTP_STATUS_PHRASE; %put &=SYS_PROCHTTP_STATUS_CODE &=SYS_PROCHTTP_STATUS_PHRASE;
%end;
%mp_abort(iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 201) %mp_abort(iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 201)
,mac=&sysmacroname ,mac=&sysmacroname
,msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE) ,msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)
@@ -25917,13 +25942,8 @@ run;
libname &libref1 clear; libname &libref1 clear;
%end; %end;
%put &sysmacroname: Job &name successfully created in &path; %put NOTE: &sysmacroname: Job &name successfully created! Check it out:;
%put &sysmacroname:; %put NOTE-;%put NOTE- &url/SASJobExecution?_PROGRAM=&path/&name;%put NOTE-;
%put &sysmacroname: Check it out here:;
%put &sysmacroname:;%put;
%put &url/SASJobExecution?_PROGRAM=&path/&name;%put;
%put &sysmacroname:;
%put &sysmacroname:;
%mend mv_createwebservice; %mend mv_createwebservice;
/** /**
@@ -26039,13 +26059,15 @@ proc http method='GET' out=&fname1a &oauth_bearer
headers "Authorization"="Bearer &&&access_token_var"; headers "Authorization"="Bearer &&&access_token_var";
%end; %end;
run; run;
%put &=SYS_PROCHTTP_STATUS_CODE; %if &SYS_PROCHTTP_STATUS_CODE ne 200 %then %do;
%put &=sysmacroname &=SYS_PROCHTTP_STATUS_CODE &=SYS_PROCHTTP_STATUS_PHRASE;
%end;
%local libref1a; %local libref1a;
%let libref1a=%mf_getuniquelibref(); %let libref1a=%mf_getuniquelibref();
libname &libref1a JSON fileref=&fname1a; libname &libref1a JSON fileref=&fname1a;
%local uri found; %local uri found;
%let found=0; %let found=0;
%put Getting object uri from &libref1a..items; /* %put Getting object uri from &libref1a..items; */
data _null_; data _null_;
length contenttype name $1000; length contenttype name $1000;
set &libref1a..items; set &libref1a..items;
@@ -26171,7 +26193,7 @@ run;
) )
%end; %end;
%put &sysmacroname: grab the follow on link ; /* grab the follow on link */
%local libref1; %local libref1;
%let libref1=%mf_getuniquelibref(); %let libref1=%mf_getuniquelibref();
libname &libref1 JSON fileref=&fname1; libname &libref1 JSON fileref=&fname1;
@@ -26195,7 +26217,7 @@ run;
libname &libref1a JSON fileref=&fname1a; libname &libref1a JSON fileref=&fname1a;
%local uri found; %local uri found;
%let found=0; %let found=0;
%put Getting object uri from &libref1a..items; /* %put Getting object uri from &libref1a..items; */
data _null_; data _null_;
length contenttype name $1000; length contenttype name $1000;
set &libref1a..items; set &libref1a..items;
@@ -26230,8 +26252,8 @@ filename &fname1a clear;
libname &libref1a clear; libname &libref1a clear;
%mend mv_deletejes;/** %mend mv_deletejes;/**
@file mv_deleteviyafolder.sas @file
@brief Creates a viya folder if that folder does not already exist @brief Deletes a viya folder
@details If not running in Studo 5 +, will expect an oauth token in a global @details If not running in Studo 5 +, will expect an oauth token in a global
macro variable (default ACCESS_TOKEN). macro variable (default ACCESS_TOKEN).

View File

@@ -161,22 +161,22 @@ run;
&=SYS_PROCHTTP_STATUS_CODE &=SYS_PROCHTTP_STATUS_PHRASE; &=SYS_PROCHTTP_STATUS_CODE &=SYS_PROCHTTP_STATUS_PHRASE;
%end; %end;
%local url mimetype; %local url mimetype ext;
%let url=&base_uri/files/files?parentFolderUri=&self_uri; %let url=&base_uri/files/files?parentFolderUri=&self_uri;
%let ext=%upcase(%scan(&name,-1,.));
/* fetch job info */ /* fetch job info */
%local fname1; %local fname1;
%let fname1=%mf_getuniquefileref(); %let fname1=%mf_getuniquefileref();
proc http method='POST' out=&fname1 &oauth_bearer in=&fref proc http method='POST' out=&fname1 &oauth_bearer in=&fref
%if "&ctype" = "0" %then %do; %if "&ctype" = "0" %then %do;
%let mimetype=%mf_mimetype(%scan(&name,-1,.)); %let mimetype=%mf_mimetype(&ext);
ct="&mimetype" ct="&mimetype"
%end; %end;
%else %do; %else %do;
ct="&ctype" ct="&ctype"
%end; %end;
%if "&mimetype"="text/html" or "&mimetype"="text/css" %if "&ext"="HTML" or "&ext"="CSS" or "&ext"="JS" or "&ext"="SVG" %then %do;
or "&mimetype"="text/javascript" %then %do;
url="&url%str(&)typeDefName=file"; url="&url%str(&)typeDefName=file";
%end; %end;
%else %do; %else %do;
@@ -189,7 +189,7 @@ proc http method='POST' out=&fname1 &oauth_bearer in=&fref
%end; %end;
"Content-Disposition"= "&contentdisp filename=""&name""; name=""&name"";"; "Content-Disposition"= "&contentdisp filename=""&name""; name=""&name"";";
run; run;
%put &sysmacroname POST &=url %if &mdebug=1 %then %put &sysmacroname POST &=url
&=SYS_PROCHTTP_STATUS_CODE &=SYS_PROCHTTP_STATUS_PHRASE; &=SYS_PROCHTTP_STATUS_CODE &=SYS_PROCHTTP_STATUS_PHRASE;
%mp_abort(iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 201) %mp_abort(iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 201)
,mac=MV_CREATEFILE ,mac=MV_CREATEFILE

View File

@@ -164,8 +164,9 @@ options noquotelenmax;
'Content-Type'='application/vnd.sas.content.folder+json' 'Content-Type'='application/vnd.sas.content.folder+json'
'Accept'='application/vnd.sas.content.folder+json'; 'Accept'='application/vnd.sas.content.folder+json';
run; run;
%put &=SYS_PROCHTTP_STATUS_CODE; %if &SYS_PROCHTTP_STATUS_CODE ne 200 %then %do;
%put &=SYS_PROCHTTP_STATUS_PHRASE; %put &=SYS_PROCHTTP_STATUS_CODE &=SYS_PROCHTTP_STATUS_PHRASE;
%end;
%mp_abort(iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 201) %mp_abort(iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 201)
,mac=&sysmacroname ,mac=&sysmacroname
,msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE) ,msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)

View File

@@ -955,12 +955,7 @@ run;
libname &libref1 clear; libname &libref1 clear;
%end; %end;
%put &sysmacroname: Job &name successfully created in &path; %put NOTE: &sysmacroname: Job &name successfully created! Check it out:;
%put &sysmacroname:; %put NOTE-;%put NOTE- &url/SASJobExecution?_PROGRAM=&path/&name;%put NOTE-;
%put &sysmacroname: Check it out here:;
%put &sysmacroname:;%put;
%put &url/SASJobExecution?_PROGRAM=&path/&name;%put;
%put &sysmacroname:;
%put &sysmacroname:;
%mend mv_createwebservice; %mend mv_createwebservice;

View File

@@ -111,13 +111,15 @@ proc http method='GET' out=&fname1a &oauth_bearer
headers "Authorization"="Bearer &&&access_token_var"; headers "Authorization"="Bearer &&&access_token_var";
%end; %end;
run; run;
%put &=SYS_PROCHTTP_STATUS_CODE; %if &SYS_PROCHTTP_STATUS_CODE ne 200 %then %do;
%put &=sysmacroname &=SYS_PROCHTTP_STATUS_CODE &=SYS_PROCHTTP_STATUS_PHRASE;
%end;
%local libref1a; %local libref1a;
%let libref1a=%mf_getuniquelibref(); %let libref1a=%mf_getuniquelibref();
libname &libref1a JSON fileref=&fname1a; libname &libref1a JSON fileref=&fname1a;
%local uri found; %local uri found;
%let found=0; %let found=0;
%put Getting object uri from &libref1a..items; /* %put Getting object uri from &libref1a..items; */
data _null_; data _null_;
length contenttype name $1000; length contenttype name $1000;
set &libref1a..items; set &libref1a..items;

View File

@@ -90,7 +90,7 @@ run;
) )
%end; %end;
%put &sysmacroname: grab the follow on link ; /* grab the follow on link */
%local libref1; %local libref1;
%let libref1=%mf_getuniquelibref(); %let libref1=%mf_getuniquelibref();
libname &libref1 JSON fileref=&fname1; libname &libref1 JSON fileref=&fname1;
@@ -114,7 +114,7 @@ run;
libname &libref1a JSON fileref=&fname1a; libname &libref1a JSON fileref=&fname1a;
%local uri found; %local uri found;
%let found=0; %let found=0;
%put Getting object uri from &libref1a..items; /* %put Getting object uri from &libref1a..items; */
data _null_; data _null_;
length contenttype name $1000; length contenttype name $1000;
set &libref1a..items; set &libref1a..items;