// Copyright 2023 The Nomulus Authors. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. import { HttpClient, HttpErrorResponse } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { catchError, Observable, of } from 'rxjs'; import { SecuritySettingsBackendModel } from 'src/app/settings/security/security.service'; import { Contact } from '../../settings/contact/contact.service'; import { Registrar } from '../../registrar/registrar.service'; import { UserData } from './userData.service'; import { WhoisRegistrarFields } from 'src/app/settings/whois/whois.service'; @Injectable() export class BackendService { constructor(private http: HttpClient) {} errorCatcher( error: HttpErrorResponse, mockData?: Type ): Observable { if (error.error instanceof Error) { // A client-side or network error occurred. Handle it accordingly. console.error('An error occurred:', error.error.message); } else { // The backend returned an unsuccessful response code. // The response body may contain clues as to what went wrong, console.error( `Backend returned code ${error.status}, body was: ${error.error}` ); } // return throwError(() => {throw "Failed"}); return of(mockData); } getContacts(registrarId: string): Observable { return this.http .get( `/console-api/settings/contacts?registrarId=${registrarId}` ) .pipe(catchError((err) => this.errorCatcher(err))); } postContacts( registrarId: string, contacts: Contact[] ): Observable { return this.http.post( `/console-api/settings/contacts?registrarId=${registrarId}`, contacts ); } getRegistrars(): Observable { return this.http .get('/console-api/registrars') .pipe(catchError((err) => this.errorCatcher(err))); } getSecuritySettings( registrarId: string ): Observable { return this.http .get( `/console-api/settings/security?registrarId=${registrarId}` ) .pipe( catchError((err) => this.errorCatcher(err) ) ); } postSecuritySettings( registrarId: string, securitySettings: SecuritySettingsBackendModel ): Observable { return this.http.post( `/console-api/settings/security?registrarId=${registrarId}`, securitySettings ); } getUserData(): Observable { return this.http .get(`/console-api/userdata`) .pipe(catchError((err) => this.errorCatcher(err))); } postWhoisRegistrarFields( whoisRegistrarFields: WhoisRegistrarFields ): Observable { return this.http.post( '/console-api/settings/whois-fields', whoisRegistrarFields ); } }