Exemple #1
0
/**
 Dispatch
 checks args and then trys to match against commands

 */
void cmd_dispatch(int argc, char **argv)
{
	int i;

    if(argc < 1) {
        cmd_sendresponse(put_error(501,"Bad Request"), 404);
        cmd_done();
        return;
    }

    for(i = 0; i < sizeof(commands) / sizeof(commands[0]); i++) {
        if(!strcmp(commands[i].name, argv[0])) {
            if(commands[i].fn(argc, argv))
                cmd_done();
                return;
        }else if(!strcmp("playlist", argv[0])) {
        /// @note: this is soon to be deprecated, a backwardcomp for prev version

#ifdef USE_MYSQL
            _mysql_updateStats(g_conn, "init");
            cmd_sendresponse(put_error(200,"Pong"), 200);
            cmd_done();
            return;
#endif
        }
    }
    cmd_sendresponse(put_error(501,"Not implemented"), 404);
    cmd_done();
}
Exemple #2
0
/**
  Cmd pong
  Used when you need to ping the service, and see if its up
  Responds with "pong" if available.
  */
int cmd_pong(int arc, char **argv){


#ifdef USE_MYSQL
            _mysql_updateStats(g_conn, "init");
#endif
            cmd_sendresponse(put_error(200,"Pong"), 200);
            cmd_done();
            return 1;
}
Exemple #3
0
int cmd_search(int argc, char **argv)
{
        char query[1024];
        int i;

        if (argc < 2) {
                search_usage();
                return -1;
        }

        query[0] = 0;
        for(i = 1; i < argc; i++)
                snprintf(query + strlen(query), sizeof(query) - strlen(query), "%s%s",
                         i == 1 ? "" : " ", argv[i]);
#ifdef USE_MYSQL
                _mysql_updateStats(g_conn, "search");
#endif
        sp_search_create(g_session, query, 0, 100, 0, 100, 0, 100, &search_complete, NULL);
        return 0;
}
Exemple #4
0
int cmd_toplist(int argc, char **argv)
{
	sp_toplisttype type;
	sp_toplistregion region;
        char username[252];
        if(argc == 2) {
            if(!strcasecmp(argv[1], "charts"))
                toplist_charts();
                return -1;
        }
	if(argc < 3) {
		toplist_usage();
		return -1;
        }

        if(!strcasecmp(argv[1], "artists"))
		type = SP_TOPLIST_TYPE_ARTISTS;
        else if(!strcasecmp(argv[1], "albums"))
		type = SP_TOPLIST_TYPE_ALBUMS;     
        else if(!strcasecmp(argv[1], "tracks"))
		type = SP_TOPLIST_TYPE_TRACKS;    
        else {
		toplist_usage();
		return -1;
	}


        if(!strcasecmp(argv[2], "global"))
                region = SP_TOPLIST_REGION_EVERYWHERE;
        else if(!strcasecmp(argv[2], "user")){
                region = SP_TOPLIST_REGION_USER;

                if(argc != 4 || strlen(argv[3]) < 0) {
                        toplist_usage();
                        return -1;
                }
                strcpy(username, argv[3]);

        }else if(!strcasecmp(argv[2], "region")) {

		if(argc != 4 || strlen(argv[3]) != 2) {
			toplist_usage();
			return -1;
		}

                int i;
                for (i = 0; argv[3][i]; i++)
                    argv[3][i] = toupper(argv[3][i]);

		region = SP_TOPLIST_REGION(argv[3][0], argv[3][1]);
	} else {
		toplist_usage();
		return -1;
        }
        
#ifdef USE_MYSQL
                _mysql_updateStats(g_conn, "toplist");
#endif        

        sp_toplistbrowse_create(g_session, type, region, username, got_toplist, NULL);
	return 0;
}