dicomtrolley.http¶
For dealing with http details that are not fully addressed in requests
HTMLPart
¶
One part of a multipart http response, without the boundaries
Source code in dicomtrolley/http.py
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | |
HTTPMultiPartStream
¶
Converts a streamed http multipart response into separate parts.
Main use is as an iterator:
parts = [x for x in HTTPMultiPartStream(response)]
This iterator is stateful and can only be called once as it consumes the response stream
Source code in dicomtrolley/http.py
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 | |
__next__()
¶
Returns¶
HTMLPart One part in a multipart response
Source code in dicomtrolley/http.py
108 109 110 111 112 113 114 115 116 117 | |
PartIterator
¶
Splits incoming multipart bytes into parts based on boundary.
Tries to be efficient with scanning the buffer for boundary byte strings by remembering what was scanned before.
Source code in dicomtrolley/http.py
120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 | |
__next__()
¶
Returns¶
Bytes bytes between two boundaries, or None if none can be found
Raises¶
StopIteration When no next chunks can be read
Source code in dicomtrolley/http.py
135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 | |
read_next_chunk()
¶
Read next chunk of bytes from iterator
Source code in dicomtrolley/http.py
160 161 162 163 164 165 166 167 | |
scan_for_part()
¶
Search buffer to try to return a part between two boundaries. Shifts data between fresh and scanned buffer to reduce search time
Returns¶
Bytes All bytes before the next boundary. Removes bytes and boundary from buffer. If no boundary is found, return empty bytes None If no part could be found
Notes¶
Boundary bytes themselves are never returned. If incoming bytes start with a boundary bytestring this is discarded. The alternative, returning an empty bytestring does not seem useful in this case.
Source code in dicomtrolley/http.py
169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 | |
SafeChunks
¶
Iterator that returns byte chunks from stream
Takes into account servers might ignore chunk_size. If returned chunks are smaller than expected, collates chunks until chunk of at least stream_chunk_size is received
Source code in dicomtrolley/http.py
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | |
split_on_find(content, bound)
¶
Split content string on a substring
Source code in dicomtrolley/http.py
220 221 222 223 | |