import Hyperschema from 'hyperschema'
import { SCHEMA_DIR } from './constants'
export const schema = Hyperschema.from(SCHEMA_DIR)
const media = schema.namespace('media')
media.register({
name: 'dimensions',
fields: [
{
name: 'width',
type: 'uint',
required: true
},
{
name: 'height',
type: 'uint',
required: true
}
]
})
media.register({
name: 'metadata',
fields: [
{
name: 'mimetype',
type: 'string'
},
{
name: 'dimensions',
type: '@media/dimensions'
},
{
name: 'duration',
type: 'uint'
}
]
})
media.register({
name: 'file',
fields: [
{
name: 'metadata',
type: '@media/metadata'
},
{
name: 'base64',
type: 'string'
},
{
name: 'buffer',
type: 'buffer'
}
]
})
media.register({
name: 'crop',
fields: [
{
name: 'left',
type: 'uint'
},
{
name: 'top',
type: 'uint'
},
{
name: 'width',
type: 'uint'
},
{
name: 'height',
type: 'uint'
}
]
})
media.register({
name: 'create-chat-image-preview-request',
fields: [
{
name: 'path',
type: 'string'
}
]
})
media.register({
name: 'create-chat-image-preview-response',
fields: [
{
name: 'metadata',
type: '@media/metadata',
required: true
},
{
name: 'small',
type: '@media/file',
required: true
},
{
name: 'medium',
type: '@media/file',
required: true
},
{
name: 'large',
type: '@media/file',
required: true
}
]
})
media.register({
name: 'create-chat-video-preview-request',
fields: [
{
name: 'path',
type: 'string'
}
]
})
media.register({
name: 'create-chat-video-preview-response',
fields: [
{
name: 'metadata',
type: '@media/metadata',
required: true
},
{
name: 'small',
type: '@media/file',
required: true
},
{
name: 'medium',
type: '@media/file',
required: true
},
{
name: 'large',
type: '@media/file',
required: true
}
]
})
media.register({
name: 'create-chat-link-preview-request',
fields: [
{
name: 'path',
type: 'string'
},
{
name: 'buffer',
type: 'buffer'
}
]
})
media.register({
name: 'create-chat-link-preview-response',
fields: [
{
name: 'metadata',
type: '@media/metadata'
},
{
name: 'buffer',
type: 'buffer'
}
]
})
media.register({
name: 'create-profile-avatar-request',
fields: [
{
name: 'path',
type: 'string'
},
{
name: 'crop',
type: '@media/crop'
}
]
})
media.register({
name: 'create-profile-avatar-response',
fields: [
{
name: 'small',
type: '@media/file',
required: true
},
{
name: 'medium',
type: '@media/file',
required: true
}
]
})
media.register({
name: 'create-room-avatar-request',
fields: [
{
name: 'path',
type: 'string'
},
{
name: 'crop',
type: '@media/crop'
}
]
})
media.register({
name: 'create-room-avatar-response',
fields: [
{
name: 'small',
type: '@media/file',
required: true
},
{
name: 'medium',
type: '@media/file',
required: true
}
]
})
media.register({
name: 'decode-image-request',
fields: [
{
name: 'httpLink',
type: 'string'
}
]
})
media.register({
name: 'decode-image-response',
fields: [
{
name: 'metadata',
type: '@media/metadata'
},
{
name: 'data',
type: 'buffer'
}
]
})