1.1.0 • Published 4 years ago

@marketto/hashagna v1.1.0

Weekly downloads
-
License
MIT
Repository
-
Last release
4 years ago

hashagna

The Final and definitive solution to handle 302+Location -> Hash pattern

NPM Version NPM Downloads Dependency status Dev dependency status Quality Gate Coverage Maintainability Reliability Build Status LICENSE Blog Buy me a coffee

Utility to handle (GET or POST) APIs which redirects (3xx) to an uri appending Hash params via iFrame

🔌 INSTALLATION

npm i -s @marketto/hashagna

🔧 USAGE

MJS / ES6 / Typescript

import { HashagnaHttpClient } from '@marketto/hashagna';

AMD

require(['/dist/hashagna.min.js'], ({ HashagnaHttpClient }) => {
    // your code
});

Script

<!-- Polyfills needed only to support IE11 -->
<script crossorigin="anonymous" src="https://polyfill.io/v3/polyfill.min.js?version=3.52.1&features=Object.entries%2CPromise%2CElement.prototype.remove"></script>
<script src="https://unpkg.com/@marketto/hashagna@latest/dist/hashagna.min.js"></script>

💻 DEMO

npm run manual-test

📖 DOCUMENTATION

JsDocs @ GitHub Pages

HashagnaHttpClient

Class with static methods

  • Both get and post methods accepts 2 mandatory params and an optional 3rd one:

    • url - relative or absolute path of the api
    • params - (Object) Key/Value of params to be sent
    • options (optional)
      • iFrame - DOM Element to use
      • iFrameId - id of the iFrame to use
      • autoClean - (only with iFrame or iFrameId) if true the iframe will be wiped up after receiving data
  • Both get and post methods are async and returns and object containing the following:

    • hash: string
    • hashParams: Object
    • host: string
    • hostname: string
    • href: string
    • origin: string
    • pathname: string
    • protocol: string
    • search: string
    • port: string
    • query: Object

GET

HashagnaHttpClient.get('/api/auto-redirect', { code: '2345', userId: 'user id' })
        .then(({ hashParams }) => {
            console.log(hashParams); // {key: value, ...}
        })
        .catch(err => {
            // Handle your error
        });

POST

HashagnaHttpClient.post('/another-api', { clientAuth: 'askjf' })
        .then(({ hashParams }) => { // {key: value, ...}
            console.log(hashParams.auth);
        })
        .catch(err => {
            // Handle your error
        });

🔃 Compatibility

  • Chromium 86.0.4217.0 (Chrome & Edge)
  • Firefox 80.0b8
  • Webkit 14 (Safari)
  • Internet Explorer 11.1016.18362.0

📜 LICENSE

MIT License

📝 AUTHOR

Marco Ricupero