Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/jmnarloch/angular-vendor-media-type

A simple AngularJS plugin for seting up the vendor specific media type for every $http request
https://github.com/jmnarloch/angular-vendor-media-type

Last synced: 4 days ago
JSON representation

A simple AngularJS plugin for seting up the vendor specific media type for every $http request

Awesome Lists containing this project

README

        

# Angular Vendor Media Type [![Build Status](https://travis-ci.org/jmnarloch/angular-vendor-media-type.svg?branch=master)](https://travis-ci.org/jmnarloch/angular-vendor-media-type) [![Coverage Status](https://coveralls.io/repos/jmnarloch/angular-vendor-media-type/badge.svg?branch=master&service=github)](https://coveralls.io/github/jmnarloch/angular-vendor-media-type?branch=master) [![npm version](https://badge.fury.io/js/angular-vendor-media-type.svg)](http://badge.fury.io/js/angular-vendor-media-type) [![Dependency Status](https://david-dm.org/jmnarloch/angular-vendor-media-type.svg)](https://david-dm.org/jmnarloch/angular-vendor-media-type) [![devDependency Status](https://david-dm.org/jmnarloch/angular-vendor-media-type/dev-status.svg)](https://david-dm.org/jmnarloch/angular-vendor-media-type#info=devDependencies)

> Angular $http interceptor that sets you vendor specific versioned media type

## Setup

Install the plugin through bower:

```
bower install angular-vendor-media-type --save
```

In your Angular module register plugin as module dependency

```
angular.module('app', ['ngVendorMediaType'])
```

## Configure

Optionally configure the `httpRequestInterceptorVendorMediaTypeProvider` by setting the matched request urls,
media types and the vendor information using fluent API:

```
angular.module('app', ['ngVendorMediaType'])
.config(function(httpRequestInterceptorVendorMediaTypeProvider) {
httpRequestInterceptorVendorMediaTypeProvider
.matchingRequests([/.*api.*/])
.matchingMediaTypes(['text/xml', 'application/xml', 'application/json'])
.withVendor({
name: 'vnd',
application: 'appname',
version: '1'
})
});
```

## How it works

The extension intercepts any outgoing $http request and *transforms* the `Accept` and `Content-Type` headers media types.
If your application makes fallowing request:

```
GET /devices
Accept: */*,application/json
```

The `Accept` header will be transformed into:

```
GET /devices
Accept: */*,application/vnd.appname.v1+json
```

Note: only the configured media types will be altered, you can use the
`httpRequestInterceptorVendorMediaTypeProvider.matchingMediaTypes` method for specifying the desired ones.

## Options

`httpRequestInterceptorVendorMediaTypeProvider` defines a set of methods for configuring its behaviour

### matchingRequests
Default value: `[\.*\]`

Defines the list of request url regexes

### matchingMediaTypes
Default value: `['text/xml', 'application/xml', 'application/json']`

Defines the list of media types to modify

### withVendor
Default value: `null`

Defines the vendor information

### withVersionParam
Default value: `false`

Allows to pass the version as additional media type parameter i.e.: `application/vnd.appname+json; version=1`

### withoutVersionParam
Default value: `false`

Disables passing the media type version parameter

## Migrate from 1.x to 2.x

For consistency all MIME Type references in object or module naming has been changes into Media Type.

## License

MIT