/* Copyright CloudLinux Zug GmbH 2010-2017 All Rights Reserved
 *
 * Licensed under CLOUD LINUX LICENSE AGREEMENT
 * http://cloudlinux.com/docs/LICENSE.TXT
 */

import {Injectable} from '@angular/core';
import {HttpClient, HttpParams} from '@angular/common/http';

declare let $: any; // plesk getElementById

@Injectable()
export class RavenTransport {

    constructor(
        private request: HttpClient,
    ) {
    }

    post(options): Promise<any> {
        return new Promise((resolve, reject) => {
            let params = new HttpParams();
            for (let param in options.auth) {
                params = params.append(param, options.auth[param]);
            }

            let $token;
            if ($) {
                $token = $('forgery_protection_token');
                if ($token) {
                    $token.setAttribute('id', 'forgery_protection_token_blocked');
                }
            }
            let promise = this.request.post(options.url, options.data, {
                params: params,
            }).subscribe(resolve, reject);
            if ($token) {
                $token.setAttribute('id', 'forgery_protection_token');
            }
            return promise;
        });
    }
}
