@@ -43,7 +43,7 @@ class CollectorClient {
4343 /** @property {string } - one of 'Incoming', 'Active', 'Deactivated', 'Refused' */
4444 get status ( ) {
4545 const eventStatus = this . eventData . content . status ;
46- if ( eventStatus === 'Deactivated' || eventStatus === 'Refused' ) {
46+ if ( eventStatus === CollectorClient . STATUSES . deactivated || eventStatus === CollectorClient . STATUSES . refused ) {
4747 if ( ! this . accessData ?. deleted ) {
4848 logger . error ( '>> CollectorClient.status TODO check consitency when access is still valid and deactivated or refused' , this . accessData ) ;
4949 }
@@ -188,6 +188,27 @@ class CollectorClient {
188188 return null ;
189189 }
190190
191+ async revoke ( ) {
192+ if ( ! this . accessData ) {
193+ throw new HDSLibError ( 'Cannot revoke if no accessData' ) ;
194+ }
195+ if ( this . accessData . deleted && this . status === CollectorClient . STATUSES . deactivated ) {
196+ throw new HDSLibError ( 'Already revoked' ) ;
197+ }
198+ // revoke access
199+ await this . app . connection . apiOne ( 'accesses.delete' , { id : this . accessData . id } , 'accessDeletion' ) ;
200+ // lazyly flag currentAccess as deleted
201+ this . accessData . deleted = Date . now ( ) / 1000 ;
202+
203+ const responseContent = { } ;
204+ const requesterEvent = await this . #updateRequester( 'revoke' , responseContent ) ;
205+ if ( requesterEvent != null ) {
206+ await this . #updateStatus( CollectorClient . STATUSES . deactivated ) ;
207+ return { requesterEvent } ;
208+ }
209+ return null ;
210+ }
211+
191212 async refuse ( ) {
192213 const responseContent = { } ;
193214
0 commit comments