// Copyright (c) 2006-2008 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 "net/ftp/ftp_auth_cache.h"

#include "base/string_util.h"
#include "googleurl/src/gurl.h"

namespace net {

AuthData* FtpAuthCache::Lookup(const GURL& origin) {
  AuthCacheMap::iterator iter = cache_.find(MakeKey(origin));
  return (iter == cache_.end()) ? NULL : iter->second;
}

void FtpAuthCache::Add(const GURL& origin, AuthData* value) {
  cache_[MakeKey(origin)] = value;

  // TODO(eroman): enforce a maximum number of entries.
}

void FtpAuthCache::Remove(const GURL& origin) {
  cache_.erase(MakeKey(origin));
}

// static
FtpAuthCache::AuthCacheKey FtpAuthCache::MakeKey(const GURL& origin) {
  DCHECK(origin.SchemeIs("ftp"));
  DCHECK(origin.GetOrigin() == origin);
  return origin.spec();
}

}  // namespace net