Ignore:
Timestamp:
2008-04-17T13:52:05+12:00 (16 years ago)
Author:
mdewsnip
Message:

Now each action checks for invalid arguments in the params structure and deletes any that aren't valid, so they don't get into the "<request>" tag in the resulting XML and cause OAI validation errors. By DL Consulting Ltd.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • gsdl/trunk/src/oaiservr/abstractlistaction.cpp

    r11733 r15198  
    66bool abstractlistaction::validateAction(recptproto *protocol, oaiargs &params, int &numArgs)
    77{
     8  // Remove any parameters that aren't valid for this action
     9  text_tmap::const_iterator param_iterator = params.begin();
     10  while (param_iterator != params.end())
     11  {
     12    if (param_iterator->first != "verb" &&
     13    param_iterator->first != "from" &&
     14    param_iterator->first != "until" &&
     15    param_iterator->first != "set" &&
     16    param_iterator->first != "resumptionToken" &&
     17    param_iterator->first != "metadataPrefix")
     18    {
     19      params.erase(param_iterator->first);
     20    }
     21
     22    param_iterator++;
     23  }
     24
    825  text_t from  = params["from"];
    926  text_t until = params["until"];
     
    1936    if(from.size() != 10){
    2037      this->errorType = "badArgument";
    21       return false;
     38      params.erase("from");
    2239    }
    2340    else{
    2441      if(from[4] != '-' || from[7] != '-'){
    2542    this->errorType = "badArgument";
    26     return false;
     43    params.erase("from");
    2744      }
    2845    }
     
    3451    if(until.size() != 10){
    3552      this->errorType = "badArgument";
    36       return false;
     53      params.erase("until");
    3754    }
    3855    else{
    3956      if(until[4] != '-' || until[7] != '-'){
    4057    this->errorType = "badArgument";
    41     return false;
     58    params.erase("until");
    4259      }
    4360    }
    4461    ++numArgs; // Increase valid args count
     62  }
     63
     64  if (this->errorType == "badArgument")
     65  {
     66    return false;
    4567  }
    4668
Note: See TracChangeset for help on using the changeset viewer.