blob: 80e2fb22daf4b00259e2756eb736185a1db2c9ae [file] [log] [blame]
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/ntp_snippets/ntp_snippet.h"
#include "base/values.h"
namespace {
const char kUrl[] = "url";
const char kSiteTitle[] = "site_title";
const char kTitle[] = "title";
const char kFaviconUrl[] = "favicon_url";
const char kSalientImageUrl[] = "thumbnailUrl";
const char kSnippet[] = "snippet";
const char kPublishDate[] = "creationTimestampSec";
const char kExpiryDate[] = "expiryTimestampSec";
} // namespace
namespace ntp_snippets {
NTPSnippet::NTPSnippet(const GURL& url) : url_(url) {
DCHECK(url_.is_valid());
}
NTPSnippet::~NTPSnippet() {}
// static
scoped_ptr<NTPSnippet> NTPSnippet::CreateFromDictionary(
const base::DictionaryValue& dict) {
// Need at least the url.
std::string url_str;
if (!dict.GetString("url", &url_str))
return nullptr;
GURL url(url_str);
if (!url.is_valid())
return nullptr;
scoped_ptr<NTPSnippet> snippet(new NTPSnippet(url));
std::string site_title;
if (dict.GetString(kSiteTitle, &site_title))
snippet->set_site_title(site_title);
std::string title;
if (dict.GetString(kTitle, &title))
snippet->set_title(title);
std::string favicon_url;
if (dict.GetString(kFaviconUrl, &favicon_url))
snippet->set_favicon_url(GURL(favicon_url));
std::string salient_image_url;
if (dict.GetString(kSalientImageUrl, &salient_image_url))
snippet->set_salient_image_url(GURL(salient_image_url));
std::string snippet_str;
if (dict.GetString(kSnippet, &snippet_str))
snippet->set_snippet(snippet_str);
int creation_timestamp;
if (dict.GetInteger(kPublishDate, &creation_timestamp)) {
snippet->set_publish_date(base::Time::UnixEpoch() +
base::TimeDelta::FromSeconds(creation_timestamp));
}
int expiry_timestamp;
if (dict.GetInteger(kExpiryDate, &expiry_timestamp)) {
snippet->set_expiry_date(base::Time::UnixEpoch() +
base::TimeDelta::FromSeconds(expiry_timestamp));
}
return snippet;
}
scoped_ptr<base::DictionaryValue> NTPSnippet::ToDictionary() const {
scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue);
dict->SetString(kUrl, url_.spec());
if (!site_title_.empty())
dict->SetString(kSiteTitle, site_title_);
if (!title_.empty())
dict->SetString(kTitle, title_);
if (favicon_url_.is_valid())
dict->SetString(kFaviconUrl, favicon_url_.spec());
if (salient_image_url_.is_valid())
dict->SetString(kSalientImageUrl, salient_image_url_.spec());
if (!snippet_.empty())
dict->SetString(kSnippet, snippet_);
if (!publish_date_.is_null()) {
dict->SetInteger(kPublishDate,
(publish_date_ - base::Time::UnixEpoch()).InSeconds());
}
if (!expiry_date_.is_null()) {
dict->SetInteger(kExpiryDate,
(expiry_date_ - base::Time::UnixEpoch()).InSeconds());
}
return dict;
}
} // namespace ntp_snippets