44import java .nio .charset .Charset ;
55import java .util .HashMap ;
66import java .util .Map ;
7+ import lombok .RequiredArgsConstructor ;
78import org .apache .commons .lang3 .StringUtils ;
89import org .apache .commons .text .StringSubstitutor ;
910import org .springframework .beans .factory .annotation .Value ;
11+ import org .springframework .boot .context .properties .EnableConfigurationProperties ;
1012import org .springframework .core .io .ClassPathResource ;
1113import org .springframework .util .StreamUtils ;
1214import org .springframework .web .bind .annotation .RequestParam ;
1315
1416/**
1517 * @author Guilherme Blanco
1618 */
19+ @ RequiredArgsConstructor
1720public class VoyagerIndexHtmlTemplate {
1821
1922 private static final String CDNJS_CLOUDFLARE_COM_AJAX_LIBS = "//cdnjs.cloudflare.com/ajax/libs/" ;
2023 private static final String CDN_JSDELIVR_NET_NPM = "//cdn.jsdelivr.net/npm/" ;
2124 private static final String VOYAGER = "graphql-voyager" ;
2225 private static final String FAVICON_APIS_GURU = "//apis.guru/graphql-voyager/icons/favicon-16x16.png" ;
2326
24- @ Value ("${voyager.endpoint:/graphql}" )
25- private String graphqlEndpoint ;
26-
27- @ Value ("${voyager.pageTitle:Voyager}" )
28- private String pageTitle ;
29-
30- @ Value ("${voyager.basePath:/}" )
31- private String basePath ;
32-
33- @ Value ("${voyager.cdn.enabled:false}" )
34- private boolean voyagerCdnEnabled ;
35-
36- @ Value ("${voyager.cdn.version:1.0.0-rc.31}" )
37- private String voyagerCdnVersion ;
38-
39- @ Value ("${voyager.displayOptions.skipRelay:true}" )
40- private boolean voyagerDisplayOptionsSkipRelay ;
41-
42- @ Value ("${voyager.displayOptions.skipDeprecated:true}" )
43- private boolean voyagerDisplayOptionsSkipDeprecated ;
44-
45- @ Value ("${voyager.displayOptions.rootType:Query}" )
46- private String voyagerDisplayOptionsRootType ;
47-
48- @ Value ("${voyager.displayOptions.sortByAlphabet:false}" )
49- private boolean voyagerDisplayOptionsSortByAlphabet ;
50-
51- @ Value ("${voyager.displayOptions.showLeafFields:true}" )
52- private boolean voyagerDisplayOptionsShowLeafFields ;
53-
54- @ Value ("${voyager.displayOptions.hideRoot:false}" )
55- private boolean voyagerDisplayOptionsHideRoot ;
56-
57- @ Value ("${voyager.hideDocs:false}" )
58- private boolean voyagerHideDocs ;
59-
60- @ Value ("${voyager.hideSettings:false}" )
61- private boolean voyagerHideSettings ;
27+ private final VoyagerPropertiesConfiguration voyagerConfiguration ;
6228
6329 public String fillIndexTemplate (String contextPath , Map <String , String > params )
6430 throws IOException {
6531 String template = StreamUtils
6632 .copyToString (new ClassPathResource ("voyager.html" ).getInputStream (),
6733 Charset .defaultCharset ());
34+
35+ String basePath = voyagerConfiguration .getBasePath ();
36+ String voyagerCdnVersion = voyagerConfiguration .getCdn ().getVersion ();
37+
6838 Map <String , String > replacements = new HashMap <>();
6939 replacements .put ("graphqlEndpoint" , constructGraphQlEndpoint (contextPath , params ));
70- replacements .put ("pageTitle" , pageTitle );
40+ replacements .put ("pageTitle" , voyagerConfiguration . getPageTitle () );
7141 replacements
7242 .put ("pageFavicon" , getResourceUrl (basePath , "favicon.ico" , FAVICON_APIS_GURU ));
7343 replacements .put ("es6PromiseJsUrl" , getResourceUrl (basePath , "es6-promise.auto.min.js" ,
@@ -85,14 +55,15 @@ public String fillIndexTemplate(String contextPath, Map<String, String> params)
8555 replacements .put ("voyagerWorkerJsUrl" , getResourceUrl (basePath , "voyager.worker.js" ,
8656 joinJsDelivrPath (voyagerCdnVersion , "dist/voyager.worker.min.js" )));
8757 replacements .put ("contextPath" , contextPath );
88- replacements .put ("voyagerDisplayOptionsSkipRelay" , Boolean .toString (voyagerDisplayOptionsSkipRelay ));
89- replacements .put ("voyagerDisplayOptionsSkipDeprecated" , Boolean .toString (voyagerDisplayOptionsSkipDeprecated ));
90- replacements .put ("voyagerDisplayOptionsRootType" , voyagerDisplayOptionsRootType );
91- replacements .put ("voyagerDisplayOptionsSortByAlphabet" , Boolean .toString (voyagerDisplayOptionsSortByAlphabet ));
92- replacements .put ("voyagerDisplayOptionsShowLeafFields" , Boolean .toString (voyagerDisplayOptionsShowLeafFields ));
93- replacements .put ("voyagerDisplayOptionsHideRoot" , Boolean .toString (voyagerDisplayOptionsHideRoot ));
94- replacements .put ("voyagerHideDocs" , Boolean .toString (voyagerHideDocs ));
95- replacements .put ("voyagerHideSettings" , Boolean .toString (voyagerHideSettings ));
58+ replacements .put ("voyagerDisplayOptionsSkipRelay" , Boolean .toString (voyagerConfiguration .getDisplayOptions ().isSkipRelay ()));
59+ replacements .put ("voyagerDisplayOptionsSkipDeprecated" , Boolean .toString (voyagerConfiguration .getDisplayOptions ().isSkipDeprecated ()));
60+ replacements .put ("voyagerDisplayOptionsRootType" , voyagerConfiguration .getDisplayOptions ().getRootType ());
61+ replacements .put ("voyagerDisplayOptionsSortByAlphabet" , Boolean .toString (
62+ voyagerConfiguration .getDisplayOptions ().isSortByAlphabet ()));
63+ replacements .put ("voyagerDisplayOptionsShowLeafFields" , Boolean .toString (voyagerConfiguration .getDisplayOptions ().isShowLeafFields ()));
64+ replacements .put ("voyagerDisplayOptionsHideRoot" , Boolean .toString (voyagerConfiguration .getDisplayOptions ().isHideRoot ()));
65+ replacements .put ("voyagerHideDocs" , Boolean .toString (voyagerConfiguration .isHideDocs ()));
66+ replacements .put ("voyagerHideSettings" , Boolean .toString (voyagerConfiguration .isHideSettings ()));
9667
9768
9869
@@ -101,7 +72,7 @@ public String fillIndexTemplate(String contextPath, Map<String, String> params)
10172
10273 private String constructGraphQlEndpoint (String contextPath ,
10374 @ RequestParam Map <String , String > params ) {
104- String endpoint = graphqlEndpoint ;
75+ String endpoint = voyagerConfiguration . getEndpoint () ;
10576 for (Map .Entry <String , String > param : params .entrySet ()) {
10677 endpoint = endpoint .replaceAll ("\\ {" + param .getKey () + "}" , param .getValue ());
10778 }
@@ -112,7 +83,7 @@ private String constructGraphQlEndpoint(String contextPath,
11283 }
11384
11485 private String getResourceUrl (String staticBasePath , String staticFileName , String cdnUrl ) {
115- if (voyagerCdnEnabled && StringUtils .isNotBlank (cdnUrl )) {
86+ if (voyagerConfiguration . getCdn (). isEnabled () && StringUtils .isNotBlank (cdnUrl )) {
11687 return cdnUrl ;
11788 }
11889 return joinStaticPath (staticBasePath , staticFileName );
0 commit comments