Add in a skeleton App Engine project that still does OAuth 1.0
diff --git a/apiclient/ext/appengine.py b/apiclient/ext/appengine.py
index a780d0e..ead4d29 100644
--- a/apiclient/ext/appengine.py
+++ b/apiclient/ext/appengine.py
@@ -88,3 +88,48 @@
def empty(self, value):
return not value
+
+
+class StorageByKeyName(object):
+ """Store and retrieve a single credential to and from
+ the App Engine datastore.
+
+ This Storage helper presumes the Credentials
+ have been stored as a CredenialsProperty
+ on a datastore model class, and that entities
+ are stored by key_name.
+ """
+
+ def __init__(self, model, key_name, property_name):
+ """Constructor for Storage.
+
+ Args:
+ model: db.Model, model class
+ key_name: string, key name for the entity that has the credentials
+ property_name: string, name of the property that is an CredentialsProperty
+ """
+ self.model = model
+ self.key_name = key_name
+ self.property_name = property_name
+
+ def get(self):
+ """Retrieve Credential from datastore.
+
+ Returns:
+ Credentials
+ """
+ entity = self.model.get_or_insert(self.key_name)
+ credential = getattr(entity, self.property_name)
+ if credential and hasattr(credential, 'set_store'):
+ credential.set_store(self.put)
+ return credential
+
+ def put(self, credentials):
+ """Write a Credentials to the datastore.
+
+ Args:
+ credentials: Credentials, the credentials to store.
+ """
+ entity = self.model.get_or_insert(self.key_name)
+ setattr(entity, self.property_name, credentials)
+ entity.put()