data_source.py revision 58537e28ecd584eab876aee8be7156509866d23a
1# Copyright 2013 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
6class DataSource(object):
7  '''
8  Defines an abstraction for all DataSources.
9
10  DataSources must have two public methods, get and Cron. A DataSource is
11  initialized with a ServerInstance and a Request (defined in servlet.py).
12  Anything in the ServerInstance can be used by the DataSource. Request is None
13  when DataSources are created for Cron.
14
15  DataSources are used to provide templates with access to data. DataSources may
16  not access other DataSources and any logic or data that is useful to other
17  DataSources must be moved to a different class.
18  '''
19  def __init__(self, server_instance, request):
20    pass
21
22  def Cron(self):
23    '''Must cache all files needed by |get| to persist them. Called on a live
24    file system and can access files not in cache. |request| will be None.
25    '''
26    raise NotImplementedError(self.__class__)
27
28  def get(self, key):
29    '''Returns a dictionary or list that can be consumed by a template. Called
30    on an offline file system and can only access files in the cache.
31    '''
32    raise NotImplementedError(self.__class__)
33