| OLD | NEW |
| 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 json | 5 import json |
| 6 import logging | 6 import logging |
| 7 import operator | 7 import operator |
| 8 | 8 |
| 9 from appengine_url_fetcher import AppEngineUrlFetcher | 9 from appengine_url_fetcher import AppEngineUrlFetcher |
| 10 import url_constants | 10 import url_constants |
| 11 | 11 |
| 12 class ChannelInfo(object): | 12 class ChannelInfo(object): |
| 13 def __init__(self, channel, branch, version): | 13 def __init__(self, channel, branch, version): |
| 14 self.channel = channel | 14 self.channel = channel |
| 15 self.branch = branch | 15 self.branch = branch |
| 16 self.version = version | 16 self.version = version |
| 17 | 17 |
| 18 class BranchUtility(object): | 18 class BranchUtility(object): |
| 19 def __init__(self, fetch_url, history_url, fetcher, object_store_creator): | 19 def __init__(self, fetch_url, history_url, fetcher, object_store_creator): |
| 20 self._fetcher = fetcher | 20 self._fetcher = fetcher |
| 21 # BranchUtility is obviously cross-channel, so set the channel to None. | 21 def create_object_store(category): |
| 22 self._branch_object_store = object_store_creator.Create(BranchUtility, | 22 return object_store_creator.Create(BranchUtility, category=category) |
| 23 category='branch', | 23 self._branch_object_store = create_object_store('branch') |
| 24 channel=None) | 24 self._version_object_store = create_object_store('version') |
| 25 self._version_object_store = object_store_creator.Create(BranchUtility, | |
| 26 category='version', | |
| 27 channel=None) | |
| 28 self._fetch_result = self._fetcher.FetchAsync(fetch_url) | 25 self._fetch_result = self._fetcher.FetchAsync(fetch_url) |
| 29 self._history_result = self._fetcher.FetchAsync(history_url) | 26 self._history_result = self._fetcher.FetchAsync(history_url) |
| 30 | 27 |
| 31 @staticmethod | 28 @staticmethod |
| 32 def GetAllChannelNames(): | 29 def GetAllChannelNames(): |
| 33 return ('stable', 'beta', 'dev', 'trunk') | 30 return ('stable', 'beta', 'dev', 'trunk') |
| 34 | 31 |
| 35 @staticmethod | 32 @staticmethod |
| 36 def NewestChannel(channels): | 33 def NewestChannel(channels): |
| 37 for channel in reversed(BranchUtility.GetAllChannelNames()): | 34 for channel in reversed(BranchUtility.GetAllChannelNames()): |
| (...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 166 version_json = json.loads(self._history_result.Get().content) | 163 version_json = json.loads(self._history_result.Get().content) |
| 167 latest_version = 0 | 164 latest_version = 0 |
| 168 for entry in version_json['events']: | 165 for entry in version_json['events']: |
| 169 version_title = entry['title'].split(' - ')[1].split('.') | 166 version_title = entry['title'].split(' - ')[1].split('.') |
| 170 version = int(version_title[0]) | 167 version = int(version_title[0]) |
| 171 if version > latest_version: | 168 if version > latest_version: |
| 172 latest_version = version | 169 latest_version = version |
| 173 | 170 |
| 174 self._version_object_store.Set('latest', latest_version) | 171 self._version_object_store.Set('latest', latest_version) |
| 175 return latest_version | 172 return latest_version |
| OLD | NEW |