ftp_auth_cache.h revision 5821806d5e7f356e8fa4b058a389a808ea183019
1// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef NET_FTP_FTP_AUTH_CACHE_H_
6#define NET_FTP_FTP_AUTH_CACHE_H_
7
8#include <list>
9
10#include "googleurl/src/gurl.h"
11#include "net/base/auth.h"
12#include "net/base/net_export.h"
13
14namespace net {
15
16// The FtpAuthCache class is a simple cache structure to store authentication
17// information for ftp. Provides lookup, insertion, and deletion of entries.
18// The parameter for doing lookups, insertions, and deletions is a GURL of the
19// server's address (not a full URL with path, since FTP auth isn't per path).
20// For example:
21//   GURL("ftp://myserver") -- OK (implied port of 21)
22//   GURL("ftp://myserver:21") -- OK
23//   GURL("ftp://myserver/PATH") -- WRONG, paths not allowed
24class NET_EXPORT_PRIVATE FtpAuthCache {
25 public:
26  // Maximum number of entries we allow in the cache.
27  static const size_t kMaxEntries;
28
29  struct Entry {
30    Entry(const GURL& origin, const AuthCredentials& credentials);
31    ~Entry();
32
33    GURL origin;
34    AuthCredentials credentials;
35  };
36
37  FtpAuthCache();
38  ~FtpAuthCache();
39
40  // Return Entry corresponding to given |origin| or NULL if not found.
41  Entry* Lookup(const GURL& origin);
42
43  // Add an entry for |origin| to the cache using |credentials|. If there is
44  // already an entry for |origin|, it will be overwritten.
45  void Add(const GURL& origin, const AuthCredentials& credentials);
46
47  // Remove the entry for |origin| from the cache, if one exists and matches
48  // |credentials|.
49  void Remove(const GURL& origin, const AuthCredentials& credentials);
50
51 private:
52  typedef std::list<Entry> EntryList;
53
54  // Internal representation of cache, an STL list. This makes lookups O(n),
55  // but we expect n to be very low.
56  EntryList entries_;
57};
58
59}  // namespace net
60
61#endif  // NET_FTP_FTP_AUTH_CACHE_H_
62