void Xport::AddCart() { RDCart *cart; RDGroup *group; QString group_name; QString type; RDCart::Type cart_type=RDCart::All; int cart_number=0; // // Verify Post // if(!xport_post->getValue("GROUP_NAME",&group_name)) { XmlExit("Missing GROUP_NAME",400); } if(!xport_post->getValue("TYPE",&type)) { XmlExit("Missing TYPE",400); } if(type.lower()=="audio") { cart_type=RDCart::Audio; } else { if(type.lower()=="macro") { cart_type=RDCart::Macro; } else { XmlExit("Invalid TYPE",400); } } xport_post->getValue("CART_NUMBER",&cart_number); // // Verify User Perms // if(!rda->user()->groupAuthorized(group_name)) { XmlExit("No such group",404); } group=new RDGroup(group_name); if(cart_number==0) { if((cart_number=group->nextFreeCart())==0) { delete group; XmlExit("No free carts in group",500); } } if(!group->cartNumberValid(cart_number)) { delete group; XmlExit("Cart number out of range for group",401); } delete group; if(!rda->user()->createCarts()) { XmlExit("Unauthorized",401); } // // Process Request // cart=new RDCart(cart_number); if(cart->exists()) { delete cart; XmlExit("Cart already exists",403); } if(!cart->create(group_name,cart_type)) { delete cart; XmlExit("Unable to create cart",500); } printf("Content-type: application/xml\n"); printf("Status: 200\n\n"); printf("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n"); printf("<cartAdd>\n"); if(cart->exists()) { printf("%s",(const char *)cart->xml(false,true)); } delete cart; printf("</cartAdd>\n"); Exit(0); }