
    [,h                     X    d Z ddlmZ ddlmZ ddlmZ  G d de      Z G d d	e      Zy
)zFCreates the Request and Response sub class that are used by each entry    )Optional)cached_property   )HttpTransactionc                   ~   e Zd ZdZd Zd ZdefdZede	fd       Z
edefd       Zede	fd       Zedefd	       Zedefd
       Zedefd       Zedefd       Zedefd       Zedefd       Zedefd       Zedefd       Zedefd       Zedefd       Zedee   fd       Zedee   fd       Zy)RequestzRequest object for an HarEntryc                      d| j                    S NzHarEntry.Request for urlselfs    J/var/www/html/trade_iq/venv/lib/python3.12/site-packages/haralyzer/http.py__str__zRequest.__str__
       &txxj11    c                      d| j                    S r
   r   r   s    r   __repr__zRequest.__repr__   r   r   returnc                 R    | j                    d| j                   d| j                   S )zJ
        :return: Request specific start line
        :rtype: str
         )methodr   httpVersionr   s    r   _start_linezRequest._start_line   s*    
 ++az4+;+;*<==r   c                      | j                   d   S )zG
        :return: Body size of the request
        :rtype: int
        bodySize	raw_entryr   s    r   r   zRequest.bodySize        ~~j))r   c                      | j                   d   S )zH
        :return: Cookies from the request
        :rtype: list
        cookiesr   r   s    r   r!   zRequest.cookies!   s     ~~i((r   c                      | j                   d   S )zL
        :return: Headers size from the request
        :rtype: int
        headersSizer   r   s    r   r#   zRequest.headersSize)        ~~m,,r   c                      | j                   d   S )zO
        :return: HTTP version used in the request
        :rtype: str
        r   r   r   s    r   r   zRequest.httpVersion1   r$   r   c                      | j                   d   S )zI
        :return: HTTP method of the request
        :rtype: str
        r   r   r   s    r   r   zRequest.method9        ~~h''r   c                      | j                   d   S )zM
        :return: Query string from the request
        :rtype: list
        queryStringr   r   s    r   r)   zRequest.queryStringA   r$   r   c                      | j                   d   S )zA
        :return: URL of the request
        :rtype: str
        r   r   r   s    r   r   zRequest.urlI   s     ~~e$$r   c                 $    | j                  d      S )zA
        :return: HTTP Accept header
        :rtype: str
        Acceptget_header_valuer   s    r   acceptzRequest.acceptS   s     $$X..r   c                 $    | j                  d      S )zG
        :return: HTTP CacheControl header
        :rtype: str
        zCache-Controlr-   r   s    r   cacheControlzRequest.cacheControl[        $$_55r   c                 $    | j                  d      S )zJ
        :return: HTTP Accept-Encoding Header
        :rtype: str
        zAccept-Encodingr-   r   s    r   encodingzRequest.encodingc        $$%677r   c                 $    | j                  d      S )z?
        :return: HTTP Host header
        :rtype: str
        Hostr-   r   s    r   hostzRequest.hostk        $$V,,r   c                 $    | j                  d      S )zC
        :return: HTTP language header
        :rtype: str
        zAccept-Languager-   r   s    r   languagezRequest.languages   r5   r   c                 $    | j                  d      S )z9
        :return: User Agent
        :rtype: str
        z
User-Agentr-   r   s    r   	userAgentzRequest.userAgent{   s     $$\22r   c                 \    d| j                   vry| j                   d   j                  d      S )zC
        :return: Mime Type of request
        :rtype: str
        postDataNmimeTyper   getr   s    r   r@   zRequest.mimeType   s-     T^^+~~j)--j99r   c                     d| j                   vry| j                   d   }|j                  d|j                  d            S )z;
        :return: Request body
        :rtype: str
        r?   N_textBase64textrA   )r   	post_datas     r   rE   zRequest.text   s;     T^^+NN:.	}}]IMM&,ABBr   N)__name__
__module____qualname____doc__r   r   strr   r   intr   listr!   r#   r   r   r)   r   r/   r1   r4   r8   r;   r=   r   r@   rE    r   r   r   r      s   (22>S > *# * * ) ) ) -S - - -S - - ( ( ( -T - - %S % % / / / 6c 6 6 8# 8 8 -c - - 8# 8 8 33 3 3 :(3- : : Chsm C Cr   r   c                       e Zd ZdZdedef fdZdefdZdefdZdefdZ	e
defd	       Ze
defd
       Ze
