mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-11 03:53:02 +00:00
65272: item template REST contract endpoint changes
This commit is contained in:
@@ -25,12 +25,18 @@ import { switchMap } from 'rxjs/operators';
|
|||||||
* Makes sure to change the endpoint before sending out CRUD requests for the item template
|
* Makes sure to change the endpoint before sending out CRUD requests for the item template
|
||||||
*/
|
*/
|
||||||
class DataServiceImpl extends ItemDataService {
|
class DataServiceImpl extends ItemDataService {
|
||||||
protected linkPath = 'itemtemplate';
|
protected collectionLinkPath = 'itemtemplate';
|
||||||
|
protected linkPath = 'itemtemplates';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The ID of the collection we're currently sending requests for
|
* Endpoint dynamically changing depending on what request we're sending
|
||||||
*/
|
*/
|
||||||
private collectionID: string;
|
private endpoint$: Observable<string>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Is the current endpoint based on a collection?
|
||||||
|
*/
|
||||||
|
private collectionEndpoint = false;
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
protected requestService: RequestService,
|
protected requestService: RequestService,
|
||||||
@@ -48,21 +54,43 @@ class DataServiceImpl extends ItemDataService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the base endpoint for all requests
|
* Set the endpoint to be based on a collection
|
||||||
* Uses the current collectionID to assemble a request endpoint for the collection's item template
|
* @param collectionID The ID of the collection to base the endpoint on
|
||||||
*/
|
*/
|
||||||
protected getEndpoint(): Observable<string> {
|
private setCollectionEndpoint(collectionID: string) {
|
||||||
return this.collectionService.getIDHrefObs(this.collectionID).pipe(
|
this.collectionEndpoint = true;
|
||||||
switchMap((href: string) => this.halService.getEndpoint(this.linkPath, href))
|
this.endpoint$ = this.collectionService.getIDHrefObs(collectionID).pipe(
|
||||||
|
switchMap((href: string) => this.halService.getEndpoint(this.collectionLinkPath, href))
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Since the collection ID is included in the base endpoint, simply return the base endpoint
|
* Set the endpoint to the regular linkPath
|
||||||
|
*/
|
||||||
|
private setRegularEndpoint() {
|
||||||
|
this.collectionEndpoint = false;
|
||||||
|
this.endpoint$ = this.halService.getEndpoint(this.linkPath);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the base endpoint for all requests
|
||||||
|
* Uses the current collectionID to assemble a request endpoint for the collection's item template
|
||||||
|
*/
|
||||||
|
protected getEndpoint(): Observable<string> {
|
||||||
|
return this.endpoint$;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If the current endpoint is based on a collection, simply return the collection's template endpoint, otherwise
|
||||||
|
* create a regular template endpoint
|
||||||
* @param resourceID
|
* @param resourceID
|
||||||
*/
|
*/
|
||||||
getIDHrefObs(resourceID: string): Observable<string> {
|
getIDHrefObs(resourceID: string): Observable<string> {
|
||||||
|
if (this.collectionEndpoint) {
|
||||||
return this.getEndpoint();
|
return this.getEndpoint();
|
||||||
|
} else {
|
||||||
|
return super.getIDHrefObs(resourceID);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -70,7 +98,7 @@ class DataServiceImpl extends ItemDataService {
|
|||||||
* @param collectionID
|
* @param collectionID
|
||||||
*/
|
*/
|
||||||
findByCollectionID(collectionID: string): Observable<RemoteData<Item>> {
|
findByCollectionID(collectionID: string): Observable<RemoteData<Item>> {
|
||||||
this.collectionID = collectionID;
|
this.setCollectionEndpoint(collectionID);
|
||||||
return super.findById(collectionID);
|
return super.findById(collectionID);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -80,7 +108,7 @@ class DataServiceImpl extends ItemDataService {
|
|||||||
* @param collectionID
|
* @param collectionID
|
||||||
*/
|
*/
|
||||||
create(item: Item, collectionID: string): Observable<RemoteData<Item>> {
|
create(item: Item, collectionID: string): Observable<RemoteData<Item>> {
|
||||||
this.collectionID = collectionID;
|
this.setCollectionEndpoint(collectionID);
|
||||||
return super.create(item);
|
return super.create(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -90,13 +118,13 @@ class DataServiceImpl extends ItemDataService {
|
|||||||
* @param collectionID
|
* @param collectionID
|
||||||
*/
|
*/
|
||||||
deleteByCollectionID(item: Item, collectionID: string): Observable<boolean> {
|
deleteByCollectionID(item: Item, collectionID: string): Observable<boolean> {
|
||||||
this.collectionID = collectionID;
|
this.setRegularEndpoint();
|
||||||
return super.delete(item);
|
return super.delete(item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A service responsible for fetching/sending data from/to the REST API on a collection's itemtemplate endpoint
|
* A service responsible for fetching/sending data from/to the REST API on a collection's itemtemplates endpoint
|
||||||
*/
|
*/
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class ItemTemplateDataService implements UpdateDataService<Item> {
|
export class ItemTemplateDataService implements UpdateDataService<Item> {
|
||||||
|
Reference in New Issue
Block a user