Replace expirationTimeoutSec with expirationTime
expirationTimeoutSec was relative time.
expirationTime is absolute j2000 time.
BUG: 27313743
Change-Id: I9a6d04cf5c9f623a36e815dc2466cf93d9a6a608
Reviewed-on: https://weave-review.googlesource.com/2711
Reviewed-by: Alex Vakulenko <avakulenko@google.com>
diff --git a/src/access_api_handler.cc b/src/access_api_handler.cc
index 9d97d9e..fc7b97b 100644
--- a/src/access_api_handler.cc
+++ b/src/access_api_handler.cc
@@ -11,6 +11,7 @@
#include "src/commands/schema_constants.h"
#include "src/data_encoding.h"
#include "src/json_error_codes.h"
+#include "src/utils.h"
namespace weave {
@@ -21,7 +22,7 @@
const char kStateCapacity[] = "_accessRevocationList.capacity";
const char kUserId[] = "userId";
const char kApplicationId[] = "applicationId";
-const char kExpirationTimeout[] = "expirationTimeoutSec";
+const char kExpirationTime[] = "expirationTime";
const char kBlackList[] = "revocationListEntries";
bool GetIds(const base::DictionaryValue& parameters,
@@ -64,7 +65,7 @@
"applicationId": {
"type": "string"
},
- "expirationTimeoutSec": {
+ "expirationTime": {
"type": "integer"
}
}
@@ -83,6 +84,9 @@
},
"applicationId": {
"type": "string"
+ },
+ "expirationTime": {
+ "type": "integer"
}
},
"additionalProperties": false
@@ -128,13 +132,15 @@
return;
}
- int timeout_sec = 0;
- parameters.GetInteger(kExpirationTimeout, &timeout_sec);
+ int time_j2k = 0;
+ if (!parameters.GetInteger(kExpirationTime, &time_j2k)) {
+ Error::AddToPrintf(&error, FROM_HERE, errors::commands::kInvalidPropValue,
+ "Expiration time is missing");
+ command->Abort(error.get(), nullptr);
+ return;
+ }
- base::Time expiration =
- base::Time::Now() + base::TimeDelta::FromSeconds(timeout_sec);
-
- manager_->Block(user_id, app_id, expiration,
+ manager_->Block(user_id, app_id, FromJ2000Time(time_j2k),
base::Bind(&AccessApiHandler::OnCommandDone,
weak_ptr_factory_.GetWeakPtr(), cmd));
}
diff --git a/src/access_api_handler_unittest.cc b/src/access_api_handler_unittest.cc
index 25dd4da..79f2d49 100644
--- a/src/access_api_handler_unittest.cc
+++ b/src/access_api_handler_unittest.cc
@@ -104,7 +104,7 @@
"applicationId": {
"type": "string"
},
- "expirationTimeoutSec": {
+ "expirationTime": {
"type": "integer"
}
}
@@ -123,6 +123,9 @@
},
"applicationId": {
"type": "string"
+ },
+ "expirationTime": {
+ "type": "integer"
}
},
"additionalProperties": false
@@ -159,7 +162,7 @@
'parameters': {
'userId': 'AQID',
'applicationId': 'AwQF',
- 'expirationTimeoutSec': 1234
+ 'expirationTime': 1234
}
})");
diff --git a/src/privet/auth_manager.cc b/src/privet/auth_manager.cc
index 795dafa..90cf62b 100644
--- a/src/privet/auth_manager.cc
+++ b/src/privet/auth_manager.cc
@@ -17,6 +17,7 @@
#include "src/privet/constants.h"
#include "src/privet/openssl_utils.h"
#include "src/string_utils.h"
+#include "src/utils.h"
extern "C" {
#include "third_party/libuweave/src/macaroon.h"
@@ -28,20 +29,11 @@
namespace {
-const time_t kJ2000ToTimeT = 946684800;
const size_t kMaxMacaroonSize = 1024;
const size_t kMaxPendingClaims = 10;
const char kInvalidTokenError[] = "invalid_token";
const int kSessionIdTtlMinutes = 1;
-uint32_t ToJ2000Time(const base::Time& time) {
- return std::max(time.ToTimeT(), kJ2000ToTimeT) - kJ2000ToTimeT;
-}
-
-base::Time FromJ2000Time(uint32_t time) {
- return base::Time::FromTimeT(time + kJ2000ToTimeT);
-}
-
template <class T>
void AppendToArray(T value, std::vector<uint8_t>* array) {
auto begin = reinterpret_cast<const uint8_t*>(&value);
diff --git a/src/utils.cc b/src/utils.cc
index 28828d7..5d1c3e3 100644
--- a/src/utils.cc
+++ b/src/utils.cc
@@ -26,6 +26,8 @@
const char kErrorCodeKey[] = "code";
const char kErrorMessageKey[] = "message";
+const time_t kJ2000ToTimeT = 946684800;
+
} // anonymous namespace
namespace errors {
@@ -69,4 +71,12 @@
return output;
}
+uint32_t ToJ2000Time(const base::Time& time) {
+ return std::max(time.ToTimeT(), kJ2000ToTimeT) - kJ2000ToTimeT;
+}
+
+base::Time FromJ2000Time(uint32_t time) {
+ return base::Time::FromTimeT(time + kJ2000ToTimeT);
+}
+
} // namespace weave
diff --git a/src/utils.h b/src/utils.h
index 99d7bda..40c76b4 100644
--- a/src/utils.h
+++ b/src/utils.h
@@ -8,6 +8,7 @@
#include <memory>
#include <string>
+#include <base/time/time.h>
#include <base/values.h>
#include <weave/error.h>
@@ -31,6 +32,9 @@
std::unique_ptr<base::DictionaryValue> ErrorInfoToJson(const Error& error);
+uint32_t ToJ2000Time(const base::Time& time);
+base::Time FromJ2000Time(uint32_t time);
+
} // namespace weave
#endif // LIBWEAVE_SRC_UTILS_H_