Merge pull request #2406 from chrisgarrity/issue/2388-embed-project

show embed view
This commit is contained in:
chrisgarrity 2018-12-06 11:51:33 -05:00 committed by GitHub
commit 7ac90afb56
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 51 additions and 2 deletions

View file

@ -217,6 +217,52 @@ async.auto({
if (err) return cb(err); if (err) return cb(err);
cb(null, redirectResults); cb(null, redirectResults);
}); });
}],
embedRedirectHeaders: ['version', function (cb, results) {
async.auto({
requestCondition: function (cb2) {
var condition = {
name: 'routes/projects/embed (request)',
statement: 'req.url ~ "^/projects/embed/(\\d+)"',
type: 'REQUEST',
priority: 10
};
fastly.setCondition(results.version, condition, cb2);
},
responseCondition: function (cb2) {
var condition = {
name: 'routes/projects/embed (response)',
statement: 'req.url ~ "^/projects/embed/(\\d+)"',
type: 'RESPONSE',
priority: 10
};
fastly.setCondition(results.version, condition, cb2);
},
responseObject: ['requestCondition', function (cb2, redirectResults) {
var responseObject = {
name: 'redirects/projects/embed',
status: 301,
response: 'Moved Permanently',
request_condition: redirectResults.requestCondition.name
};
fastly.setResponseObject(results.version, responseObject, cb2);
}],
redirectHeader: ['responseCondition', function (cb2, redirectResults) {
var header = {
name: 'redirects/projects/embed',
action: 'set',
ignore_if_set: 0,
type: 'RESPONSE',
dst: 'http.Location',
src: '"/projects/" + re.group.1 + "/embed"',
response_condition: redirectResults.responseCondition.name
};
fastly.setFastlyHeader(results.version, header, cb2);
}]
}, function (err, redirectResults) {
if (err) return cb(err);
cb(null, redirectResults);
});
}] }]
}, function (err, results) { }, function (err, results) {
if (err) throw new Error(err); if (err) throw new Error(err);

View file

@ -199,7 +199,7 @@
}, },
{ {
"name": "projects", "name": "projects",
"pattern": "^/projects(/editor|(/\\d+(/editor|/fullscreen)?)?)?/?(\\?.*)?$", "pattern": "^/projects(/editor|(/\\d+(/editor|/fullscreen|/embed)?)?)?/?(\\?.*)?$",
"routeAlias": "/projects/?$", "routeAlias": "/projects/?$",
"view": "preview/preview", "view": "preview/preview",
"title": "Scratch Project" "title": "Scratch Project"

View file

@ -883,13 +883,16 @@ module.exports.initGuiState = guiInitialState => {
const parts = pathname.split('/').filter(Boolean); const parts = pathname.split('/').filter(Boolean);
// parts[0]: 'projects' // parts[0]: 'projects'
// parts[1]: either :id or 'editor' // parts[1]: either :id or 'editor'
// parts[2]: undefined if no :id, otherwise either 'editor' or 'fullscreen' // parts[2]: undefined if no :id, otherwise either 'editor', 'fullscreen' or 'embed'
if (parts.indexOf('editor') === -1) { if (parts.indexOf('editor') === -1) {
guiInitialState = GUI.initPlayer(guiInitialState); guiInitialState = GUI.initPlayer(guiInitialState);
} }
if (parts.indexOf('fullscreen') !== -1) { if (parts.indexOf('fullscreen') !== -1) {
guiInitialState = GUI.initFullScreen(guiInitialState); guiInitialState = GUI.initFullScreen(guiInitialState);
} }
if (parts.indexOf('embed') !== -1) {
guiInitialState = GUI.initEmbedded(guiInitialState);
}
return guiInitialState; return guiInitialState;
}; };