10bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch/* 22daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies) 30bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 40bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch This library is free software; you can redistribute it and/or 50bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch modify it under the terms of the GNU Library General Public 60bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch License as published by the Free Software Foundation; either 70bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch version 2 of the License, or (at your option) any later version. 80bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 90bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch This library is distributed in the hope that it will be useful, 100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch but WITHOUT ANY WARRANTY; without even the implied warranty of 110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Library General Public License for more details. 130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch You should have received a copy of the GNU Library General Public License 150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch along with this library; see the file COPYING.LIB. If not, write to 160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Boston, MA 02110-1301, USA. 180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch*/ 190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 202daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#ifndef MIMESniffing_h 212daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#define MIMESniffing_h 220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 232daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#include <stddef.h> 24d0825bca7fe65beaee391d30da42e937db621564Steve Block 252daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch// MIME type sniffing implementation based on http://tools.ietf.org/html/draft-abarth-mime-sniff-06 260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 272daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochclass MIMESniffer { 282daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochpublic: 292daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch MIMESniffer(const char* advertisedMIMEType, bool isSupportedImageType); 300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 312daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch size_t dataSize() const { return m_dataSize; } 322daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch const char* sniff(const char* data, size_t size) const { return m_function ? m_function(data, size) : 0; } 332daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch bool isValid() const { return m_dataSize > 0; } 340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 352daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochprivate: 362daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch typedef const char* (*SniffFunction)(const char*, size_t); 372daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch size_t m_dataSize; 382daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch SniffFunction m_function; 392daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch}; 40d0825bca7fe65beaee391d30da42e937db621564Steve Block 412daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#endif // MIMESniffing_h 42