Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4)

Side by Side Diff: third_party/oauth2client/file.py

Issue 183793010: Added OAuth2 authentication to apply_issue (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/depot_tools.git@master
Patch Set: Fixed README Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 # Copyright (C) 2010 Google Inc.
2 #
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
6 #
7 # http://www.apache.org/licenses/LICENSE-2.0
8 #
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
14
15 """Utilities for OAuth.
16
17 Utilities for making it easier to work with OAuth 2.0
18 credentials.
19 """
20
21 __author__ = 'jcgregorio@google.com (Joe Gregorio)'
22
23 import os
24 import stat
25 import threading
26
27 from anyjson import simplejson
28 from client import Storage as BaseStorage
29 from client import Credentials
30
31
32 class Storage(BaseStorage):
33 """Store and retrieve a single credential to and from a file."""
34
35 def __init__(self, filename):
36 self._filename = filename
37 self._lock = threading.Lock()
38
39 def acquire_lock(self):
40 """Acquires any lock necessary to access this Storage.
41
42 This lock is not reentrant."""
43 self._lock.acquire()
44
45 def release_lock(self):
46 """Release the Storage lock.
47
48 Trying to release a lock that isn't held will result in a
49 RuntimeError.
50 """
51 self._lock.release()
52
53 def locked_get(self):
54 """Retrieve Credential from file.
55
56 Returns:
57 oauth2client.client.Credentials
58 """
59 credentials = None
60 try:
61 f = open(self._filename, 'rb')
62 content = f.read()
63 f.close()
64 except IOError:
65 return credentials
66
67 try:
68 credentials = Credentials.new_from_json(content)
69 credentials.set_store(self)
70 except ValueError:
71 pass
72
73 return credentials
74
75 def _create_file_if_needed(self):
76 """Create an empty file if necessary.
77
78 This method will not initialize the file. Instead it implements a
79 simple version of "touch" to ensure the file has been created.
80 """
81 if not os.path.exists(self._filename):
82 old_umask = os.umask(0177)
83 try:
84 open(self._filename, 'a+b').close()
85 finally:
86 os.umask(old_umask)
87
88
89 def locked_put(self, credentials):
90 """Write Credentials to file.
91
92 Args:
93 credentials: Credentials, the credentials to store.
94 """
95
96 self._create_file_if_needed()
97 f = open(self._filename, 'wb')
98 f.write(credentials.to_json())
99 f.close()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698