Skip to content
This repository has been archived by the owner on Feb 25, 2022. It is now read-only.

Commit

Permalink
fix(css): add customer loader for content css
Browse files Browse the repository at this point in the history
  • Loading branch information
tripodsan committed Jun 21, 2019
1 parent d0b6ea2 commit ee98014
Show file tree
Hide file tree
Showing 3 changed files with 96 additions and 3 deletions.
44 changes: 44 additions & 0 deletions src/css.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
/*
* Copyright 2019 Adobe. All rights reserved.
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. You may obtain a copy
* of the License at http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
* OF ANY KIND, either express or implied. See the License for the specific language
* governing permissions and limitations under the License.
*/

/* eslint-disable import/no-unresolved */

const { computeSurrogateKey } = require('@adobe/helix-shared').utils;
const { preFetch } = require('./utils.js');

/**
* Tries to load the respective raw resource from the content repository. This is to
* workaround an issue in the order the Fastly logic executes the templates.
*/
async function main(context, action) {
await preFetch(context, action);
if (context.response && context.response.body) {
return {
response: {
status: 200,
body: context.response.body,
headers: {
'Surrogate-Key': context.content.sources.map(computeSurrogateKey).join(' '),
'Content-Type': 'text/css',
'Cache-Control': 's-maxage=604800',
},
},
};
}
return {
response: {
status: 404,
},
};
}

module.exports.main = main;
48 changes: 48 additions & 0 deletions src/js.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
/*
* Copyright 2019 Adobe. All rights reserved.
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. You may obtain a copy
* of the License at http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
* OF ANY KIND, either express or implied. See the License for the specific language
* governing permissions and limitations under the License.
*/

/* eslint-disable import/no-unresolved */

const { computeSurrogateKey } = require('@adobe/helix-shared').utils;
const { runPipeline } = require('@adobe/helix-pipeline').OpenWhiskAction;
const { preFetch } = require('./utils.js');

/**
* Tries to load the respective raw resource from the content repository. This is to
* workaround an issue in the order the Fastly logic executes the templates.
*/
async function main(params) {
const pipe = async (cont, context, action) => {
await preFetch(context, action);
if (context.response && context.response.body) {
return {
response: {
status: 200,
body: context.response.body,
headers: {
'Surrogate-Key': context.content.sources.map(computeSurrogateKey).join(' '),
'Content-Type': 'text/javascript',
'Cache-Control': 's-maxage=604800',
},
},
};
}
return {
response: {
status: 404,
},
};
};
return runPipeline(() => {}, pipe, params);
}

module.exports.main = main;
7 changes: 4 additions & 3 deletions src/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,16 +19,16 @@ const rp = require('request-promise-native');
* workaround an issue in the order the Fastly logic executes the templates.
*/
async function preFetch(context, { secrets = {}, request, logger }) {
logger.info(JSON.stringify(secrets, null, 2));
// logger.info(JSON.stringify(secrets, null, 2));
const {
owner, repo, path, ref, extension, selector,
} = request.params;
if (!path.endsWith('.md')) {
return;
}
const sel = selector ? `.${selector}` : '';
const htmlPath = `${path.substring(0, path.length - 3)}${sel}.${extension}`.replace(/\/+/g, '/');
const url = `${secrets.REPO_RAW_ROOT}${owner}/${repo}/${ref}/${htmlPath}`;
const htmlPath = `${owner}/${repo}/${ref}/${path.substring(0, path.length - 3)}${sel}.${extension}`.replace(/\/+/g, '/');
const url = `${secrets.REPO_RAW_ROOT}${htmlPath}`;
logger.info(`trying to load ${url}`);

if (!context.response) {
Expand All @@ -42,6 +42,7 @@ async function preFetch(context, { secrets = {}, request, logger }) {
url,
json: false,
});
context.content.sources = [url];
context.content.body = '';
} catch (e) {
// ignore
Expand Down

0 comments on commit ee98014

Please sign in to comment.