@karhoo/demand-deeplink
TypeScript icon, indicating that this package has built-in type declarations

20.1.2 • Public • Published
Karhoo logo

Karhoo Demand Deeplink

Karhoo Deeplink is a method of passing the user’s required information from the Demand Partner’s side to a Karhoo web booking application.

This library is intended to be the standard way of working with a deeplink.

Read The Docs


License

Installation

npm i @karhoo/demand-deeplink

Warnings

This library uses URLSearchParams. For old browsers, e.g. IE11 you must bring your own polyfill. You can use either js-core@3 or url-search-params-polyfill(version 8 and above)

This library uses Promise. For old browsers, e.g. IE11 you must bring your own polyfill. You can use js-core@3 to polyfill Promise

Usage

import { parse, validate, generate, Deeplink } from '@karhoo/demand-deeplink'

Parse deeplink:

const deeplinkData = parse(window.location.search)

Validate deeplink:

const { ok, errors } = validate(deeplinkData)

Generate deeplink:

const queryString = generate(deeplinkData)

Resolve deeplink:

To use Deeplink class api parameter (see Api type here) should be passed as a second argument of Deeplink constructor. For this purposes @karhoo/demand-api can be used.

import { getApi } from '@karhoo/demand-api'

const api = getApi()

const subscriber = data => console.log(data)

const deeplink = new Deeplink(window.location.search, api)

deeplink.resolve(subscriber)

Example

A lot of deeplink examples can be find here

Let's imagine, you want to deeplink from a hotel booking website to a Karhoo cab booking website.

Your customer booked a hotel room and reached their booking confirmation page. From here you can offer a complementary service to book a cab to a hotel's location.

At this stage, you know:

  1. Hotel address
  2. Time when a cab required (based on hotel check-in hours)
  3. Number of passengers
  4. Passenger first and last name (if you're willing to pass it)

All these parameters can be embedded to a Deeplink and passed to a Karhoo booking app.

Step 1. Compose deeplink data

const deeplinkData = {
  legs: [
    {
      dropoff: 'Hotel Ermitage, London, UK',
      pickupTime: '2020-03-12T12:00:00+01:00',
    },
  ],
  passengerInfo: {
    passengers: 3,
    firstName: 'Jon',
  },
  bookingType: 'PRE-BOOK',
  meta: {},
}

Step 2. Validate deeplink data

import { validate } from '@karhoo/demand-deeplink'

const { ok, errors } = validate(deeplinkData)

if (!ok) {
  console.log('Deeplink data is invalid', errors)
}

Step 3. Generate a deeplink

import { validate, generate } from '@karhoo/demand-deeplink'

const { ok, errors } = validate(deeplinkData)

if (!ok) {
  console.log('Deeplink data is invalid', errors)
  return
}

const deeplink = generate(deeplinkData)
console.log(deeplink) // ?leg-1-dropoff=Hotel+Ermitage%2C+London%2C+UK&leg-1-pickup-time=2020-03-12T12%3A00%3A00%2B01%3A00&passengers=3&first-name=Jon&booking-type=PRE-BOOK

When you get a deeplink you can navigate your user from your website by adding the link to href attribute.

For example, <a target="_blank" href="https://your-branded-app.kathoo.com/landing/?leg-1-dropoff=Hotel+Ermitage%2C+London%2C+UK&leg-1-pickup-time=2020-03-12T12%3A00%3A00%2B01%3A00&passengers=3&first-name=Jon&booking-type=PRE-BOOK"> Book a cab to a hotel </a>

Issues

Looking to contribute?

🐛 Bugs

Please file an issue for bugs, missing documentation, or unexpected behavior with a label DEEPLINK

💡 Feature Requests

Please file an issue to suggest new features with a label DEEPLINK. Vote on feature requests by adding a 👍. This helps maintainers prioritize what to work on.

❓ Questions

For questions related to using the library, please re-visit a documentation first. If there are no answer, please create an issue with a label help needed and DEEPLINK.

Contributing

License

BSD-2-Clause

Readme

Keywords

none

Package Sidebar

Install

npm i @karhoo/demand-deeplink

Weekly Downloads

21

Version

20.1.2

License

BSD-2-Clause

Unpacked Size

454 kB

Total Files

27

Last publish

Collaborators

  • karhoo_js
  • karhoo_ops_tooling
  • karhoo_connect
  • karhoo_demand_web
  • karhoo_partner_central