@covisint/cui-api-interceptor

API validator/logger for cui products.

Usage no npm install needed!

<script type="module">
  import covisintCuiApiInterceptor from 'https://cdn.skypack.dev/@covisint/cui-api-interceptor';
</script>

README

cuiApiInterceptor

Lightweight logger / validator / adapter for $.ajax calls.

How it works

GET requests

Every time we get a response to a GET request we look at the accepts header and validate that against an existing JSON schema. Based on the response status and validity we issue a callback with different options to make it easier for you to log those requests in any fashion you'd like.

In the future there will be an option to set to which version of the schemas you want to validate and adapt to (have responses converted to).

Basic usage


const interceptorOptions = {
    apiUri: [ appConfig.serviceUrl ],
    stopIfInvalidPayload: false
};

window.cuiApiInterceptor.startGetInterceptor(interceptorOptions);

window.cuiApiInterceptor.startPrePutInterceptor(interceptorOptions);

window.cuiApiInterceptor.startPrePostInterceptor(interceptorOptions);

window.cuiApiInterceptor.startPostPutInterceptor(interceptorOptions);

window.cuiApiInterceptor.startPostPostInterceptor(interceptorOptions);

Advanced usage

Get / Post Put / Post Post interceptors

You can optionally set a method on the options object you pass the interceptor called logCallback. The logCallback function gets passed a single object, with the following properties:

  • e <object> : The jquery event matching the request. You can use this to access information like timestamp.

  • xhr <object> : Information on the response

  • result <object> : Information on the validity of the request

And, in the object result, you will have the following properties:

  • settings <object> : Information on the request and sources. Use this to see which domain the request was made from.

  • endpoint <string> : The endpoint which the call was made to.

  • success <true || undefined> : If the call got back a 200 and the response was validated.

  • error <true || undefined> : Wether or not there was an error (undefined if no error).

  • errorType <only defined if error is true - string> : The type of error the response gave us. Could be 'http error', 'response inconsistency' or 'missing schema'.

  • errors <only defined if error is true - array> : An array of errors (objects or strings) associated with the error. If the errorType is response inconsistency then the errors will be an array of objects returned by the AVJ library. Use this to access the data properties on the response that do not match against the schema.

  • status <only defined if errorType is http error - string> : The error status received.

  • response <only defined if no error or errorType different than http error - any> : The response that was received.

  • missing schema <only defined if errorType is missing schema - string> : The accepts header on that call.

Pre Put / Post Interceptor

For the prePut and prePost interceptors you can pass an extra property to the options object, stopIfInvalidPayload, that will abort the ajax request if the payload sent is not valid against the corresponding json schema.

The properties passed to result object in logCallback for these interceptors are similar to those of the post request interceptors, with the exception of the error types and response.

response is no longer defined, instead, payload will contain the data that we are attempting to PUT/POST errorType is now one of the following: 'missing schema', 'invalid payload'