Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of HTTPClient by
data/HTTPFile.h
- Committer:
- WiredHome
- Date:
- 2015-02-01
- Revision:
- 33:d4d1475bafc0
- Parent:
- 32:7b9919d59194
File content as of revision 33:d4d1475bafc0:
#ifndef HTTPFILE_H
#define HTTPFILE_H
#include <mbed.h>
#include "../IHTTPData.h"
/// A file handling mechanism - downloads files to a locally accessible file system
class HTTPFile : public IHTTPDataIn {
    
    public:
        /// Instantiate HTTPFile with a specified file on a locally accessible file system.
        ///
        /// @code
        /// HTTPFile latest("/local/status.txt");
        /// HTTPErrorCode = http.get("http://server.dom/path/serverstatus.txt", &latest);
        /// if (HTTPErrorCode == HTTP_OK) {
        ///    ... // file successfully downloaded
        /// }
        /// @endcode
        ///
        /// @param filename is the fully qualified filename to create.
        ///
        HTTPFile(char* filename);
        
        /** Closes the file, should be called once the http connection is closed.
         */
        void close();
        
    protected:     
       
        friend class HTTPClient;
    
        /** Reset stream to its beginning 
        * Called by the HTTPClient on each new request
        */
        virtual void writeReset();
        
        /** Write a piece of data transmitted by the server
        * @param[in] buf Pointer to the buffer from which to copy the data
        * @param[in] len Length of the buffer
        * @returns number of bytes written.
        */
        virtual int write(const char* buf, size_t len);
        
        /** Set MIME type
        * @param[in] type Internet media type from Content-Type header
        */
        virtual void setDataType(const char* type);
        
        /** Determine whether the data is chunked
        *  Recovered from Transfer-Encoding header
        * @param[in] chunked indicates the transfer is chunked.
        */
        virtual void setIsChunked(bool chunked);
        
        /** If the data is not chunked, set its size
        * From Content-Length header
        * @param[in] len defines the size of the non-chunked transfer.
        */
        virtual void setDataLen(size_t len);
    private:
        FILE *file;
        size_t m_len;
        bool m_chunked;
};
#endif  // HTTPFILE_H
            
    