@@ -10,7 +10,8 @@ import {
1010 QRCodeOptions ,
1111 QRCodeDefaultOptions ,
1212} from './types/endpoints/short-urls' ;
13- import { DomainsListItem , DomainsListResponse , ListTagsOptions , TagsListResponse } from './types/endpoints' ;
13+ import { DomainsListItem , DomainsListResponse , ListTagsOptions , PaginationOptions , TagsListResponse , VisitData , VisitsPaginationOptions , VisitsStats } from './types/endpoints' ;
14+ import { Paginated } from './types/endpoints/utils' ;
1415export class ShlinkClient {
1516 private url : string ;
1617 private token : string ;
@@ -87,6 +88,25 @@ export class ShlinkClient {
8788 . then ( ( { data } ) => data ) ;
8889 }
8990
91+ public countVisits ( ) : Promise < VisitsStats > {
92+ return this . client . get < { visits : VisitsStats } > ( { url : 'VISITS' } )
93+ . then ( ( { data } ) => data . visits ) ;
94+ }
95+
96+ public getLinkVisits ( shortCode : string , options : VisitsPaginationOptions = { } ) : Promise < Paginated < VisitData > > {
97+ return this . client . get < { visits : Paginated < VisitData > } > ( { url : 'LINK_VISITS' , params : { shortCode } } , {
98+ params : options ,
99+ } )
100+ . then ( ( { data } ) => data . visits ) ;
101+ }
102+
103+ public getTagVisits ( tag : string , options : PaginationOptions = { } ) : Promise < Paginated < VisitData > > {
104+ return this . client . get < { visits : Paginated < VisitData > } > ( { url : 'TAG_VISITS' , params : { tag } } , {
105+ params : options ,
106+ } )
107+ . then ( ( { data } ) => data . visits ) ;
108+ }
109+
90110 public listTags ( options : ListTagsOptions < false > ) : Promise < TagsListResponse < ListTagsOptions < false > > >
91111 public listTags ( options : ListTagsOptions < true > ) : Promise < TagsListResponse < ListTagsOptions < true > > >
92112 public listTags ( options : ListTagsOptions = { withStats : false } ) : Promise < TagsListResponse < ListTagsOptions > > {
0 commit comments