--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/contentaccessfwfordrm/inc/supplier.h Wed Jul 08 11:25:26 2009 +0100
@@ -0,0 +1,164 @@
+/*
+* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+
+
+
+/**
+ @file
+ @publishedPartner
+ @released
+*/
+
+
+#ifndef __SUPPLIER_H__
+#define __SUPPLIER_H__
+
+#include <e32base.h>
+#include <e32std.h>
+#include <caf/caftypes.h>
+
+class RHTTPHeaders;
+class RStringPool;
+
+namespace ContentAccess
+ {
+ class CImportFile;
+ class CMetaDataArray;
+ class CAgentResolver;
+ class MFileHandleProvider;
+
+#ifndef REMOVE_CAF1
+ class CCafMimeHeader;
+#endif
+
+ /**
+ Used to import files using a content access agent. In the case of some
+ DRM agents the import will be a transformation from an unprotected content type
+ to a protected content type.
+
+ It creates CImportFile objects to import files into a Content Access
+ Agent. CSupplier uses it's CAgentResolver to determine which agent should receive
+ the file based upon the mime type of the file.
+
+ Clients can check if a mime type is supported by by calling the
+ CSupplier::IsImportSupported() function.
+
+ The CSupplier does not dynamically update it's list of agents so applications
+ should not use a long term persistent instance of CSupplier.
+
+ @publishedPartner
+ @released
+ */
+ class CSupplier : public CBase
+ {
+ public:
+ /** Create a new CSupplier
+ @return a CSupplier object
+ */
+ IMPORT_C static CSupplier* NewL();
+
+ /** Create a new CSupplier
+ @return a CSupplier object
+ */
+ IMPORT_C static CSupplier* NewLC();
+
+ /** destructor */
+ virtual ~CSupplier();
+
+ /** Sets the output directory for any files generated by the CAF.
+
+ @param aOutputDirectory The preferred location to store any output files
+ */
+ IMPORT_C void SetOutputDirectoryL(const TDesC& aOutputDirectory);
+
+ /** Determines whether one of the CAF agents wants to import
+ a file with the given mimetype
+
+ If this function returns ETrue the application should use the CSupplier to
+ create a ContentAccess::CImportFile session and import the file into CAF.
+
+ @param aMimeType The mime type of the file determined by an Apparc recognition or transmission header information.
+ @return ETrue if the mimetype is recognized by one of the CAF agents, EFalse otherwise.
+ */
+ IMPORT_C TBool IsImportSupported(const TDesC8& aMimeType);
+
+
+ /** Get HTTP download headers from the agents
+
+ Some DRM schemes require specific headers to be present in the HTTP request
+ header. This function allows a client to retrieve these headers from the
+ agents so any download request will satisfy the criteria required by
+ the HTTP server.
+
+ @param aStringPool The string pool used by the HTTP session
+ @param aRequestHeaders The agents will add any required fields to the headers
+ */
+ IMPORT_C void PrepareHTTPRequestHeaders(RStringPool& aStringPool, RHTTPHeaders& aRequestHeaders) const;
+
+
+ /** Creates a new CImportFile object and allow the agent to generate the output files
+
+ @param aMimeType This should be one of the mime types supported by CAF, IsImportSupported() can be used to check this.
+ @param aImportMetaData Any additional information that may be useful for the agent performing the import.
+ Ideally this will include the mime headers for the file about to be passed into CAF.
+ @param aSuggestedFileName Suggested filename for the CAF agent to use when
+ creating the output files, Details of the output files produced can be obtained using
+ CImportFile::OutputFileL().
+ @return A CImportFile object to import the file.
+
+ @leave KErrCANoAgent No agent supports the mime type supplied in aMimeType
+ */
+ IMPORT_C CImportFile* ImportFileL(const TDesC8& aMimeType, const CMetaDataArray& aImportMetaData, const TDesC& aSuggestedFileName);
+
+ /** Creates a new CImportFile object where the caller must provide file handles to store output files.
+
+ This allows a server to store the output files within its own private directory. The CAF agent will write to the private directory
+ using the file handle provided by the server.
+
+ If the agent requires a new output file it will return KErrCANewFileHandleRequired from CImportFile::Write() or CImportFile::WriteComplete()
+ The application performing the supply should provide the agent with a new file handle using CImportFile::ContinueWithNewOutputFile();
+
+ @param aMimeType This should be one of the mime types supported a CAF agent, IsImportSupported() can be used to check this.
+ @param aImportMetaData Any additional information that may be useful for the agent performing the import.
+ Ideally this will include the mime headers for the file about to be passed into CAF.
+ @return A CImportFile object to import the file.
+
+ @leave KErrCANoAgent No agent supports the mime type supplied in aMimeType
+ */
+ IMPORT_C CImportFile* ImportFileL(const TDesC8& aMimeType, const CMetaDataArray& aImportMetaData);
+
+#ifndef REMOVE_CAF1
+ /** Import a file
+ @param aMimeHeader Mime headers associated with the file to import
+ @param aSuggestedFileName The application supplied name for any output file created by the agent
+ @deprecated
+ */
+ IMPORT_C CImportFile* ImportFileL(CCafMimeHeader &aMimeHeader, const TDesC &aSuggestedFileName);
+#endif
+
+ private:
+ CSupplier();
+ void ConstructL();
+
+ // Resolver used to figure out which CA agent is responsible for importing a particular file
+ CAgentResolver* iAgentResolver;
+ HBufC* iOutputDirectory;
+ };
+ }
+
+#endif