mirror of
https://github.com/sasjs/core.git
synced 2025-12-11 06:24:35 +00:00
feat: new httpheader macro (and test) for sasjs/server
This commit is contained in:
52
server/mfs_httpheader.sas
Normal file
52
server/mfs_httpheader.sas
Normal file
@@ -0,0 +1,52 @@
|
||||
/**
|
||||
@file
|
||||
@brief Sets the http headers in the SASjs/server response
|
||||
@details For GET requests, SASjs server will use the file generated by this
|
||||
macro for setting the appropriate http headers in the response.
|
||||
|
||||
It works by writing a file to the session directory, that is then ingested by
|
||||
the server.
|
||||
|
||||
The location of this file is driven by the global variable
|
||||
`sasjs_stpsrv_header_loc` which is made available in the autoexec.
|
||||
|
||||
Usage:
|
||||
|
||||
%mfs_httpheader(Content-type,application/csv)
|
||||
|
||||
@param [in] header_name Name of the http header to set
|
||||
@param [in] header_value Value of the http header to set
|
||||
|
||||
<h4> Related Macros </h4>
|
||||
@li mcf_stpsrv_header.sas
|
||||
|
||||
@version 9.3
|
||||
@author Allan Bowe
|
||||
|
||||
**/
|
||||
|
||||
%macro mfs_httpheader(header_name
|
||||
,header_value
|
||||
)/*/STORE SOURCE*/;
|
||||
%local fref fid i;
|
||||
|
||||
%if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc)) ne 0 %then %do;
|
||||
%put &=fref &=sasjs_stpsrv_header_loc;
|
||||
%put %str(ERR)OR: %sysfunc(sysmsg());
|
||||
%return;
|
||||
%end;
|
||||
|
||||
%let fid=%sysfunc(fopen(&fref,A));
|
||||
|
||||
%if &fid=0 %then %do;
|
||||
%put %str(ERR)OR: %sysfunc(sysmsg());
|
||||
%return;
|
||||
%end;
|
||||
|
||||
%let rc=%sysfunc(fput(&fid,%str(&header_name): %str(&header_value)));
|
||||
%let rc=%sysfunc(fwrite(&fid));
|
||||
|
||||
%let rc=%sysfunc(fclose(&fid));
|
||||
%let rc=%sysfunc(filename(&fref));
|
||||
|
||||
%mend mfs_httpheader;
|
||||
48
tests/serveronly/mfs_httpheader.test.sas
Normal file
48
tests/serveronly/mfs_httpheader.test.sas
Normal file
@@ -0,0 +1,48 @@
|
||||
/**
|
||||
@file
|
||||
@brief Testing mfs_httpheader.sas macro
|
||||
|
||||
<h4> SAS Macros </h4>
|
||||
@li mfs_httpheader.sas
|
||||
@li mp_assert.sas
|
||||
|
||||
**/
|
||||
|
||||
%let sasjs_stpsrv_header_loc=%sysfunc(pathname(work))/header.txt;
|
||||
|
||||
%mfs_httpheader(Content-type,application/csv)
|
||||
data _null_;
|
||||
infile "&sasjs_stpsrv_header_loc";
|
||||
input;
|
||||
if _n_=1 then call symputx('test1',_infile_);
|
||||
run;
|
||||
|
||||
%mp_assert(
|
||||
iftrue=(&syscc=0),
|
||||
desc=Check code ran without errors,
|
||||
outds=work.test_results
|
||||
)
|
||||
%mp_assert(
|
||||
iftrue=("&test1"="Content-type: application/csv"),
|
||||
desc=Checking line was created,
|
||||
outds=work.test_results
|
||||
)
|
||||
|
||||
%mfs_httpheader(Content-type,application/text)
|
||||
%let test2=0;
|
||||
data _null_;
|
||||
infile "&sasjs_stpsrv_header_loc";
|
||||
input;
|
||||
if _n_=2 then call symputx('test2',_infile_);
|
||||
run;
|
||||
|
||||
%mp_assert(
|
||||
iftrue=(&syscc=0),
|
||||
desc=Check code ran without errors for test2,
|
||||
outds=work.test_results
|
||||
)
|
||||
%mp_assert(
|
||||
iftrue=("&test2"="Content-type: application/text"),
|
||||
desc=Checking line was created,
|
||||
outds=work.test_results
|
||||
)
|
||||
Reference in New Issue
Block a user