defd       Ze
dee   fd       Ze
defd       Ze
defd       Ze
defd       Ze
defd       Ze
defd       Ze
defd       Ze
defd       Ze
defd       Ze
defd       Ze
defd       Ze
defd       Z xZS )ResponsezResponse object for a HarEntryr   entryc                 2    t         |   |       || _        y)z

        :param url: Responses don't have a URL so need to get it passed
        :type url: str
        :param entry: Response data
        N)super__init__r   )r   r   rQ   	__class__s      r   rT   zResponse.__init__   s     	r   r   c                      d| j                    S NzHarEntry.Response for r   r   s    r   r   zResponse.__str__       'z22r   c                      d| j                    S rW   r   r   s    r   r   zResponse.__repr__   rX   r   c                 R    | j                    d| j                   d| j                   S )zY
        :return: Response specific start line (status-line)
        :rtype: str
        r   )r   status
statusTextr   s    r   r   zResponse._start_line   s+    
 ""#1T[[M4??2CDDr   c                      | j                   d   S )z8
        :return: Body Size
        :rtype: int
        r   r   r   s    r   r   zResponse.bodySize   r   r   c                      | j                   d   S )z:
        :return: Header size
        :rtype: int
        r#   r   r   s    r   r#   zResponse.headersSize   r$   r   c                      | j                   d   S )z;
        :return: HTTP Version
        :rtype: str
        r   r   r   s    r   r   zResponse.httpVersion   r$   r   c                 :    | j                   j                  dd      S )zE
        :return: Redirect URL
        :rtype: Optional[str]
        redirectURLNrA   r   s    r   ra   zResponse.redirectURL   s     ~~!!-66r   c                      | j                   d   S )z:
        :return: HTTP Status
        :rtype: int
        r[   r   r   s    r   r[   zResponse.status   r'   r   c                      | j                   d   S )z?
        :return: HTTP Status Text
        :rtype: str
        r\   r   r   s    r   r\   zResponse.statusText   s     ~~l++r   c                 $    | j                  d      S )zC
        :return: Cache Control Header
        :rtype: str
        zcache-controlr-   r   s    r   r1   zResponse.cacheControl   r2   r   c                 $    | j                  d      S )zM
        :return: Content Security Policy Header
        :rtype: str
        zcontent-security-policyr-   r   s    r   contentSecurityPolicyzResponse.contentSecurityPolicy   s     $$%>??r   c                 &    | j                   d   d   S )z;
        :return: Content Size
        :rtype: int
        contentsizer   r   s    r   contentSizezResponse.contentSize        ~~i(00r   c                 $    | j                  d      S )z;
        :return: Content Type
        :rtype: str
        zcontent-typer-   r   s    r   contentTypezResponse.contentType   s     $$^44r   c                 $    | j                  d      S )z?
        :return: Date of response
        :rtype: str
        dater-   r   s    r   ro   zResponse.date  r9   r   c                 $    | j                  d      S )zA
        :return: Last modified time
        :rtype: str
        zlast-modifiedr-   r   s    r   lastModifiedzResponse.lastModified  r2   r   c                 &    | j                   d   d   S )zD
        :return: Mime Type of response
        :rtype: str
        rh   r@   r   r   s    r   r@   zResponse.mimeType  s     ~~i(44r   c                 &    | j                   d   d   S )z<
        :return: Response body
        :rtype: str
        rh   rE   r   r   s    r   rE   zResponse.text  rk   r   c                 >    | j                   d   j                  d      S )zO
        :return: How the response body is encoded
        :rtype: str
        rh   r4   rA   r   s    r   textEncodingzResponse.textEncoding'  s     ~~i(,,Z88r   )rG   rH   rI   rJ   rK   dictrT   r   r   r   r   rL   r   r#   r   r   ra   r[   r\   r1   rf   rj   rm   ro   rq   r@   rE   ru   __classcell__)rU   s   @r   rP   rP      s   (C  3 33# 3ES E *# * * -S - - -S - - 7Xc] 7 7 ( ( ( ,C , , 6c 6 6 @s @ @ 1S 1 1 5S 5 5 -c - - 6c 6 6 5# 5 5 1c 1 1 9c 9 9r   rP   N)rJ   typingr   r   mixinsr   r   rP   rN   r   r   <module>rz      s0    L  + #OCo OCdT9 T9r   