author | Michael Krelin <hacker@klever.net> | 2010-07-11 12:18:29 (UTC) |
---|---|---|
committer | Michael Krelin <hacker@klever.net> | 2010-07-11 12:18:29 (UTC) |
commit | f2a426f8b215c396f2430a98b2929668398f3a51 (patch) (side-by-side diff) | |
tree | abc8795c9480429e0ca381ea49ff4bb04aafee12 | |
parent | 82ebada6676dcea2d08e14b81365da3ca30c3dd0 (diff) | |
download | kingate-f2a426f8b215c396f2430a98b2929668398f3a51.zip kingate-f2a426f8b215c396f2430a98b2929668398f3a51.tar.gz kingate-f2a426f8b215c396f2430a98b2929668398f3a51.tar.bz2 |
cookie: time-based set_expires variants
Signed-off-by: Michael Krelin <hacker@klever.net>
-rw-r--r-- | include/kingate/cookies.h | 2 | ||||
-rw-r--r-- | src/cookies.cc | 10 |
2 files changed, 12 insertions, 0 deletions
diff --git a/include/kingate/cookies.h b/include/kingate/cookies.h index a1e813c..cba5aff 100644 --- a/include/kingate/cookies.h +++ b/include/kingate/cookies.h @@ -93,12 +93,14 @@ namespace kingate { * @param e expiration time. * @see get_expires() * @see has_expires() * @see unset_expires() */ void set_expires(const string& e); + void set_expires_time(time_t etime); + void set_expires_in(time_t esecs); /** * get cookie parameter. * @param p parameter name. * @return parameter value. * @see _set_string() diff --git a/src/cookies.cc b/src/cookies.cc index 1ee4f7c..3215271 100644 --- a/src/cookies.cc +++ b/src/cookies.cc @@ -93,12 +93,22 @@ namespace kingate { erase("secure"); } void cookie::set_expires(const string& e) { (*this)["expires"] = e; } + void cookie::set_expires_time(time_t etime) { + struct tm etm; + char e[64]; + if(strftime(e,sizeof(e)-1,"%a, %d %b %Y:%M:%S GMT",gmtime_r(&etime,&etm))) + set_expires(e); + /* TODO: handle error */ + } + void cookie::set_expires_in(time_t esecs) { + set_expires_time(time(0)+esecs); + } const string& cookie::_get_string(const string& s) const { const_iterator i = find(s); if(i==end()) throw exception_notfound(CODEPOINT,"No parameter set"); return i->second; |