mirror of
https://github.com/gosticks/DefinitelyTyped.git
synced 2026-07-04 17:20:09 +00:00
Add content-type
This commit is contained in:
47
content-type/content-type-test.ts
Normal file
47
content-type/content-type-test.ts
Normal file
@@ -0,0 +1,47 @@
|
||||
/// <reference path="content-type.d.ts" />
|
||||
|
||||
import MediaType = require('content-type');
|
||||
|
||||
// https://github.com/deoxxa/content-type/blob/master/README.md
|
||||
function new_test(): void {
|
||||
var p = new MediaType('text/html;level=1;q=0.5');
|
||||
p.q === 0.5;
|
||||
p.params.level === "1";
|
||||
|
||||
var q = new MediaType('application/json', { profile: 'http://example.com/schema.json' });
|
||||
q.type === "application/json";
|
||||
q.params.profile === "http://example.com/schema.json";
|
||||
|
||||
q.q = 1;
|
||||
q.toString() === 'application/json;q=1;profile="http://example.com/schema.json"';
|
||||
}
|
||||
|
||||
function mediaCmp_test(): void {
|
||||
MediaType.mediaCmp(MediaType.parseMedia('text/html'), MediaType.parseMedia('text/html')) === 0;
|
||||
MediaType.mediaCmp(MediaType.parseMedia('*/*'), MediaType.parseMedia('text/html')) === 1;
|
||||
MediaType.mediaCmp(MediaType.parseMedia('text/html;level=1'), MediaType.parseMedia('text/html')) === -1;
|
||||
MediaType.mediaCmp(MediaType.parseMedia('application/json;profile="v1.json"'), MediaType.parseMedia('application/json;profile="v2.json"')) === null;
|
||||
}
|
||||
|
||||
// https://github.com/deoxxa/content-type/blob/master/example.js
|
||||
function example(): void {
|
||||
var representations = [
|
||||
'application/json',
|
||||
'text/html',
|
||||
'application/json;profile="schema.json"',
|
||||
'application/json;profile="different.json"',
|
||||
];
|
||||
|
||||
var accept = [
|
||||
'text/html;q=0.50',
|
||||
'*/*;q=0.01',
|
||||
'application/json;profile=different.json',
|
||||
'application/json;profile="a,b;c.json?d=1;f=2";q=0.2',
|
||||
];
|
||||
|
||||
console.log('Formats:\n\t' + representations.map(MediaType.parseMedia).join('\n\t'));
|
||||
|
||||
console.log('Accept:\n\t' + accept.map(MediaType.parseMedia).join('\n\t'));
|
||||
|
||||
console.log('Selected:', (MediaType.select(representations.map(MediaType.parseMedia), accept.map(MediaType.parseMedia)) || 'None').toString());
|
||||
}
|
||||
32
content-type/content-type.d.ts
vendored
Normal file
32
content-type/content-type.d.ts
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
// Type definitions for content-type v0.0.1
|
||||
// Project: https://github.com/deoxxa/content-type
|
||||
// Definitions by: Pine Mizune <https://github.com/pine613>
|
||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
||||
|
||||
declare module ContentType {
|
||||
interface MediaType {
|
||||
type: string;
|
||||
q?: number;
|
||||
params: any;
|
||||
toString(): string;
|
||||
}
|
||||
|
||||
interface SelectOptions {
|
||||
sortAvailable?: boolean;
|
||||
sortAccepted?: boolean;
|
||||
}
|
||||
|
||||
interface MediaTypeStatic {
|
||||
new (s: string, p?: any): MediaType;
|
||||
parseMedia(type: string): MediaType;
|
||||
splitQuotedString(str: string, delimiter?: string, quote?: string): string[];
|
||||
splitContentTypes(str: string): string[];
|
||||
select(availableTypes: MediaType[], acceptedTypes: MediaType[], options?: SelectOptions): string;
|
||||
mediaCmp(a: MediaType, b: MediaType): number;
|
||||
}
|
||||
}
|
||||
|
||||
declare module "content-type" {
|
||||
var x: ContentType.MediaTypeStatic;
|
||||
export = x;
|
||||
}
|
||||
Reference in New Issue
Block a user