@@ -24,7 +24,8 @@ def __getitem__(self, key): # noqa: CCR001
2424
2525 return copy
2626
27- def count (self , return_value = 0 , status_code = 200 ):
27+ def count (self , return_value = 0 , status_code = 200 , headers = None ):
28+ headers = headers or {}
2829 if self ._count is None :
2930 request_kwargs = self ._get_request_kwargs ()
3031 url = self ._build_full_url (
@@ -35,21 +36,19 @@ def count(self, return_value=0, status_code=200):
3536 if status_code == 200 :
3637 if not isinstance (return_value , int ):
3738 raise TypeError ('return_value must be an integer' )
39+ headers ['Content-Range' ] = f'items 0-0/{ return_value } '
3840 self ._client .get (
3941 url ,
4042 return_value = [],
41- headers = {
42- 'Content-Range' : f'items 0-0/{ return_value } ' ,
43- },
43+ headers = headers ,
4444 )
4545 self ._count = return_value
4646 else :
47+ headers ['Content-Range' ] = f'items 0-0/{ return_value } '
4748 self ._client .get (
4849 url ,
4950 status_code = status_code ,
50- headers = {
51- 'Content-Range' : f'items 0-0/{ return_value } ' ,
52- },
51+ headers = headers ,
5352 )
5453
5554 def first (self ):
@@ -64,7 +63,6 @@ def mock(
6463 return_value = None ,
6564 headers = None ,
6665 ):
67-
6866 if status_code != 200 :
6967 request_kwargs = self ._get_request_kwargs ()
7068 url = self ._build_full_url (
@@ -84,11 +82,11 @@ def mock(
8482 raise TypeError ('return_value must be a list of objects' )
8583
8684 if not self ._slice :
87- self ._mock_iteration (return_value )
85+ self ._mock_iteration (return_value , headers )
8886 else :
89- self ._mock_slicing (return_value )
87+ self ._mock_slicing (return_value , headers )
9088
91- def _mock_iteration (self , return_value ):
89+ def _mock_iteration (self , return_value , extra_headers ):
9290 request_kwargs = self ._get_request_kwargs ()
9391 total = len (return_value )
9492 self ._count = 0
@@ -103,16 +101,17 @@ def pages_iterator():
103101 offset ,
104102 request_kwargs ['params' ].get ('search' ),
105103 )
104+ headers = {'Content-Range' : f'items { offset } -{ offset + len (page ) - 1 } /{ total } ' }
105+ if extra_headers :
106+ headers .update (extra_headers )
106107 self ._client .get (
107108 url ,
108109 return_value = page ,
109- headers = {
110- 'Content-Range' : f'items { offset } -{ offset + len (page ) - 1 } /{ total } ' ,
111- },
110+ headers = headers ,
112111 )
113112 self ._count += len (page )
114113
115- def _mock_slicing (self , return_value ):
114+ def _mock_slicing (self , return_value , extra_headers ):
116115 request_kwargs = self ._get_request_kwargs ()
117116 total = len (return_value )
118117 self ._count = 0
@@ -139,12 +138,13 @@ def pages_iterator():
139138 offset ,
140139 request_kwargs ['params' ].get ('search' ),
141140 )
141+ headers = {'Content-Range' : f'items { offset } -{ offset + len (page ) - 1 } /{ total } ' }
142+ if extra_headers :
143+ headers .update (extra_headers )
142144 self ._client .get (
143145 url ,
144146 return_value = page ,
145- headers = {
146- 'Content-Range' : f'items { offset } -{ offset + len (page ) - 1 } /{ total } ' ,
147- },
147+ headers = headers ,
148148 )
149149 self ._count += len (page )
150150
0 commit comments