UNPKG

@keload/node-red-contrib-happy-http-client

Version:
10 lines (9 loc) 29.4 kB
<script type="text/html" data-template-name="happy-config"><div class="keload-node-red-contrib-happy-http-client"><div id="keload-node-red-contrib-happy-http-client-happy-config"><div class="alert alert-info">Node is in Beta state.</div><div class="dxp-template-form-row"><label for="node-config-input-name"><i class="fa fa-tag"></i><span data-i18n="happy-config.name">Name</span></label><div class="content"><input type="text" id="node-config-input-name" data-i18n="[placeholder]happy-config.name" placeholder="name"></div></div><div><ul id="tabs"></ul></div><div class="mt-4" id="tabs-content-tabs"><div class="hidden" id="tab-endpoint"><div class="dxp-template-form-row"><label for="node-config-input-baseUrl"><i class="fa fa-globe"></i><span data-i18n="happy-config.Base URL">Base URL</span></label><div class="content"><input type="text" id="node-config-input-baseUrl" data-i18n="[placeholder]happy-config.Base URL" placeholder="Base URL"></div></div><div class="dxp-template-form-row"><label for="node-config-input-defaultArgsHeaders"><i class="fa fa-table"></i><span data-i18n="happy-config.Headers">Headers</span></label><div class="content"><input type="text" id="node-config-input-defaultArgsHeaders" data-i18n="[placeholder]happy-config.Headers" placeholder="Headers"><input type="hidden" id="node-config-input-defaultArgsHeadersType"><div class="hint max-w-[350px]">Defaults request headers (json)</div></div></div><div class="dxp-template-form-row"><label for="node-config-input-defaultArgsQueryParams"><i class="fa fa-table"></i><span data-i18n="happy-config.Params">Params</span></label><div class="content"><input type="text" id="node-config-input-defaultArgsQueryParams" data-i18n="[placeholder]happy-config.Params" placeholder="Params"><input type="hidden" id="node-config-input-defaultArgsQueryParamsType"><div class="hint max-w-[350px]">Defaults request query params (json)</div></div></div><div class="dxp-template-form-row"><label for="node-config-input-connectionKeepAlive"><span data-i18n="happy-config.Keep-Alive">Keep-Alive</span></label><div class="content"><input type="text" id="node-config-input-connectionKeepAlive" data-i18n="[placeholder]happy-config.Keep-Alive" placeholder=""><input type="hidden" id="node-config-input-connectionKeepAliveType"><div class="hint max-w-[350px]">Must be a number in ms (0 is off)</div></div></div><div class="dxp-template-form-row"><label for="node-config-input-connectionTimeout"><i class="fa fa-clock-o"></i><span data-i18n="happy-config.Timeout">Timeout</span></label><div class="content"><input type="text" id="node-config-input-connectionTimeout" data-i18n="[placeholder]happy-config.Timeout" placeholder="Timeout"><input type="hidden" id="node-config-input-connectionTimeoutType"><div class="hint max-w-[350px]">Must be a number in ms</div></div></div></div><div class="hidden" id="tab-auth"><div class="dxp-template-form-row"><label for="node-config-input-requestAuthKind"><span data-i18n="happy-config.Type">Type</span></label><div class="content"><select id="node-config-input-requestAuthKind"></select></div></div><div class="auth-cred-container hidden"><div class="dxp-template-form-row"><label for="node-config-input-requestAuthUsername"><i class="fa fa-user"></i><span data-i18n="happy-config.Username">Username</span></label><div class="content"><input type="text" id="node-config-input-requestAuthUsername" data-i18n="[placeholder]happy-config.Username" placeholder=""><input type="hidden" id="node-config-input-requestAuthUsernameType"></div></div><div class="dxp-template-form-row"><label for="node-config-input-requestAuthPasswordSecret"><i class="fa fa-lock"></i><span data-i18n="happy-config.Password">Password</span></label><div class="content"><input type="password" id="node-config-input-requestAuthPasswordSecret" data-i18n="[placeholder]happy-config.Password" placeholder=""></div></div></div><div class="flex items-center gap-4 mb-2"><span class="text-md font-semibold">Bearer Token</span><div class="flex-1 border-t border-gray-300"></div></div><div class="dxp-template-form-row"><label for="node-config-input-requestAuthBearerToken"><span data-i18n="happy-config.Bearer Token">Bearer Token</span></label><div class="content"><input type="text" id="node-config-input-requestAuthBearerToken" data-i18n="[placeholder]happy-config.Bearer Token" placeholder="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."><input type="hidden" id="node-config-input-requestAuthBearerTokenType"></div></div></div><div class="hidden" id="tab-advanced"><div class="flex items-center gap-4 mb-2"><span class="text-md font-semibold">TLS</span><div class="flex-1 border-t border-gray-300"></div></div><div class="dxp-template-form-row"><label for="node-config-input-caRejectUnauthorized"><span data-i18n="happy-config.Reject">Reject</span></label><div class="content"><input type="text" id="node-config-input-caRejectUnauthorized" data-i18n="[placeholder]happy-config.Reject" placeholder="Reject Unauthorized"><input type="hidden" id="node-config-input-caRejectUnauthorizedType"><div class="hint max-w-[350px]">Verify server certificate</div></div></div><div class="flex items-center gap-4 mb-2"><span class="text-md font-semibold">Proxy</span><div class="flex-1 border-t border-gray-300"></div></div><div class="alert alert-info italic">Coming soon...</div></div></div></div></div></script><script type="text/html" data-template-name="happy-request"><div class="keload-node-red-contrib-happy-http-client"><div id="keload-node-red-contrib-happy-http-client-happy-request"><div class="alert alert-info">Node is in Beta state.</div><div class="dxp-template-form-row"><label for="node-input-name"><i class="fa fa-tag"></i><span data-i18n="happy-request.name">Name</span></label><div class="content"><input type="text" id="node-input-name" data-i18n="[placeholder]happy-request.name" placeholder="name"></div></div><div class="dxp-template-form-row"><label for="node-input-clientInstance"><i class="fa fa-server"></i><span data-i18n="happy-request.Client">Client</span></label><div class="content force-w-full"><select id="node-input-clientInstance"></select><div class="hint max-w-[350px]">Client is not required</div></div></div><div class="dxp-template-form-row"><label for="node-input-endpoint"><i class="fa fa-globe"></i><span data-i18n="happy-request.Endpoint">Endpoint</span></label><div class="content"><input type="text" id="node-input-endpoint" data-i18n="[placeholder]happy-request.Endpoint" placeholder=""><input type="hidden" id="node-input-endpointType"><div class="hint max-w-[350px]">Endpoint or full URL without client</div></div></div><div class="dxp-template-form-row"><label for="node-input-method"><i class="fa fa-envelope-o"></i><span data-i18n="happy-request.Method">Method</span></label><div class="content"><input type="text" id="node-input-method" data-i18n="[placeholder]happy-request.Method" placeholder=""><input type="hidden" id="node-input-methodType"></div></div><div><ul id="tabs-request-node"></ul></div><div class="mt-4" id="tabs-content-tabs-request-node"><div class="hidden" id="tab-request"><div class="dxp-template-form-row"><label for="node-input-defaultArgsHeaders"><i class="fa fa-table"></i><span data-i18n="happy-request.Headers">Headers</span></label><div class="content"><input type="text" id="node-input-defaultArgsHeaders" data-i18n="[placeholder]happy-request.Headers" placeholder="Headers"><input type="hidden" id="node-input-defaultArgsHeadersType"><div class="hint max-w-[350px]">Request headers (merge and override client) (json)</div></div></div><div class="dxp-template-form-row"><label for="node-input-defaultArgsQueryParams"><i class="fa fa-table"></i><span data-i18n="happy-request.Params">Params</span></label><div class="content"><input type="text" id="node-input-defaultArgsQueryParams" data-i18n="[placeholder]happy-request.Params" placeholder="Params"><input type="hidden" id="node-input-defaultArgsQueryParamsType"><div class="hint max-w-[350px]">Request query params (merge and override client) (json)</div></div></div><div class="dxp-template-form-row"><label for="node-input-body"><i class="fa fa-align-left"></i><span data-i18n="happy-request.Body">Body</span></label><div class="content"><input type="text" id="node-input-body" data-i18n="[placeholder]happy-request.Body" placeholder="Body"><input type="hidden" id="node-input-bodyType"></div></div><div class="dxp-template-form-row"><label for="node-input-bodyContentType"><i class="fa fa-file-code-o"></i><span data-i18n="happy-request.Body Type">Body Type</span></label><div class="content"><select id="node-input-bodyContentType"></select><div class="hint max-w-[350px]">Body content type</div></div></div><div class="dxp-template-form-row"><label for="node-input-connectionKeepAlive"><span data-i18n="happy-request.Keep-Alive">Keep-Alive</span></label><div class="content"><input type="text" id="node-input-connectionKeepAlive" data-i18n="[placeholder]happy-request.Keep-Alive" placeholder=""><input type="hidden" id="node-input-connectionKeepAliveType"><div class="hint max-w-[350px]">Must be a number in ms (0 is off)</div></div></div><div class="dxp-template-form-row"><label for="node-input-connectionTimeout"><i class="fa fa-clock-o"></i><span data-i18n="happy-request.Timeout">Timeout</span></label><div class="content"><input type="text" id="node-input-connectionTimeout" data-i18n="[placeholder]happy-request.Timeout" placeholder="Timeout"><input type="hidden" id="node-input-connectionTimeoutType"><div class="hint max-w-[350px]">Must be a number in ms</div></div></div></div><div class="hidden" id="tab-response"><div class="dxp-template-form-row"><label for="node-input-throwErrorOnError"><i class="fa fa-exclamation-circle"></i><span data-i18n="happy-request.Throw Error">Throw Error</span></label><div class="content"><div class="checkbox"><input type="checkbox" id="node-input-throwErrorOnError" checked="checked"><span class="italic">Throw error if HTTP response status code other than 2xx</span></div></div></div><div class="dxp-template-form-row"><label for="node-input-responseFormat"><i class="fa fa-share-square-o"></i><span data-i18n="happy-request.Format">Format</span></label><div class="content"><select id="node-input-responseFormat"></select><div class="hint max-w-[350px]">Response format</div></div></div><div class="flex items-center gap-4 mb-2"><span class="text-md font-semibold">Node outputs</span><div class="flex-1 border-t border-gray-300"></div></div><div class="dxp-template-form-row"><label for="node-input-splitBooleanOutputs"><i class="fa fa-map-signs"></i><span data-i18n="happy-request.Split out">Split out</span></label><div class="content"><div class="checkbox"><input type="checkbox" id="node-input-splitBooleanOutputs"><span class="italic">Split in two distinct outputs success/error</span></div></div></div></div><div class="hidden" id="tab-auth"><div class="dxp-template-form-row"><label for="node-input-requestAuthKind"><span data-i18n="happy-request.Type">Type</span></label><div class="content"><select id="node-input-requestAuthKind"></select></div></div><div class="auth-cred-container hidden"><div class="dxp-template-form-row"><label for="node-input-requestAuthUsername"><i class="fa fa-user"></i><span data-i18n="happy-request.Username">Username</span></label><div class="content"><input type="text" id="node-input-requestAuthUsername" data-i18n="[placeholder]happy-request.Username" placeholder=""><input type="hidden" id="node-input-requestAuthUsernameType"></div></div><div class="dxp-template-form-row"><label for="node-input-requestAuthPasswordSecret"><i class="fa fa-lock"></i><span data-i18n="happy-request.Password">Password</span></label><div class="content"><input type="password" id="node-input-requestAuthPasswordSecret" data-i18n="[placeholder]happy-request.Password" placeholder=""></div></div></div><div class="flex items-center gap-4 mb-2"><span class="text-md font-semibold">Bearer Token</span><div class="flex-1 border-t border-gray-300"></div></div><div class="dxp-template-form-row"><label for="node-input-requestAuthBearerToken"><span data-i18n="happy-request.Bearer Token">Bearer Token</span></label><div class="content"><input type="text" id="node-input-requestAuthBearerToken" data-i18n="[placeholder]happy-request.Bearer Token" placeholder="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."><input type="hidden" id="node-input-requestAuthBearerTokenType"></div></div></div><div class="hidden" id="tab-advanced"><div class="flex items-center gap-4 mb-2"><span class="text-md font-semibold">TLS</span><div class="flex-1 border-t border-gray-300"></div></div><div class="dxp-template-form-row"><label for="node-input-caRejectUnauthorized"><span data-i18n="happy-request.Reject">Reject</span></label><div class="content"><input type="text" id="node-input-caRejectUnauthorized" data-i18n="[placeholder]happy-request.Reject" placeholder="Reject Unauthorized"><input type="hidden" id="node-input-caRejectUnauthorizedType"><div class="hint max-w-[350px]">Verify server certificate</div></div></div><div class="flex items-center gap-4 mb-2"><span class="text-md font-semibold">Proxy</span><div class="flex-1 border-t border-gray-300"></div></div><div class="alert alert-info italic">Coming soon...</div></div></div></div></div></script> <style>.keload-node-red-contrib-happy-http-client{.mb-2{margin-bottom:.5rem}.mt-4{margin-top:1rem}.\!block{display:block!important}.block{display:block}.flex{display:flex}.\!hidden{display:none!important}.hidden{display:none}.max-w-\[350px\]{max-width:350px}.flex-1{flex:1 1 0%}.items-center{align-items:center}.gap-4{gap:1rem}.border-t{border-top-width:1px}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.\!font-bold{font-weight:700!important}.font-bold{font-weight:700}.font-semibold{font-weight:600}.italic{font-style:italic}.alert{border-radius:.5rem;font-size:.875rem;line-height:1.25rem;margin-bottom:1rem;padding:1rem}.alert-info{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}.dxp-template-form-row{align-items:flex-start;display:flex;margin-bottom:1rem;label{flex:none;margin-right:1rem;overflow:hidden;padding-bottom:.375rem;padding-top:.375rem;position:relative;text-overflow:ellipsis;white-space:nowrap;width:100px}label{i{margin-right:.25rem}}.content{flex:1 1 0%}.content{.red-ui-typedInput-container,input,select,textarea{width:100%!important}.red-ui-typedInput-container{border:1px solid var(--red-ui-form-input-border-color);.red-ui-typedInput-type-select{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.red-ui-typedInput-type-select{.red-ui-typedInput-type-label{display:inline!important}.red-ui-typedInput-icon{margin-left:5px!important}}.red-ui-typedInput-option-trigger{.red-ui-typedInput-option-label{background-color:transparent!important;margin-top:.5rem!important}}}div.checkbox{margin-top:.35rem!important}div.checkbox{input[type=checkbox]{width:auto!important}}&.force-w-full{>div{width:100%!important}}}.hint{font-size:.875rem;line-height:1.25rem;margin-top:.25rem;--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.hint{&.hint-info{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}&.hint-danger{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity,1))}&.hint-success{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity,1))}&.hint-warning{--tw-text-opacity:1;color:rgb(133 77 14/var(--tw-text-opacity,1))}}}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: } /* ! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com */*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-feature-settings:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]:where(:not([hidden=until-found])){display:none}}</style> <script type="application/javascript">(()=>{var Z=Object.defineProperty;var q=Object.getOwnPropertySymbols;var Q=Object.prototype.hasOwnProperty,W=Object.prototype.propertyIsEnumerable;var S=(e,t,r)=>t in e?Z(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,p=(e,t)=>{for(var r in t||(t={}))Q.call(t,r)&&S(e,r,t[r]);if(q)for(var r of q(t))W.call(t,r)&&S(e,r,t[r]);return e};function x(e){return Object.prototype.toString.call(e).slice(8,-1)}function y(e){if(x(e)!=="Object")return!1;let t=Object.getPrototypeOf(e);return!!t&&t.constructor===Object&&t===Object.prototype}function R(e){return x(e)==="Symbol"}function _(e,t,r,n){let s={}.propertyIsEnumerable.call(n,t)?"enumerable":"nonenumerable";s==="enumerable"&&(e[t]=r),s==="nonenumerable"&&Object.defineProperty(e,t,{value:r,enumerable:!1,writable:!0,configurable:!0})}function P(e,t,r){if(!y(t))return t;let n={};if(y(e)){let u=Object.getOwnPropertyNames(e),c=Object.getOwnPropertySymbols(e);n=[...u,...c].reduce((a,l)=>{if(l==="__proto__")return a;let d=e[l];return(!R(l)&&!Object.getOwnPropertyNames(t).includes(l)||R(l)&&!Object.getOwnPropertySymbols(t).includes(l))&&_(a,l,d,e),a},{})}let s=Object.getOwnPropertyNames(t),o=Object.getOwnPropertySymbols(t);return[...s,...o].reduce((u,c)=>{if(c==="__proto__")return u;let a=t[c],l=y(e)?e[c]:void 0;return l!==void 0&&y(a)&&(a=P(l,a)),_(u,c,a,t),u},n)}function Y(e,...t){return t.reduce((r,n)=>P(r,n),e)}var G={};function b(e){return Y(G,e)}var J=e=>{if(!e||e.length===0)return"";let t=e.toLowerCase();return t.substring(0,1).toUpperCase()+t.substring(1,t.length)},O=(e,t)=>{var r;let n=(r=e==null?void 0:e.replace(/([A-Z])+/g,J).split(/(?=[A-Z])|[\.\-\s_]/).map(o=>o.toLowerCase()))!=null?r:[];if(n.length===0)return"";if(n.length===1)return n[0];let s=n.reduce((o,u)=>`${o}_${u.toLowerCase()}`);return(t==null?void 0:t.splitOnNumber)===!1?s:s.replace(/([A-Za-z]{1}[0-9]{1})/,o=>`${o[0]}_${o[1]}`)};function X(e){let t=e.startsWith("$"),r=e.startsWith("$$"),n=e.startsWith("#node-config-input")||e.startsWith("#node-input");return{isNodeIdShortcut:t,isNodeConfigIdShortcut:r,isFullSelector:n,value:t||r||n}}function f(e){let t=X(e);return t.isNodeConfigIdShortcut?`#node-config-input-${e.replace("$$","")}`:t.isNodeIdShortcut?`#node-input-${e.replace("$","")}`:e}function m(e,t,r){let n=f(e),s=t;r!=null&&r.emptyValue&&(s=[{value:"",text:r.emptyValue},...t]),$(n).empty().append(s.map(o=>$("<option>",{value:o.value,text:o.text,selected:o.value===(r==null?void 0:r.selected)})))}function j(e,t,r={additionalEvents:[]}){let n=(Array.isArray(e)?e:[e]).map(f).join(", "),s=["input",...r.additionalEvents];$(n).on(s.join(" "),()=>{let o=$(n).map(function(){return $(this).val()}).get();t(o)})}function T(e){let t=f(e);return $(t)}function F(e){let t=f(e);return document.querySelector(t).checked}function g(e){let t=`#tabs-content-${e.targetId}`,r=RED.tabs.create({id:e.targetId,onchange:n=>{$(t).children().addClass("hidden"),$(`#${n.id}`).removeClass("hidden")}});(e.tabsLabel||[]).forEach(n=>{r.addTab({id:`tab-${O(n)}`,label:n})}),r.activateTab(`tab-${O(e.initialTab)}`)}var H=e=>!!e&&e.constructor===Symbol,ee=Array.isArray;var L=e=>!!(e&&e.constructor&&e.call&&e.apply);var E=e=>{try{return Number(e)===e}catch(t){return!1}},U=e=>Object.prototype.toString.call(e)==="[object Date]";var w=e=>{if(e===!0||e===!1||e==null)return!0;if(E(e))return e===0;if(U(e))return isNaN(e.getTime());if(L(e)||H(e))return!1;let t=e.length;if(E(t))return t===0;let r=e.size;return E(r)?r===0:Object.keys(e).length===0};var k=e=>{if(!e||e.length===0)return"";let t=e.toLowerCase();return t.substring(0,1).toUpperCase()+t.substring(1,t.length)};var N=e=>e?e.split(/(?=[A-Z])|[\.\-\s_]/).map(t=>t.trim()).filter(t=>!!t).map(t=>k(t.toLowerCase())).join(" "):"";var I={INHERIT_CLIENT_TERM:"from_client"};var v={CONNECTION_TIMEOUT:5e3,CONNECTION_KEEP_ALIVE:4e3,CA_REJECT_UNAUTHORIZED:!0};function A(e={}){let{forConfig:t=!1,nameRequired:r=!1}=e,n=(s="")=>({value:t?s:I.INHERIT_CLIENT_TERM});return{name:{value:"",required:r},defaultArgsHeaders:{value:"",required:!1},defaultArgsHeadersType:{value:"",required:!1},defaultArgsQueryParams:{value:"",required:!1},defaultArgsQueryParamsType:{value:"",required:!1},connectionKeepAlive:{value:v.CONNECTION_KEEP_ALIVE,type:"num"},connectionKeepAliveType:p({},n("num")),connectionTimeout:{value:v.CONNECTION_TIMEOUT,type:"num"},connectionTimeoutType:p({},n("num")),caRejectUnauthorized:{value:v.CONNECTION_TIMEOUT,type:"bool"},caRejectUnauthorizedType:p({},n("bool")),requestAuthBearerToken:{value:"",type:"str"},requestAuthBearerTokenType:p({},n("str")),requestAuthKind:{value:"",type:"str"},requestAuthUsername:{value:"",type:"str"},requestAuthUsernameType:p({},n("str"))}}var te=["jsonata","msg","flow","global","env"];function i(e){let{selector:t,withInherit:r=!0,withInheritLabel:n,defaultValue:s,valueType:o,withExtraTypes:u=!0,additionalTypesReadonly:c=[],opt:a={}}=e,{typedFieldSuffix:l="Type"}=a,d=[];if(w(c)||d.push(...c.map(h=>({value:h,label:h,hasValue:!1}))),r){let h=`Inherit from client ${n?` or ${n}`:""}`;d.push({value:I.INHERIT_CLIENT_TERM,label:h,hasValue:!1})}d.push(o),u&&d.push(...te);let B=T(t).typedInput({types:d.filter(Boolean),typeField:f(`${t}${l}`)});s!==void 0&&B.typedInput("value",s)}function C(e,t,r=!1){let n=r?"$$":"$",s=["none","basic","digest"];r||s.unshift("from_client_or_none"),m(`${n}${e}`,s.map(o=>({text:N(o),value:o})),{selected:t}),i({valueType:"str",selector:`${n}requestAuthUsername`,withInherit:!r}),i({valueType:"str",selector:`${n}requestAuthPassword`,withInherit:!r}),j([`${n}${e}`],o=>{let[u,c]=o,a=["basic","digest"];a.includes(u)||a.includes(c)?T(".auth-cred-container").removeClass("hidden"):T(".auth-cred-container").addClass("hidden")},{additionalEvents:["change","keyup"]})}var re=b({category:"config",color:"#a6bbcf",defaults:p({baseUrl:{value:""}},A({nameRequired:!0,forConfig:!0})),credentials:{requestAuthPasswordSecret:{type:"text"}},inputs:1,outputs:1,icon:"font-awesome/fa-tower-broadcast",label:function(){return this.name||"HappyConfig"},oneditprepare:function(){["defaultArgsHeaders","defaultArgsQueryParams"].forEach(e=>{i({valueType:"json",selector:`$$${e}`,withInherit:!1})}),i({valueType:"num",selector:"$$connectionKeepAlive",withInherit:!1}),i({valueType:"str",selector:"$$requestAuthBearerToken",withInherit:!1}),i({valueType:"num",selector:"$$connectionTimeout",withInherit:!1}),i({valueType:"bool",selector:"$$caRejectUnauthorized",withInherit:!1}),C("requestAuthKind",this.requestAuthKind,!0),g({targetId:"tabs",initialTab:"Endpoint",tabsLabel:["Endpoint","Auth","Advanced"]})}}),D=re;var V=["GET","POST","PUT","DELETE","CONNECT","OPTIONS","TRACE","PATCH"],K=["json","text","html","buffer","stream"],z=[{label:"json",value:"application/json"},{label:"xml",value:"text/xml"},{label:"text",value:" text/plain"},{label:"sparql",value:"application/sparql-query"}];var ne=b({category:"network",color:"#0593A2",defaults:p({clientInstance:{value:"",type:"happy-config",required:!1},endpoint:{value:""},endpointType:{value:"",required:!1},method:{value:"GET"},methodType:{value:"",required:!1},splitBooleanOutputs:{value:!1},throwErrorOnError:{value:!0},outputs:{value:1},body:{value:"payload",required:!1},bodyContentType:{value:"json",required:!1},bodyType:{value:"msg",required:!1},responseFormat:{value:"json"}},A({forConfig:!1})),credentials:{requestAuthPasswordSecret:{type:"text"}},inputs:1,outputs:1,paletteLabel:"Happy Request",icon:"font-awesome/fa-globe",outputLabels:function(e){return this.outputs>1?e===0?"Success":"Error":null},oneditsave:function(){this.outputs=F("$splitBooleanOutputs")?2:1},label:function(){return this.name||"HappyRequest"},oneditprepare:function(){g({targetId:"tabs-request-node",initialTab:"Request",tabsLabel:["Request","Response","Auth","Advanced"]}),i({valueType:"str",selector:"$endpoint",withInherit:!1}),["defaultArgsHeaders","defaultArgsQueryParams","body"].forEach(e=>{i({valueType:"json",selector:`$${e}`,withInherit:!1})}),i({valueType:"str",selector:"$method",withInherit:!1,additionalTypesReadonly:V}),C("requestAuthKind",this.requestAuthKind),i({valueType:"bool",selector:"$caRejectUnauthorized",withInheritLabel:"true",withInherit:!0}),i({valueType:"str",selector:"$requestAuthBearerToken",withInheritLabel:"none",withInherit:!0}),i({valueType:"num",selector:"$connectionKeepAlive",withInheritLabel:"4000ms",withInherit:!0,defaultValue:this.connectionKeepAlive}),i({valueType:"num",selector:"$connectionTimeout",withInheritLabel:"5000ms",withInherit:!0,defaultValue:this.connectionTimeout}),m("$responseFormat",K.map(e=>({value:e,text:e})),{selected:this.responseFormat}),m("$bodyContentType",z.map(e=>({value:e.value,text:e.label})),{selected:this.bodyContentType})}}),M=ne;window.RED.nodes.registerType("happy-config",D);window.RED.nodes.registerType("happy-request",M);})();</script> <script type="text/markdown" data-help-name="happy-request"> A highly flexible and customizable Node-RED node designed to simplify your HTTP requests. Create and manage clients, parameterize everything, and handle errors effortlessly. 🛠️ </script>