
    xh
                     |    S SK Jr  S SKJr  S SKJrJr  S SKJr	  S SK
JrJrJr  \(       a  S SKJr   " S S\5      rg	)
    )TYPE_CHECKING)parse)HttpRequestHttpResponse)settings)CursorPagination_clamp_reverse_order)QuerySetc            
       j    \ rS rSrSrSrSS jrSSS\R                  S\	S	\
S
\4
S jrSSS
\4S jrSrg)AsyncLinkHeaderPagination   i  Nquerysetr   c                 |   #    XR                   UR                   U-   S-     Vs/ s S h  vN oDPM   N
 sn$ s  snf 7f)N   )offset)selfr   cursorlimitobjs        !/code/glitchtip/api/pagination.pyget_results%AsyncLinkHeaderPagination.get_results   s?     !)--&--%:ORS:S!T
 
C
 	
 
s$   !<731
3737<
paginationrequestresponsereturnc                 l  #    [        UR                  =(       d    [        R                  SU R                  5      nUnUR
                  R                  (       d  UR                  " U R                  6 nUR
                  R                  nUR                  5       n	UR                  n
U
R                  (       a  UR                  " [        U5      6 nU
R                  b{  US   R                  S5      nUS   R                  S5      nU
R                  U:w  a"  UR                  " S0 U S3U
R                  0D6nO!UR                  " S0 U S3U
R                  0D6nU R!                  XU5      I S h  vN n[#        US U 5      n[%        U5      [%        U5      :  a  SnU R'                  US   U5      nOSnS nU
R                  (       a[  [#        [)        U5      5      nU
R                  S L=(       d    U
R*                  S:  nUnU(       a  U
R                  OS nU(       a  UOS nOFUnU
R                  S L=(       d    U
R*                  S:  nU(       a  UOS nU(       a  U
R                  OS nU(       a  U R-                  U	UU
UUUUUS9OS nU(       a  U R/                  U	UU
UUUUUS	9OS nSnU(       d  U(       a  U R1                  U5      I S h  vN nO[%        U5      n/ nUS
4US44 H  u  nnUbn  [2        R4                  " U5      n[2        R6                  " UR
                  5      R9                  SS/5      S   n
UR;                  SR=                  UUU
5      5        Mw  UR;                  SR=                  U	U5      5        M     U(       a  SR?                  U5      1O0 US'   U R@                  US'   UUS'   U$  GNF N7f)Nr   -__lt__gtTF)base_urlpager   orderhas_previousr   next_positionprevious_position)r#   r$   r   r%   has_nextr   r'   r(   previousnextr    z+<{}>; rel="{}"; results="true"; cursor="{}"z<{}>; rel="{}"; results="false"z, Linkz
X-Max-HitszX-Hits )!r	   r   ninja_settingsPAGINATION_PER_PAGEmax_page_sizequeryorder_bydefault_orderingbuild_absolute_urir   reverser
   position
startswithlstripfilterr   listlen_get_position_from_instancereversedr   	next_linkprevious_link_aitems_countr   urlparseparse_qsgetappendformatjoinmax_hits)r   r   r   r   r   paramsr   full_querysetr%   r#   r   is_reversed
order_attrresultsr$   has_following_positionfollowing_positionr)   r&   r'   r(   r+   r*   total_countlinksurllabelparseds                               r   apaginate_queryset,AsyncLinkHeaderPagination.apaginate_queryset   s     B B B
 !~~&&(($*?*?@H''--/"">>((.*?@H??&(--c2Kq-J~~,#??TD.A6??-ST#??TD.A6??-ST((5AAGFUO$w<#d)#%)"!%!A!A'"+u!U%*"!%>>'Dt3K9JH1L/7FOOTM6B 2-H"OO47OV]]Q=NL2:.M3?T  NN!)+"3  	  	4  !!+"3  	  	 | $ 2 2= AAKd)Kz"6N
JC ,599(RDI!LAHHUF >EEhPUVW
 27DIIe,-B!%(_ Bn Bs&   E'N4)N/*EN4N2C+N42N4c                 t   #    UR                  5       S U R                   R                  5       I S h  vN $  N7f)N)r3   rH   acount)r   r   s     r   rA   'AsyncLinkHeaderPagination._aitems_count   s.     &&(4==9@@BBBBs   /868r.   )r   r   )__name__
__module____qualname____firstlineno__rH   Outputr   r   Inputr   r   dictrU   intrA   __static_attributes__r.       r   r   r      sk    H F

rr %**r 	r
 r 
rhCJ C3 Crc   r   N)typingr   urllibr   django.httpr   r   
ninja.confr   r/   ninja_cursor_paginationr   r	   r
   django.db.modelsr   r   r.   rc   r   <module>rj      s.       1 1 L L)@C 0 @Crc   