1.1.0 • Published 5 years ago
@marketto/hashagna v1.1.0
hashagna
The Final and definitive solution to handle 302+Location -> Hash pattern
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
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