UNPKG

next-ims-lti-ssl

Version:
2 lines (1 loc) 2.08 kB
"use strict";var h=Object.create;var p=Object.defineProperty;var C=Object.getOwnPropertyDescriptor;var b=Object.getOwnPropertyNames;var L=Object.getPrototypeOf,P=Object.prototype.hasOwnProperty;var k=(e,t)=>{for(var r in t)p(e,r,{get:t[r],enumerable:!0})},l=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of b(t))!P.call(e,o)&&o!==r&&p(e,o,{get:()=>t[o],enumerable:!(n=C(t,o))||n.enumerable});return e};var u=(e,t,r)=>(r=e!=null?h(L(e)):{},l(t||!e||!e.__esModule?p(r,"default",{value:e,enumerable:!0}):r,e)),v=e=>l(p({},"__esModule",{value:!0}),e);var J={};k(J,{default:()=>O});module.exports=v(J);var x=u(require("ims-lti")),d=u(require("body-parser")),y=require("next-cookie"),E=(e,t)=>{let r=e.headers["x-forwarded-proto"]||(e.connection.encrypted?"https":"http");return e.protocol=r,e},I=async(e,t)=>new Promise(r=>{d.default.urlencoded({extended:!0})(e,t,()=>{d.default.json()(e,t,()=>{r({req:e,res:t})})})}),S=e=>{let t;try{return t=Buffer.from(Buffer.from(e).toString("base64")).toString("base64"),t}catch(r){return S(JSON.stringify({error:r}))}},w=e=>{let t;try{return t=Buffer.from(Buffer.from(e,"base64").toString(),"base64").toString(),t}catch(r){return JSON.stringify({error:r})}},A=({ctx:e,request:t,key:r,secret:n,persist:o,cookieOptions:i})=>new Promise(c=>{let a=new x.default.Provider(r,n);a.valid_request(t,(g,f)=>{let s=(0,y.useCookie)(e);if(f){if(o){let m=S(JSON.stringify(a.body));s.set("HEp8hAsCelpLI3EX",m,{maxAge:1e3*60*60*24*365,path:"/",...i})}c(a.body)}else{if(o){let m=S(JSON.stringify({error:g}));s.set("HEp8hAsCelpLI3EX",m,{maxAge:1e3*60*60*24*365,path:"/",...i})}c({error:g})}})}),N=async({ctx:e,key:t,secret:r,persist:n,cookieOptions:o={}})=>{let{req:i,res:c}=e;if(i.method==="POST"){let f=E(i,c),{req:s}=await I(f,c);return await A({ctx:e,request:s,key:t,secret:r,persist:n,cookieOptions:o})}if(n){let f=(0,y.useCookie)(e);try{return JSON.parse(w(f.get("HEp8hAsCelpLI3EX")))||{}}catch(s){return{error:s}}}let a=(0,y.useCookie)(e),g=S(JSON.stringify({}));return a.set("HEp8hAsCelpLI3EX",g,{maxAge:0,path:"/",...o}),{}},O=N;