Newer
Older
/**
* This file is part of Anis Client.
*
* @copyright Laboratoire d'Astrophysique de Marseille / CNRS
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import { AppConfigService } from 'src/app/app-config.service';
declare var samp: any;
/**
* @class
* @classdesc Samp service.
*/
export class SampService {
private connector = null;
constructor(private config: AppConfigService) {
const baseUrl = window.location.protocol + "//" + window.location.host + this.config.baseHref;
const meta = {
"samp.name": "ANIS",
"samp.description.text": "AstroNomical Information System",
"author.email": "cesamsi@lam.fr",
"author.affiliation": "CeSAM, Laboratoire d'Astrophysique de Marseille",
"home.page": "https://anis.lam.fr",
"samp.icon.url": baseUrl + "/assets/cesam_anis40.png"
};
this.connector = new samp.Connector("anis-client", meta);
/**
* Register to Samp.
*
* @return Observable<any>
*/
register(): Observable<any> {
return new Observable(observer => {
samp.register(this.connector.name, (conn) => {
this.connector.setConnection(conn);
observer.next(true);
observer.complete();
}, () => {
observer.error(new Error('Oups!'));
observer.complete();
});
});
}
/**
* Disconnect to Samp.
*
* @return Observable<any>
*/
unregister(): void {
this.connector.unregister();
}
/**
* Disconnect to Samp.
*
* @param {string} mtype - Message type.
* @param {string} url - URL.
*/
broadcast(mtype: string, url: string): void {
const message = new samp.Message(mtype, {"url": encodeURI(url)});
this.connector.connection.notifyAll([message]);
}
}