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

Side by Side Diff: chrome/common/extensions/docs/server2/samples_data_source.py

Issue 23526077: [DocServer] Fixed Sample Links (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Bumped Server's version Created 7 years, 2 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
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import hashlib 5 import hashlib
6 import json 6 import json
7 import logging 7 import logging
8 import re 8 import re
9 import traceback
9 10
10 from compiled_file_system import CompiledFileSystem 11 from compiled_file_system import CompiledFileSystem
11 import third_party.json_schema_compiler.json_comment_eater as json_comment_eater 12 import third_party.json_schema_compiler.json_comment_eater as json_comment_eater
12 import third_party.json_schema_compiler.model as model 13 import third_party.json_schema_compiler.model as model
13 import url_constants 14 import url_constants
14 15
15 DEFAULT_ICON_PATH = 'images/sample-default-icon.png' 16 DEFAULT_ICON_PATH = 'images/sample-default-icon.png'
16 17
17 class SamplesDataSource(object): 18 class SamplesDataSource(object):
18 '''Constructs a list of samples and their respective files and api calls. 19 '''Constructs a list of samples and their respective files and api calls.
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 icon_base = sample_base_path 145 icon_base = sample_base_path
145 download_url = sample_base_path + '.zip' 146 download_url = sample_base_path + '.zip'
146 147
147 manifest_data = self._GetDataFromManifest(sample_path, file_system) 148 manifest_data = self._GetDataFromManifest(sample_path, file_system)
148 if manifest_data['icon'] is None: 149 if manifest_data['icon'] is None:
149 icon_path = '%s/static/%s' % (self._base_path, DEFAULT_ICON_PATH) 150 icon_path = '%s/static/%s' % (self._base_path, DEFAULT_ICON_PATH)
150 else: 151 else:
151 icon_path = '%s/%s' % (icon_base, manifest_data['icon']) 152 icon_path = '%s/%s' % (icon_base, manifest_data['icon'])
152 manifest_data.update({ 153 manifest_data.update({
153 'icon': icon_path, 154 'icon': icon_path,
154 'id': hashlib.md5(url).hexdigest(),
155 'download_url': download_url, 155 'download_url': download_url,
156 'url': url, 156 'url': url,
157 'files': [f.replace(sample_path + '/', '') for f in sample_files], 157 'files': [f.replace(sample_path + '/', '') for f in sample_files],
158 'api_calls': api_calls 158 'api_calls': api_calls
159 }) 159 })
160 samples_list.append(manifest_data) 160 samples_list.append(manifest_data)
161 161
162 return samples_list 162 return samples_list
163 163
164 def __init__(self, 164 def __init__(self,
165 extensions_cache, 165 extensions_cache,
166 apps_cache, 166 apps_cache,
167 extension_samples_path, 167 extension_samples_path,
168 base_path, 168 base_path,
169 request): 169 request):
170 self._extensions_cache = extensions_cache 170 self._extensions_cache = extensions_cache
171 self._apps_cache = apps_cache 171 self._apps_cache = apps_cache
172 self._extension_samples_path = extension_samples_path 172 self._extension_samples_path = extension_samples_path
173 self._base_path = base_path 173 self._base_path = base_path
174 self._request = request 174 self._request = request
175 175
176 def _GetSampleId(self, sample_name):
177 return sample_name.lower().replace(' ', '-')
178
176 def _GetAcceptedLanguages(self): 179 def _GetAcceptedLanguages(self):
177 accept_language = self._request.headers.get('Accept-Language', None) 180 accept_language = self._request.headers.get('Accept-Language', None)
178 if accept_language is None: 181 if accept_language is None:
179 return [] 182 return []
180 return [lang_with_q.split(';')[0].strip() 183 return [lang_with_q.split(';')[0].strip()
181 for lang_with_q in accept_language.split(',')] 184 for lang_with_q in accept_language.split(',')]
182 185
183 def FilterSamples(self, key, api_name): 186 def FilterSamples(self, key, api_name):
184 '''Fetches and filters the list of samples specified by |key|, returning 187 '''Fetches and filters the list of samples specified by |key|, returning
185 only the samples that use the API |api_name|. |key| is either 'apps' or 188 only the samples that use the API |api_name|. |key| is either 'apps' or
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
220 name_key = name[len('__MSG_'):-len('__')] 223 name_key = name[len('__MSG_'):-len('__')]
221 description_key = description[len('__MSG_'):-len('__')] 224 description_key = description[len('__MSG_'):-len('__')]
222 locale = sample_data['default_locale'] 225 locale = sample_data['default_locale']
223 for lang in self._GetAcceptedLanguages(): 226 for lang in self._GetAcceptedLanguages():
224 if lang in sample_data['locales']: 227 if lang in sample_data['locales']:
225 locale = lang 228 locale = lang
226 break 229 break
227 locale_data = sample_data['locales'][locale] 230 locale_data = sample_data['locales'][locale]
228 sample_data['name'] = locale_data[name_key]['message'] 231 sample_data['name'] = locale_data[name_key]['message']
229 sample_data['description'] = locale_data[description_key]['message'] 232 sample_data['description'] = locale_data[description_key]['message']
233 sample_data['id'] = self._GetSampleId(sample_data['name'])
230 except Exception as e: 234 except Exception as e:
231 logging.error(e) 235 logging.error(traceback.format_exc())
232 # Revert the sample to the original dict. 236 # Revert the sample to the original dict.
233 sample_data = dict_ 237 sample_data = dict_
234 return_list.append(sample_data) 238 return_list.append(sample_data)
235 else: 239 else:
240 dict_['id'] = self._GetSampleId(name)
236 return_list.append(dict_) 241 return_list.append(dict_)
237 return return_list 242 return return_list
238 243
239 def get(self, key): 244 def get(self, key):
240 return { 245 return {
241 'apps': lambda: self._CreateSamplesDict('apps'), 246 'apps': lambda: self._CreateSamplesDict('apps'),
242 'extensions': lambda: self._CreateSamplesDict('extensions') 247 'extensions': lambda: self._CreateSamplesDict('extensions')
243 }.get(key, lambda: {})() 248 }.get(key, lambda: {})()
OLDNEW
« no previous file with comments | « chrome/common/extensions/docs/server2/cron.yaml ('k') | chrome/common/extensions/docs/static/js/samples.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698