98 lines
2.3 KiB
TypeScript
98 lines
2.3 KiB
TypeScript
import { Injectable } from '@angular/core';
|
|
import { FileList, FileListResponse } from './filelist'
|
|
import { Observable, of } from 'rxjs';
|
|
import { catchError, map, tap } from 'rxjs/operators';
|
|
import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';
|
|
|
|
@Injectable({
|
|
providedIn: 'root'
|
|
})
|
|
export class DataproviderService {
|
|
|
|
private apiUrl = "http://127.0.0.1:616/api.php";
|
|
|
|
constructor(
|
|
private http: HttpClient
|
|
) {
|
|
this.mock_EMPTYFILELIST = {
|
|
subFolderList: [],
|
|
musicList: [
|
|
{
|
|
fileName: "",
|
|
fileSize: 0,
|
|
modifiedTime: 0
|
|
}
|
|
]
|
|
}
|
|
|
|
this.mock_BASEFILELIST = {
|
|
subFolderList: ["AAAA", "BBBB"],
|
|
musicList: [
|
|
{
|
|
fileName: "CCCCC.mp3",
|
|
fileSize: 9951652,
|
|
modifiedTime: 1556423252
|
|
}
|
|
]
|
|
}
|
|
|
|
this.mock_FILELISTAAAA = {
|
|
subFolderList: ["DDDD", "EEEE"],
|
|
musicList: [
|
|
{
|
|
fileName: "EEEEE.mp3",
|
|
fileSize: 9951652,
|
|
modifiedTime: 1556423252
|
|
}
|
|
]
|
|
}
|
|
|
|
this.mock_FILELISTBBBB = {
|
|
subFolderList: ["FFFF", "GGGG"],
|
|
musicList: [
|
|
{
|
|
fileName: "FFFFF.mp3",
|
|
fileSize: 9951652,
|
|
modifiedTime: 1556423252
|
|
}
|
|
]
|
|
}
|
|
}
|
|
|
|
mock_EMPTYFILELIST : FileList;
|
|
mock_BASEFILELIST : FileList;
|
|
mock_FILELISTAAAA : FileList;
|
|
mock_FILELISTBBBB : FileList;
|
|
|
|
getFileList(path : string) : Observable<FileList> {
|
|
switch (path) {
|
|
case "AAAA":
|
|
return of(this.mock_FILELISTAAAA);
|
|
case "BBBB":
|
|
return of(this.mock_FILELISTBBBB);
|
|
default:
|
|
return of(this.mock_BASEFILELIST);
|
|
}
|
|
}
|
|
|
|
getFileListReal(path : string) : Observable<FileList> {
|
|
const body = new HttpParams()
|
|
.set('do', 'getfilelist')
|
|
.set('folder', path);
|
|
return this.http.post<FileListResponse>(this.apiUrl, body.toString(), {
|
|
headers: new HttpHeaders()
|
|
.set('Content-Type', 'application/x-www-form-urlencoded')
|
|
}).pipe(
|
|
map(h => h.result.data),
|
|
catchError(this.handleError<FileList>(this.mock_EMPTYFILELIST))
|
|
);
|
|
}
|
|
|
|
private handleError<T>(result?: T) {
|
|
return (error: any): Observable<T> => {
|
|
console.error(error); // log to console instead
|
|
return of(result as T);
|
|
};
|
|
}
|
|
}
|