@@ -93,7 +93,7 @@ TFHIRPackageWebServer = class (TFhirWebServerEndpoint)
9393 procedure servePage (fn : String; request : TIdHTTPRequestInfo; response : TIdHTTPResponseInfo; secure : boolean);
9494 procedure serveDownload (secure : boolean; id, version : String; response : TIdHTTPResponseInfo);
9595 procedure serveVersions (id, sort : String; secure : boolean; request : TIdHTTPRequestInfo; response : TIdHTTPResponseInfo);
96- procedure serveSearch (name , dependson, canonicalPkg, canonicalUrl, FHIRVersion, dependency, sort : String; secure : boolean; request : TIdHTTPRequestInfo; response : TIdHTTPResponseInfo);
96+ procedure serveSearch (name , dependson, canonicalPkg, canonicalUrl, FHIRVersion, dependency, sort : String; secure, objWrapper : boolean; request : TIdHTTPRequestInfo; response : TIdHTTPResponseInfo);
9797 procedure serveUpdates (date : TFslDateTime; secure : boolean; response : TIdHTTPResponseInfo);
9898 procedure serveProtectForm (request : TIdHTTPRequestInfo; response : TIdHTTPResponseInfo; id : String);
9999 procedure serveLog (request : TIdHTTPRequestInfo; response : TIdHTTPResponseInfo);
@@ -1208,12 +1208,13 @@ function sel(this, that : String) : string;
12081208end ;
12091209
12101210procedure TFHIRPackageWebServer.serveSearch (name , dependson, canonicalPkg, canonicalUrl,
1211- FHIRVersion, dependency, sort: String; secure: boolean;
1211+ FHIRVersion, dependency, sort: String; secure, objWrapper : boolean;
12121212 request: TIdHTTPRequestInfo; response: TIdHTTPResponseInfo);
12131213var
12141214 conn : TFDBConnection;
12151215 json : TJsonArray;
1216- v : TJsonObject;
1216+ v, obj, w : TJsonObject;
1217+ e : TJsonNode;
12171218 filter, src, dep : String;
12181219 vars : TFslMap<TFHIRObject>;
12191220 list : TFslList<TJsonObject>;
@@ -1340,10 +1341,26 @@ procedure TFHIRPackageWebServer.serveSearch(name, dependson, canonicalPkg, canon
13401341 end
13411342 else
13421343 begin
1343- src := TJsonWriterDirect.writeArrayStr(json, true);
1344+ if objWrapper then
1345+ begin
1346+ obj := TJsonObject.create;
1347+ try
1348+ for e in json do
1349+ begin
1350+ w := TJsonObject.create;
1351+ obj.forceArr[' objects' ].add(w);
1352+ w.obj[' package' ] := (e as TJsonObject).link;
1353+ end ;
1354+ src := TJsonWriterDirect.writeObjectStr(obj, true);
1355+ finally
1356+ obj.free;
1357+ end ;
1358+ end
1359+ else
1360+ src := TJsonWriterDirect.writeArrayStr(json, true);
13441361 response.ContentType := ' application/json' ;
13451362 response.ContentText := src;
1346- end ;
1363+ end ;
13471364 finally
13481365 json.free;
13491366 deps.free;
@@ -1666,7 +1683,7 @@ function TFHIRPackageWebServer.doRequest(AContext: TIdContext; request: TIdHTTPR
16661683 begin
16671684 if not pm.has(' lastUpdated' ) then
16681685 begin
1669- serveSearch(pm[' name' ], pm[' dependson' ], pm[' pkgcanonical' ], pm[' canonical' ], pm[' fhirversion' ], pm[' dependency' ], pm[' sort' ], secure, request, response);
1686+ serveSearch(pm[' name' ], pm[' dependson' ], pm[' pkgcanonical' ], pm[' canonical' ], pm[' fhirversion' ], pm[' dependency' ], pm[' sort' ], secure, false, request, response);
16701687 result := ' Search Packages' ;
16711688 end
16721689 else if pm[' lastUpdated' ].startsWith(' -' ) then
@@ -1682,7 +1699,7 @@ function TFHIRPackageWebServer.doRequest(AContext: TIdContext; request: TIdHTTPR
16821699 end
16831700 else if (request.CommandType = hcGET) and (request.Document = ' /packages/-/v1/search' ) then
16841701 begin
1685- serveSearch(pm[' text' ], pm[' dependson' ], pm[' pkgcanonical' ], pm[' canonical' ], pm[' fhirversion' ], pm[' dependency' ], pm[' sort' ], secure, request, response);
1702+ serveSearch(pm[' text' ], pm[' dependson' ], pm[' pkgcanonical' ], pm[' canonical' ], pm[' fhirversion' ], pm[' dependency' ], pm[' sort' ], secure, true, request, response);
16861703 result := ' Search Packages (v1)' ;
16871704 end
16881705 else if (request.CommandType = hcGET) and (request.Document = ' /packages/log' ) then
0 commit comments