ngx-avatar-2
Version:
A universal avatar component for Angular applications that fetches / generates avatar based on the information you have about the user.
47 lines • 4.91 kB
JavaScript
import { AsyncSource } from './async-source';
import { AvatarSource } from './avatar-source.enum';
/**
* Vkontakte source implementation.
* Fetch avatar source based on vkontakte identifier
* and image size
*/
const apiVersion = 5.154;
export class Vkontakte extends AsyncSource {
sourceType = AvatarSource.VKONTAKTE;
constructor(sourceId) {
super(sourceId);
}
getAvatar(size) {
const imgSize = this.getImageSize(size);
return `https://api.vk.com/method/users.get?user_id=${this.sourceId}&v=${apiVersion}&fields=${imgSize}`;
}
/**
* extract vkontakte avatar from json data
*/
processResponse(data) {
// avatar key property is the size used to generate avatar url
// size property is always the last key in the response object
const sizeProperty = Object.keys(data['response'][0]).pop();
if (!sizeProperty) {
return null;
}
// return avatar src
return data['response'][0][sizeProperty] || null;
}
/**
* Returns image size related to vkontakte API
*/
getImageSize(size) {
if (size <= 50) {
return 'photo_50';
}
if (size <= 100) {
return 'photo_100';
}
if (size <= 200) {
return 'photo_200';
}
return 'photo_max';
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmtvbnRha3RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWF2YXRhci0yL3NyYy9saWIvc291cmNlcy92a29udGFrdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVwRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDO0FBRXpCLE1BQU0sT0FBTyxTQUFVLFNBQVEsV0FBVztJQUMvQixVQUFVLEdBQWlCLFlBQVksQ0FBQyxTQUFTLENBQUM7SUFFM0QsWUFBWSxRQUFnQjtRQUMxQixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUVNLFNBQVMsQ0FBQyxJQUFZO1FBQzNCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEMsT0FBTywrQ0FDTCxJQUFJLENBQUMsUUFDUCxNQUFNLFVBQVUsV0FBVyxPQUFPLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxlQUFlLENBQUMsSUFJdEI7UUFDQyw4REFBOEQ7UUFDOUQsOERBQThEO1FBQzlELE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDNUQsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNqQixPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0Qsb0JBQW9CO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLElBQUksQ0FBQztJQUNuRCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxZQUFZLENBQUMsSUFBWTtRQUMvQixJQUFJLElBQUksSUFBSSxFQUFFLEVBQUU7WUFDZCxPQUFPLFVBQVUsQ0FBQztTQUNuQjtRQUVELElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRTtZQUNmLE9BQU8sV0FBVyxDQUFDO1NBQ3BCO1FBRUQsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFO1lBQ2YsT0FBTyxXQUFXLENBQUM7U0FDcEI7UUFFRCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3luY1NvdXJjZSB9IGZyb20gJy4vYXN5bmMtc291cmNlJztcbmltcG9ydCB7IEF2YXRhclNvdXJjZSB9IGZyb20gJy4vYXZhdGFyLXNvdXJjZS5lbnVtJztcblxuLyoqXG4gKiAgVmtvbnRha3RlIHNvdXJjZSBpbXBsZW1lbnRhdGlvbi5cbiAqICBGZXRjaCBhdmF0YXIgc291cmNlIGJhc2VkIG9uIHZrb250YWt0ZSBpZGVudGlmaWVyXG4gKiAgYW5kIGltYWdlIHNpemVcbiAqL1xuY29uc3QgYXBpVmVyc2lvbiA9IDUuMTU0O1xuXG5leHBvcnQgY2xhc3MgVmtvbnRha3RlIGV4dGVuZHMgQXN5bmNTb3VyY2Uge1xuICByZWFkb25seSBzb3VyY2VUeXBlOiBBdmF0YXJTb3VyY2UgPSBBdmF0YXJTb3VyY2UuVktPTlRBS1RFO1xuXG4gIGNvbnN0cnVjdG9yKHNvdXJjZUlkOiBzdHJpbmcpIHtcbiAgICBzdXBlcihzb3VyY2VJZCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0QXZhdGFyKHNpemU6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3QgaW1nU2l6ZSA9IHRoaXMuZ2V0SW1hZ2VTaXplKHNpemUpO1xuICAgIHJldHVybiBgaHR0cHM6Ly9hcGkudmsuY29tL21ldGhvZC91c2Vycy5nZXQ/dXNlcl9pZD0ke1xuICAgICAgdGhpcy5zb3VyY2VJZFxuICAgIH0mdj0ke2FwaVZlcnNpb259JmZpZWxkcz0ke2ltZ1NpemV9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBleHRyYWN0IHZrb250YWt0ZSBhdmF0YXIgZnJvbSBqc29uIGRhdGFcbiAgICovXG4gIHB1YmxpYyBwcm9jZXNzUmVzcG9uc2UoZGF0YToge1xuICAgIHJlc3BvbnNlOiB7XG4gICAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG4gICAgfVtdXG4gIH0pOiBzdHJpbmcgfCBudWxsIHtcbiAgICAvLyBhdmF0YXIga2V5IHByb3BlcnR5IGlzIHRoZSBzaXplIHVzZWQgdG8gZ2VuZXJhdGUgYXZhdGFyIHVybFxuICAgIC8vIHNpemUgcHJvcGVydHkgaXMgYWx3YXlzIHRoZSBsYXN0IGtleSBpbiB0aGUgcmVzcG9uc2Ugb2JqZWN0XG4gICAgY29uc3Qgc2l6ZVByb3BlcnR5ID0gT2JqZWN0LmtleXMoZGF0YVsncmVzcG9uc2UnXVswXSkucG9wKCk7XG4gICAgaWYgKCFzaXplUHJvcGVydHkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICAvLyByZXR1cm4gYXZhdGFyIHNyY1xuICAgIHJldHVybiBkYXRhWydyZXNwb25zZSddWzBdW3NpemVQcm9wZXJ0eV0gfHwgbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGltYWdlIHNpemUgcmVsYXRlZCB0byB2a29udGFrdGUgQVBJXG4gICAqL1xuICBwcml2YXRlIGdldEltYWdlU2l6ZShzaXplOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGlmIChzaXplIDw9IDUwKSB7XG4gICAgICByZXR1cm4gJ3Bob3RvXzUwJztcbiAgICB9XG5cbiAgICBpZiAoc2l6ZSA8PSAxMDApIHtcbiAgICAgIHJldHVybiAncGhvdG9fMTAwJztcbiAgICB9XG5cbiAgICBpZiAoc2l6ZSA8PSAyMDApIHtcbiAgICAgIHJldHVybiAncGhvdG9fMjAwJztcbiAgICB9XG5cbiAgICByZXR1cm4gJ3Bob3RvX21heCc7XG4gIH1cbn1cbiJdfQ==