Sponsored Links

Sponsored Links

Results 1 to 2 of 2



  1. #1
    Registered User Jurai2's Avatar
    Join Date
    Sep 2010
    Posts
    352
    Sponsored Links

    Cover Download Code

    Sponsored Links
    makefile additions for lib includes

    Code:
    -lhttp_util_stub -lhttp_stub
    include

    Code:
    #include <cell/http.h>
    in your definitions

    Code:
    #define BUFFER_SIZE  256
    #define HTTP_POOL_SIZE      (8 * 1024)
    #define MALLOC(size) malloc(size)
    #define FREE(ptr)    free(ptr); ptr = NULL;
    #define REQUEST_URI  "http://www.bombsomedodongos.com/covers/"
    #define REQUEST_URI_3D  "http://www.bombsomedodongos.com/covers/3d/"
    static char httpbuffer[BUFFER_SIZE];
    in your code (you could throw it in a function, I just shoehorned it in my L1 button press

    you could obviously remove the use_3d variable if you only want one type

    Code:
    	int fd;
    	CellHttpClientId client = 0;
    	CellHttpTransId trans = 0;
    	CellHttpUri uri;
    	CellHttpUri uripath;
    	int ret;
    	bool has_cl = true;
    	uint64_t length = 0;
    	uint64_t recvd;
    	size_t poolSize = 0;
    	void *uriPool;
    	void *httpPool;
    	char* serverName;
    	size_t localRecv = 0;
    	char tmp[256];
    	char tmp2[100];
    	char path[256];
    	memset(tmp, 0, 256);
    	memset(httpbuffer, 0x00, sizeof(httpbuffer));
    	if(use_3dcovers == 0)
    	{
    		serverName = REQUEST_URI;
    	}
    	else
    	{
    		serverName = REQUEST_URI_3D;
    	}
    
    	httpPool = malloc(HTTP_POOL_SIZE);
    
    	char rdr[256];
    	if(use_3dcovers == 0)
    	{
    		sprintf(path, "/dev_hdd0/game/OMAN46756/covers/%s.PNG",menu_list[game_sel].title_id);
    	}
    	else
    	{
    		sprintf(path, "/dev_hdd0/game/OMAN46756/covers/3d/%s.PNG",menu_list[game_sel].title_id);
    	}
    
    	ret = cellHttpInit(httpPool, HTTP_POOL_SIZE);	
    	ret = cellHttpCreateClient(&client);
    	ret = cellHttpUtilParseUri(NULL, serverName, NULL, 0, &poolSize);
    	uriPool = MALLOC(poolSize);
    	cellHttpUtilParseUri(&uri, serverName, uriPool, poolSize, NULL);
    
    	if(use_3dcovers == 0)
    	{
    		sprintf(rdr, "http://www.bombsomedodongos.com/covers/%s.PNG",menu_list[game_sel].title_id);
    	}
    	else
    	{
    		sprintf(rdr, "http://www.bombsomedodongos.com/covers/3d/%s.PNG",menu_list[game_sel].title_id);
    	}
    	ret = cellHttpUtilParseUri(NULL, rdr, NULL, 0, &poolSize);
    	uriPool = MALLOC(poolSize);
    	sprintf(rdr, "%s.PNG", menu_list[game_sel].title_id);
    	cellHttpUtilMergeUriPath(&uripath, &uri, rdr, uriPool, poolSize, NULL);
    	
    	ret = cellHttpCreateTransaction(&trans, client, CELL_HTTP_METHOD_GET, &uripath);
    	if ( 0 > ret )
    	{
    	}
    	ret = cellHttpSendRequest(trans, NULL, 0, NULL);
    	if ( 0 > ret )
    	{
    	}
    	int code = 0;
    	ret = cellHttpResponseGetStatusCode(trans, &code);
    	{
    	}
    
    	ret = cellHttpResponseGetContentLength(trans, &length);
    	if (0 > ret) {
    		if (ret == CELL_HTTP_ERROR_NO_CONTENT_LENGTH) {
    			has_cl = false;
    		} else {
    			ret = -1;
    		}
    	}
    	recvd = 0;
    	if(code == 200)
    	{
    	
    		dialog_ret=0;
    		ret = cellMsgDialogOpen2( type_dialog_yes_no, "Cover image was found, do you want to download it?", dialog_fun1, (void*)0x0000aaaa, NULL );
    		wait_dialog();
    		if(dialog_ret==1){
    			cellFsOpen(path, CELL_FS_O_CREAT|CELL_FS_O_RDWR, &fd, NULL, 0);
    			while ((!has_cl) || (recvd < length))
    			{
    				ret = cellHttpRecvResponse(trans, httpbuffer, BUFFER_SIZE-1, &localRecv);
    				if (0 > ret) {
    					printf("error receiving body... (0x%x)\n\n", ret);
    					ret = -1;
    					goto end;
    				} else if (localRecv == 0) break;
    				recvd += localRecv;
    				httpbuffer[localRecv] = '\0';
    
    				cellFsWrite(fd, (const void *)httpbuffer, localRecv, NULL);
    			}
    			cellFsClose(fd);
    			cellFsChmod(path, 0666);
    		}
    	}
    	else
    	{
    		sprintf(filename, "Encountered a problem while fetching cover\nHTTP error code %d", code);
    		dialog_ret=0;
    		ret = cellMsgDialogOpen2( type_dialog_ok, filename, dialog_fun2, (void*)0x0000aaab, NULL );	
    		wait_dialog();
    	}
    
    
    end:
    	cellHttpDestroyTransaction(trans);
    	cellHttpDestroyClient(client);
    	client = 0;
    	cellHttpEnd();
    	free(httpPool);
    	free(uriPool);
    	did_l1 = 0;
    
    // load_covers reloads current displayed cover so that we refresh after download
    	load_covers();
    Last edited by Jurai2; 10-21-2010 at 10:47 PM

  2. #2
    Registered User Carzone's Avatar
    Join Date
    Oct 2010
    Posts
    4
    Sponsored Links

    Lightbulb

    Sponsored Links
    I didn't test anything but reading a bit of your code, you could "optimise" it a bit

    I think you could regroup the 3 ifs 3dcovers :

    Code:
    char rdr[256];
    if(use_3dcovers == 0)
    	{
    		serverName = REQUEST_URI;
    		sprintf(path, "/dev_hdd0/game/OMAN46756/covers/%s.PNG",menu_list[game_sel].title_id);
    		sprintf(rdr, "http://www.bombsomedodongos.com/covers/%s.PNG",menu_list[game_sel].title_id);
    	}
    	else
    	{
    		serverName = REQUEST_URI_3D;
    		sprintf(path, "/dev_hdd0/game/OMAN46756/covers/3d/%s.PNG",menu_list[game_sel].title_id);
    		sprintf(rdr, "http://www.bombsomedodongos.com/covers/3d/%s.PNG",menu_list[game_sel].title_id);
    	}
    
    	httpPool = malloc(HTTP_POOL_SIZE);
    	ret = cellHttpInit(httpPool, HTTP_POOL_SIZE);	
    	ret = cellHttpCreateClient(&client);
    	ret = cellHttpUtilParseUri(NULL, serverName, NULL, 0, &poolSize);
    	uriPool = MALLOC(poolSize);
    	cellHttpUtilParseUri(&uri, serverName, uriPool, poolSize, NULL);

    And what's with the :
    Code:
    	if ( 0 > ret )
    	{
    	}
    ??

 

Sponsored Links
Affiliates - Contact Us - PS3 Downloads - Privacy Statement - Site Rules - Top - © 2014 PlayStation 3 News