forked from MapComplete/MapComplete
		
	
		
			
				
	
	
		
			74 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import Constants from "../Models/Constants"
 | 
						|
 | 
						|
export default class Maproulette {
 | 
						|
    public static readonly STATUS_OPEN = 0
 | 
						|
    public static readonly STATUS_FIXED = 1
 | 
						|
    public static readonly STATUS_FALSE_POSITIVE = 2
 | 
						|
    public static readonly STATUS_SKIPPED = 3
 | 
						|
    public static readonly STATUS_DELETED = 4
 | 
						|
    public static readonly STATUS_ALREADY_FIXED = 5
 | 
						|
    public static readonly STATUS_TOO_HARD = 6
 | 
						|
    public static readonly STATUS_DISABLED = 9
 | 
						|
 | 
						|
    public static readonly STATUS_MEANING = {
 | 
						|
        0: "Open",
 | 
						|
        1: "Fixed",
 | 
						|
        2: "False positive",
 | 
						|
        3: "Skipped",
 | 
						|
        4: "Deleted",
 | 
						|
        5: "Already fixed",
 | 
						|
        6: "Too hard",
 | 
						|
        9: "Disabled",
 | 
						|
    }
 | 
						|
 | 
						|
    /*
 | 
						|
     * The API endpoint to use
 | 
						|
     */
 | 
						|
    endpoint: string
 | 
						|
 | 
						|
    /**
 | 
						|
     * The API key to use for all requests
 | 
						|
     */
 | 
						|
    private apiKey: string
 | 
						|
 | 
						|
    /**
 | 
						|
     * Creates a new Maproulette instance
 | 
						|
     * @param endpoint The API endpoint to use
 | 
						|
     */
 | 
						|
    constructor(endpoint: string = "https://maproulette.org/api/v2") {
 | 
						|
        this.endpoint = endpoint
 | 
						|
        this.apiKey = Constants.MaprouletteApiKey
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Close a task; might throw an error
 | 
						|
     *
 | 
						|
     * Also see:https://maproulette.org/docs/swagger-ui/index.html?url=/assets/swagger.json&docExpansion=none#/Task/setTaskStatus
 | 
						|
     * @param taskId The task to close
 | 
						|
     * @param status A number indicating the status. Use MapRoulette.STATUS_*
 | 
						|
     * @param options Additional settings to pass. Refer to the API-docs for more information
 | 
						|
     */
 | 
						|
    async closeTask(
 | 
						|
        taskId: number,
 | 
						|
        status = Maproulette.STATUS_FIXED,
 | 
						|
        options?: {
 | 
						|
            comment?: string
 | 
						|
            tags?: string
 | 
						|
            requestReview?: boolean
 | 
						|
            completionResponses?: Record<string, string>
 | 
						|
        }
 | 
						|
    ): Promise<void> {
 | 
						|
        const response = await fetch(`${this.endpoint}/task/${taskId}/${status}`, {
 | 
						|
            method: "PUT",
 | 
						|
            headers: {
 | 
						|
                "Content-Type": "application/json",
 | 
						|
                apiKey: this.apiKey,
 | 
						|
            },
 | 
						|
            body: options !== undefined ? JSON.stringify(options) : undefined,
 | 
						|
        })
 | 
						|
        if (response.status !== 204) {
 | 
						|
            console.log(`Failed to close task: ${response.status}`)
 | 
						|
            throw `Failed to close task: ${response.status}`
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |