This kinda is a backport of https://github.com/hedgedoc/hedgedoc/pull/961 Signed-off-by: Philip Molares <philip.molares@udo.edu>
		
			
				
	
	
		
			45 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
'use strict'
 | 
						|
const config = require('../../config')
 | 
						|
const logger = require('../../logger')
 | 
						|
const fs = require('fs')
 | 
						|
const fetch = require('node-fetch')
 | 
						|
 | 
						|
exports.uploadImage = function (imagePath, callback) {
 | 
						|
  if (!callback || typeof callback !== 'function') {
 | 
						|
    logger.error('Callback has to be a function')
 | 
						|
    return
 | 
						|
  }
 | 
						|
 | 
						|
  if (!imagePath || typeof imagePath !== 'string') {
 | 
						|
    callback(new Error('Image path is missing or wrong'), null)
 | 
						|
    return
 | 
						|
  }
 | 
						|
 | 
						|
  // The following client ID is for use with HedgeDoc only
 | 
						|
  const clientId = config.imgur.clientID || '032aa2f687790cd'
 | 
						|
 | 
						|
  const buffer = fs.readFileSync(imagePath)
 | 
						|
 | 
						|
  const params = new URLSearchParams()
 | 
						|
  params.append('image', buffer.toString('base64'))
 | 
						|
  params.append('type', 'base64')
 | 
						|
  fetch('https://api.imgur.com/3/image', {
 | 
						|
    method: 'POST',
 | 
						|
    body: params,
 | 
						|
    headers: { Authorization: `Client-ID ${clientId}` }
 | 
						|
  })
 | 
						|
    .then((res) => {
 | 
						|
      if (!res.ok) {
 | 
						|
        callback(new Error(res.statusText), null)
 | 
						|
        return
 | 
						|
      }
 | 
						|
      return res.json()
 | 
						|
    })
 | 
						|
    .then((json) => {
 | 
						|
      logger.debug(`SERVER uploadimage success: ${JSON.stringify(json)}`)
 | 
						|
      callback(null, json.data.link.replace(/^http:\/\//i, 'https://'))
 | 
						|
    }).catch((err) => {
 | 
						|
      callback(new Error(err), null)
 | 
						|
    })
 | 
						|
}
 |