//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: API to interface with YouTube via libcurl and OpenSSL // // $NoKeywords: $ //============================================================================= #ifndef YOUTUBEAPI_H #define YOUTUBEAPI_H #ifdef _WIN32 #pragma once #endif #include "basetypes.h" class CUtlString; enum eYouTubeLoginStatus { kYouTubeLogin_NotLoggedIn, kYouTubeLogin_LoggedIn, kYouTubeLogin_Pending, kYouTubeLogin_CouldNotConnect, kYouTubeLogin_Forbidden, kYouTubeLogin_GenericFailure, kYouTubeLogin_Cancelled, }; enum eYouTubeAccessControl { kYouTubeAccessControl_Public, kYouTubeAccessControl_Private, kYouTubeAccessControl_Unlisted, }; DECLARE_POINTER_HANDLE(YouTubeUploadHandle_t); DECLARE_POINTER_HANDLE(YouTubeInfoHandle_t); /** * Interface to general response handler for YouTube requests */ class CYouTubeResponseHandler { public: /** * Invoked in the main thread after a response has been fully received. * @param pResponse */ virtual void HandleResponse( long responseCode, const char *pResponse ) = 0; }; /** * Set application specific developer settings, which must be set before trying to log in the user or upload a video * @param pDeveloperKey * @param pDeveloperTag */ void YouTube_SetDeveloperSettings( const char *pDeveloperKey, const char *pDeveloperTag ); /** * Attempt to log the user in over SSL * @param pUserName * @param pPassword * @param pSource */ void YouTube_Login( const char *pUserName, const char *pPassword, const char *pSource ); /** * Cancel the login process. */ void YouTube_LoginCancel(); /** * @return eYouTubeLoginStatus */ eYouTubeLoginStatus YouTube_GetLoginStatus(); /** * @return YouTube login name */ const char *YouTube_GetLoginName(); /** * @return the URL to the YouTube profile, if the user is logged in */ bool YouTube_GetProfileURL( CUtlString &strProfileURL ); /** * Attempt to upload a movie file to YouTube * @param pFilePath full path to the file * @param pMimeType i.e. "video/mp4" * @param pTitle (must be less than 60 characters) * @param pDescription * @param pCategory - usually "Games" (see category terms in http://gdata.youtube.com/schemas/2007/categories.cat) * @param pKeywords * @param access * @param pURLToVideo if the upload was successful, this string will be a URL to the video on YouTube * @return true if the video was uploaded successfully, false otherwise */ YouTubeUploadHandle_t YouTube_Upload( const char* pFilePath, const char *pMimeType, const char *pTitle, const char *pDescription, const char *pCategory, const char *pKeywords, eYouTubeAccessControl access ); /** * @param handle * @return true if upload is finished, false otherwise */ bool YouTube_IsUploadFinished( YouTubeUploadHandle_t handle ); /** * Get the progress of the upload * @param handle * @param flPercentage the parameter to be filled in * @return true if the upload is still valid, false otherwise */ bool YouTube_GetUploadProgress( YouTubeUploadHandle_t handle, double &ultotal, double &ulnow ); /** * @param handle * @param bSuccess * @param strURLToVideo */ bool YouTube_GetUploadResults( YouTubeUploadHandle_t handle, bool &bSuccess, CUtlString &strURLToVideo, CUtlString &strURLToVideoStats ); /** * Clear status of the upload * @param handle */ void YouTube_ClearUploadResults( YouTubeUploadHandle_t handle ); /** * Cancel the upload of a video * @param handle */ void YouTube_CancelUpload( YouTubeUploadHandle_t handle ); /** * Asynchronously retrieve information for the given video. * @param pURLToVideoStats * @param responseHandler */ YouTubeInfoHandle_t YouTube_GetVideoInfo( const char *pURLToVideoStats, CYouTubeResponseHandler &responseHandler ); /** * @param handle */ void YouTube_CancelGetVideoInfo( YouTubeInfoHandle_t handle ); #endif // YOUTUBEAPI_H