# Privacy Legislation Client

## What it is

A module that reports which privacy-related legislation applies in the user's current
location.

Available for both server and client: see [example](../../examples/legislation-client/README.md)

## Usage

Typical usage would be to add the module to your app, call the imported method
and then update the UI in line with any applicable legal requirements:

```js
import { fetchLegislation, buildConsentPageUrl } from "@financial-times/privacy-legislation-client";

function onPageLoad() {
  /**
   * `legislation`: a Set of applicable laws: "ccpa", "gdpr", etc
   * `region`: Identifies countries or subdivisions - "GB", "US-CA"
   */ 
  const { legislation, region } = await fetchLegislation();

  // Contruct a standardised URL for the Consent Page, embedding legislation  & referrer
  const url = buildConsentPageUrl({ url: "...", legislation })

  if(legislation.has("ccpa")) {
    insertCCPALink(url)
  }

  if(legislation.has("gdpr")) {
    ...
  }
}
```

## How it works

This module is a lightweight wrapper over the Fetch API that hits
`https://privacy.ft.com/api/v1/compliance-region.json`, and exposes the comma-delimted response as a property called `legislation` in the form of a `Set`.

The abstraction allows us to change implementation details like the API's URL, version, etc. without impacting consumers

See the [legislation-api](../../vcl/legislation-api/README.md) for more details
