forked from MapComplete/MapComplete
		
	
		
			
				
	
	
		
			68 lines
		
	
	
		
			No EOL
		
	
	
		
			2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			No EOL
		
	
	
		
			2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import $ from "jquery"
 | |
| 
 | |
| export class Imgur {
 | |
| 
 | |
| 
 | |
|     static uploadMultiple(
 | |
|         title: string, description: string, blobs: FileList,
 | |
|         handleSuccessfullUpload: ((imageURL: string) => void),
 | |
|         allDone: (() => void),
 | |
|         offset:number = 0) {
 | |
| 
 | |
|         if (blobs.length == offset) {
 | |
|             allDone();
 | |
|             return;
 | |
|         }
 | |
|         const blob = blobs.item(offset);
 | |
|         const self = this;
 | |
|         this.uploadImage(title, description, blob,
 | |
|             (imageUrl) => {
 | |
|                 handleSuccessfullUpload(imageUrl);
 | |
|                 self.uploadMultiple(
 | |
|                     title, description, blobs,
 | |
|                     handleSuccessfullUpload,
 | |
|                     allDone,
 | |
|                     offset + 1);
 | |
|             }
 | |
|         );
 | |
| 
 | |
| 
 | |
|     }
 | |
| 
 | |
|     static uploadImage(title: string, description: string, blob,
 | |
|                        handleSuccessfullUpload: ((imageURL: string) => void)) {
 | |
| 
 | |
|         const apiUrl = 'https://api.imgur.com/3/image';
 | |
|         const apiKey = '7070e7167f0a25a';
 | |
| 
 | |
|         var settings = {
 | |
|             async: true,
 | |
|             crossDomain: true,
 | |
|             processData: false,
 | |
|             contentType: false,
 | |
|             type: 'POST',
 | |
|             url: apiUrl,
 | |
|             headers: {
 | |
|                 Authorization: 'Client-ID ' + apiKey,
 | |
|                 Accept: 'application/json',
 | |
|             },
 | |
|             mimeType: 'multipart/form-data',
 | |
|         };
 | |
|         var formData = new FormData();
 | |
|         formData.append('image', blob);
 | |
|         formData.append("title", title);
 | |
|         formData.append("description", description)
 | |
|         // @ts-ignore
 | |
|         settings.data = formData;
 | |
| 
 | |
|         // Response contains stringified JSON
 | |
|         // Image URL available at response.data.link
 | |
|         $.ajax(settings).done(function (response) {
 | |
|             response = JSON.parse(response);
 | |
|             handleSuccessfullUpload(response.data.link);
 | |
|         }).fail((reason) => {
 | |
|             console.log("Uploading to IMGUR failed", reason)
 | |
|         });
 | |
|     }
 | |
| 
 | |
| } |