351 lines
12 KiB
TypeScript
351 lines
12 KiB
TypeScript
import { Service } from '../service';
|
|
import { AppwriteException, Client } from '../client';
|
|
import type { Models } from '../models';
|
|
import type { UploadProgress, Payload } from '../client';
|
|
|
|
export class Avatars extends Service {
|
|
|
|
constructor(client: Client)
|
|
{
|
|
super(client);
|
|
}
|
|
|
|
/**
|
|
* Get Browser Icon
|
|
*
|
|
* You can use this endpoint to show different browser icons to your users.
|
|
* The code argument receives the browser code as it appears in your user [GET
|
|
* /account/sessions](/docs/client/account#accountGetSessions) endpoint. Use
|
|
* width, height and quality arguments to change the output settings.
|
|
*
|
|
* When one dimension is specified and the other is 0, the image is scaled
|
|
* with preserved aspect ratio. If both dimensions are 0, the API provides an
|
|
* image at source quality. If dimensions are not specified, the default size
|
|
* of image returned is 100x100px.
|
|
*
|
|
* @param {string} code
|
|
* @param {number} width
|
|
* @param {number} height
|
|
* @param {number} quality
|
|
* @throws {AppwriteException}
|
|
* @returns {URL}
|
|
*/
|
|
getBrowser(code: string, width?: number, height?: number, quality?: number): URL {
|
|
if (typeof code === 'undefined') {
|
|
throw new AppwriteException('Missing required parameter: "code"');
|
|
}
|
|
|
|
let path = '/avatars/browsers/{code}'.replace('{code}', code);
|
|
let payload: Payload = {};
|
|
|
|
if (typeof width !== 'undefined') {
|
|
payload['width'] = width;
|
|
}
|
|
|
|
if (typeof height !== 'undefined') {
|
|
payload['height'] = height;
|
|
}
|
|
|
|
if (typeof quality !== 'undefined') {
|
|
payload['quality'] = quality;
|
|
}
|
|
|
|
const uri = new URL(this.client.config.endpoint + path);
|
|
payload['project'] = this.client.config.project;
|
|
|
|
|
|
for (const [key, value] of Object.entries(Service.flatten(payload))) {
|
|
uri.searchParams.append(key, value);
|
|
}
|
|
return uri;
|
|
}
|
|
|
|
/**
|
|
* Get Credit Card Icon
|
|
*
|
|
* The credit card endpoint will return you the icon of the credit card
|
|
* provider you need. Use width, height and quality arguments to change the
|
|
* output settings.
|
|
*
|
|
* When one dimension is specified and the other is 0, the image is scaled
|
|
* with preserved aspect ratio. If both dimensions are 0, the API provides an
|
|
* image at source quality. If dimensions are not specified, the default size
|
|
* of image returned is 100x100px.
|
|
*
|
|
*
|
|
* @param {string} code
|
|
* @param {number} width
|
|
* @param {number} height
|
|
* @param {number} quality
|
|
* @throws {AppwriteException}
|
|
* @returns {URL}
|
|
*/
|
|
getCreditCard(code: string, width?: number, height?: number, quality?: number): URL {
|
|
if (typeof code === 'undefined') {
|
|
throw new AppwriteException('Missing required parameter: "code"');
|
|
}
|
|
|
|
let path = '/avatars/credit-cards/{code}'.replace('{code}', code);
|
|
let payload: Payload = {};
|
|
|
|
if (typeof width !== 'undefined') {
|
|
payload['width'] = width;
|
|
}
|
|
|
|
if (typeof height !== 'undefined') {
|
|
payload['height'] = height;
|
|
}
|
|
|
|
if (typeof quality !== 'undefined') {
|
|
payload['quality'] = quality;
|
|
}
|
|
|
|
const uri = new URL(this.client.config.endpoint + path);
|
|
payload['project'] = this.client.config.project;
|
|
|
|
|
|
for (const [key, value] of Object.entries(Service.flatten(payload))) {
|
|
uri.searchParams.append(key, value);
|
|
}
|
|
return uri;
|
|
}
|
|
|
|
/**
|
|
* Get Favicon
|
|
*
|
|
* Use this endpoint to fetch the favorite icon (AKA favicon) of any remote
|
|
* website URL.
|
|
*
|
|
*
|
|
* @param {string} url
|
|
* @throws {AppwriteException}
|
|
* @returns {URL}
|
|
*/
|
|
getFavicon(url: string): URL {
|
|
if (typeof url === 'undefined') {
|
|
throw new AppwriteException('Missing required parameter: "url"');
|
|
}
|
|
|
|
let path = '/avatars/favicon';
|
|
let payload: Payload = {};
|
|
|
|
if (typeof url !== 'undefined') {
|
|
payload['url'] = url;
|
|
}
|
|
|
|
const uri = new URL(this.client.config.endpoint + path);
|
|
payload['project'] = this.client.config.project;
|
|
|
|
|
|
for (const [key, value] of Object.entries(Service.flatten(payload))) {
|
|
uri.searchParams.append(key, value);
|
|
}
|
|
return uri;
|
|
}
|
|
|
|
/**
|
|
* Get Country Flag
|
|
*
|
|
* You can use this endpoint to show different country flags icons to your
|
|
* users. The code argument receives the 2 letter country code. Use width,
|
|
* height and quality arguments to change the output settings. Country codes
|
|
* follow the [ISO 3166-1](http://en.wikipedia.org/wiki/ISO_3166-1) standard.
|
|
*
|
|
* When one dimension is specified and the other is 0, the image is scaled
|
|
* with preserved aspect ratio. If both dimensions are 0, the API provides an
|
|
* image at source quality. If dimensions are not specified, the default size
|
|
* of image returned is 100x100px.
|
|
*
|
|
*
|
|
* @param {string} code
|
|
* @param {number} width
|
|
* @param {number} height
|
|
* @param {number} quality
|
|
* @throws {AppwriteException}
|
|
* @returns {URL}
|
|
*/
|
|
getFlag(code: string, width?: number, height?: number, quality?: number): URL {
|
|
if (typeof code === 'undefined') {
|
|
throw new AppwriteException('Missing required parameter: "code"');
|
|
}
|
|
|
|
let path = '/avatars/flags/{code}'.replace('{code}', code);
|
|
let payload: Payload = {};
|
|
|
|
if (typeof width !== 'undefined') {
|
|
payload['width'] = width;
|
|
}
|
|
|
|
if (typeof height !== 'undefined') {
|
|
payload['height'] = height;
|
|
}
|
|
|
|
if (typeof quality !== 'undefined') {
|
|
payload['quality'] = quality;
|
|
}
|
|
|
|
const uri = new URL(this.client.config.endpoint + path);
|
|
payload['project'] = this.client.config.project;
|
|
|
|
|
|
for (const [key, value] of Object.entries(Service.flatten(payload))) {
|
|
uri.searchParams.append(key, value);
|
|
}
|
|
return uri;
|
|
}
|
|
|
|
/**
|
|
* Get Image from URL
|
|
*
|
|
* Use this endpoint to fetch a remote image URL and crop it to any image size
|
|
* you want. This endpoint is very useful if you need to crop and display
|
|
* remote images in your app or in case you want to make sure a 3rd party
|
|
* image is properly served using a TLS protocol.
|
|
*
|
|
* When one dimension is specified and the other is 0, the image is scaled
|
|
* with preserved aspect ratio. If both dimensions are 0, the API provides an
|
|
* image at source quality. If dimensions are not specified, the default size
|
|
* of image returned is 400x400px.
|
|
*
|
|
*
|
|
* @param {string} url
|
|
* @param {number} width
|
|
* @param {number} height
|
|
* @throws {AppwriteException}
|
|
* @returns {URL}
|
|
*/
|
|
getImage(url: string, width?: number, height?: number): URL {
|
|
if (typeof url === 'undefined') {
|
|
throw new AppwriteException('Missing required parameter: "url"');
|
|
}
|
|
|
|
let path = '/avatars/image';
|
|
let payload: Payload = {};
|
|
|
|
if (typeof url !== 'undefined') {
|
|
payload['url'] = url;
|
|
}
|
|
|
|
if (typeof width !== 'undefined') {
|
|
payload['width'] = width;
|
|
}
|
|
|
|
if (typeof height !== 'undefined') {
|
|
payload['height'] = height;
|
|
}
|
|
|
|
const uri = new URL(this.client.config.endpoint + path);
|
|
payload['project'] = this.client.config.project;
|
|
|
|
|
|
for (const [key, value] of Object.entries(Service.flatten(payload))) {
|
|
uri.searchParams.append(key, value);
|
|
}
|
|
return uri;
|
|
}
|
|
|
|
/**
|
|
* Get User Initials
|
|
*
|
|
* Use this endpoint to show your user initials avatar icon on your website or
|
|
* app. By default, this route will try to print your logged-in user name or
|
|
* email initials. You can also overwrite the user name if you pass the 'name'
|
|
* parameter. If no name is given and no user is logged, an empty avatar will
|
|
* be returned.
|
|
*
|
|
* You can use the color and background params to change the avatar colors. By
|
|
* default, a random theme will be selected. The random theme will persist for
|
|
* the user's initials when reloading the same theme will always return for
|
|
* the same initials.
|
|
*
|
|
* When one dimension is specified and the other is 0, the image is scaled
|
|
* with preserved aspect ratio. If both dimensions are 0, the API provides an
|
|
* image at source quality. If dimensions are not specified, the default size
|
|
* of image returned is 100x100px.
|
|
*
|
|
*
|
|
* @param {string} name
|
|
* @param {number} width
|
|
* @param {number} height
|
|
* @param {string} background
|
|
* @throws {AppwriteException}
|
|
* @returns {URL}
|
|
*/
|
|
getInitials(name?: string, width?: number, height?: number, background?: string): URL {
|
|
let path = '/avatars/initials';
|
|
let payload: Payload = {};
|
|
|
|
if (typeof name !== 'undefined') {
|
|
payload['name'] = name;
|
|
}
|
|
|
|
if (typeof width !== 'undefined') {
|
|
payload['width'] = width;
|
|
}
|
|
|
|
if (typeof height !== 'undefined') {
|
|
payload['height'] = height;
|
|
}
|
|
|
|
if (typeof background !== 'undefined') {
|
|
payload['background'] = background;
|
|
}
|
|
|
|
const uri = new URL(this.client.config.endpoint + path);
|
|
payload['project'] = this.client.config.project;
|
|
|
|
|
|
for (const [key, value] of Object.entries(Service.flatten(payload))) {
|
|
uri.searchParams.append(key, value);
|
|
}
|
|
return uri;
|
|
}
|
|
|
|
/**
|
|
* Get QR Code
|
|
*
|
|
* Converts a given plain text to a QR code image. You can use the query
|
|
* parameters to change the size and style of the resulting image.
|
|
*
|
|
*
|
|
* @param {string} text
|
|
* @param {number} size
|
|
* @param {number} margin
|
|
* @param {boolean} download
|
|
* @throws {AppwriteException}
|
|
* @returns {URL}
|
|
*/
|
|
getQR(text: string, size?: number, margin?: number, download?: boolean): URL {
|
|
if (typeof text === 'undefined') {
|
|
throw new AppwriteException('Missing required parameter: "text"');
|
|
}
|
|
|
|
let path = '/avatars/qr';
|
|
let payload: Payload = {};
|
|
|
|
if (typeof text !== 'undefined') {
|
|
payload['text'] = text;
|
|
}
|
|
|
|
if (typeof size !== 'undefined') {
|
|
payload['size'] = size;
|
|
}
|
|
|
|
if (typeof margin !== 'undefined') {
|
|
payload['margin'] = margin;
|
|
}
|
|
|
|
if (typeof download !== 'undefined') {
|
|
payload['download'] = download;
|
|
}
|
|
|
|
const uri = new URL(this.client.config.endpoint + path);
|
|
payload['project'] = this.client.config.project;
|
|
|
|
|
|
for (const [key, value] of Object.entries(Service.flatten(payload))) {
|
|
uri.searchParams.append(key, value);
|
|
}
|
|
return uri;
|
|
}
|
|
};
|