#include "Winamp5ArtworkManager.h"
#include "api__wasabi2.h"
#include "metadata/MetadataKeys.h"
#include "nswasabi/ReferenceCounted.h"

int Winamp5ArtworkManager::Artwork_GetArtwork(nx_uri_t filename, unsigned int field, artwork_t *artwork, data_flags_t flags, nx_time_unix_64_t *filename_modified)
{
	if (!AGAVE_API_ALBUMART)
		return NErr_FailedCreate;

	if (field != MetadataKeys::ALBUM)
		return NErr_Unknown;


	if (filename_modified)
	{
		struct __stat64 buffer; 
		if (_wstat64(filename->string, &buffer) == 0)
		{
			*filename_modified = buffer.st_atime;
		}
		else
		{
			*filename_modified = 0;
		}
	}

	wchar_t *mime_type;
	void *bits;
	size_t len;
	int ret = AGAVE_API_ALBUMART->GetAlbumArtData(filename->string, L"cover", &bits, &len, &mime_type);
	if (ret != 0)
		return NErr_Empty;

	NXDataCreate(&artwork->data, bits, len);
	WASABI_API_MEMMGR->sysFree(bits);

	if (mime_type)
	{
		ReferenceCountedNXString mime_type_nx;
		NXStringCreateWithUTF16(&mime_type_nx, mime_type);
		NXDataSetMIME(artwork->data, mime_type_nx);
		WASABI_API_MEMMGR->sysFree(mime_type);
	}
	artwork->height = 0;
	artwork->width = 0;
	return NErr_Success;
}