Link/imageAPI.js

import { processRules } from '../common'

import { requestAPI } from './common'
import rules from './rules'

/**
 * 이미지 정보
 * @alias ImageInfos
 * @typedef ImageInfos
 * @property {Object} original
 * @property {String} original.url 이미지 Full URL
 * @property {Number} original.length 이미지 사이즈, 단위: Byte
 * @property {String} original.content_type 이미지 포맷
 * @property {Number} original.width 이미지 가로 크기
 * @property {Number} original.height 이미지 세로 크기
 * @memberof Kakao.Link
 */

/**
 * 카카오링크에 필요한 이미지를 업로드 합니다. (이미지는 20일 동안 보관됩니다.)
 * @function uploadImage
 * @param {Object} settings 카카오링크 이미지와 관련된 설정을 key/value로 전달합니다.
 * @param {FileList} settings.file HTMLInputElement의 files property
 * @return {Promise<ImageInfos>}
 * @memberof Kakao.Link
 */
export function uploadImage(settings) {
  settings = processRules(settings, rules.uploadImage, 'Link.uploadImage')

  return requestAPI('/v2/api/talk/message/image/upload', {
    file: settings.file,
  })
}

/**
 * 삭제할 이미지의 경로를 전달하면 이미지를 삭제할 수 있습니다.
 * @function deleteImage
 * @param {Object} settings 카카오링크 이미지와 관련된 설정을 key/value로 전달합니다.
 * @param {String} settings.imageUrl 삭제할 이미지 URL
 * @return {Promise}
 * @memberof Kakao.Link
 */
export function deleteImage(settings) {
  settings = processRules(settings, rules.deleteImage, 'Link.deleteImage')

  return requestAPI('/v2/api/talk/message/image/delete', {
    image_url: settings.imageUrl,
  })
}

/**
 * 스크랩 하고 싶은 이미지의 경로를 전달하면 스크랩 후 업로드 합니다. (이미지는 20일 동안 보관됩니다.)
 * @function scrapImage
 * @param {Object} settings 카카오링크 이미지와 관련된 설정을 key/value로 전달합니다.
 * @param {String} settings.imageUrl 스크랩할 이미지 URL
 * @return {Promise<ImageInfos>}
 * @memberof Kakao.Link
 */
export function scrapImage(settings) {
  settings = processRules(settings, rules.scrapImage, 'Link.scrapImage')

  return requestAPI('/v2/api/talk/message/image/scrap', {
    image_url: settings.imageUrl,
  })
}