Skip to content

Commit

Permalink
Update Segment url intercepts for fetch-based Segment js API
Browse files Browse the repository at this point in the history
The analytics.js API from CDN started using fetch instead of XHR on March 1 2023.
Replace custom Appsembler code which does the replication of frontendJS events to ours and customer's Segment backends
Override fetch calls to swap api.segmentio calls with Open edX /segmentio/send/* requests
  • Loading branch information
bryanlandia committed Aug 29, 2023
1 parent 96ff911 commit ed5f472
Showing 1 changed file with 18 additions and 12 deletions.
30 changes: 18 additions & 12 deletions lms/templates/widgets/segment-io.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,25 @@
% if settings.LMS_SEGMENT_KEY and settings.LMS_SEGMENT_SITE:
## begin Copy from edx-platform/cms/templates/widgets/segment-io.html
## Appsembler: begin Segment Site
<script>
!function(){
var realOpen = XMLHttpRequest.prototype.open;
var originalAPI = '${settings.SEGMENT_ORIGINAL_API}';
var replicateAPI = '${settings.SEGMENT_REPLICATE_API}';
XMLHttpRequest.prototype.open = function() {
if (arguments[1].substr(0, originalAPI.length) === originalAPI) {
arguments[1] = replicateAPI + arguments[1].substr(originalAPI.length);
<script type="text/javascript">
!function(){
var originalAPI = '${settings.SEGMENT_ORIGINAL_API}';
var replicateAPI = '${settings.SEGMENT_REPLICATE_API}';
function replaceFetchResourceForSegmentSite(resource){
if (resource.substr(0, originalAPI.length) === originalAPI) {
resource = replicateAPI + resource.substr(originalAPI.length);
}
return realOpen.apply(this, arguments);
};
}();
</script>
return resource;
}
const { fetch: originalFetch } = window;
window.fetch = async (...args) => {
let [resource, config ] = args;
resource = replaceFetchResourceForSegmentSite(resource);
const response = await originalFetch(resource, config);
return response;
};
}();
</script>
## Appsembler: end Segment Site
## end Copy
% endif
Expand Down

0 comments on commit ed5f472

Please sign in to comment.