Skip to content

Commit

Permalink
Merge pull request #221 from microsoft/dev
Browse files Browse the repository at this point in the history
5.0.0b7 - fix issue where some headers weren't getting set on request and other minor fixes.
  • Loading branch information
tedchamb authored May 21, 2019
2 parents 133bccf + f48993c commit 143ccaf
Show file tree
Hide file tree
Showing 30 changed files with 347 additions and 199 deletions.
2 changes: 1 addition & 1 deletion azure-devops/azure/devops/_file_cache.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ def load(self):
try:
if os.path.isfile(self.file_name):
if self.max_age > 0 and os.stat(self.file_name).st_mtime + self.max_age < time.time():
logger.debug('Cache file expired: %s', file=self.file_name)
logger.debug('Cache file expired: %s', self.file_name)
os.remove(self.file_name)
else:
logger.debug('Loading cache file: %s', self.file_name)
Expand Down
6 changes: 5 additions & 1 deletion azure-devops/azure/devops/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,8 @@ def _send_request(self, request, headers=None, content=None, media_type=None, **
return response

def _send(self, http_method, location_id, version, route_values=None,
query_parameters=None, content=None, media_type='application/json', accept_media_type='application/json'):
query_parameters=None, content=None, media_type='application/json', accept_media_type='application/json',
additional_headers=None):
request = self._create_request_message(http_method=http_method,
location_id=location_id,
route_values=route_values,
Expand All @@ -88,6 +89,9 @@ def _send(self, http_method, location_id, version, route_values=None,
# Construct headers
headers = {'Content-Type': media_type + '; charset=utf-8',
'Accept': accept_media_type + ';api-version=' + negotiated_version}
if additional_headers is not None:
for key in additional_headers:
headers[key] = str(additional_headers[key])
if self.config.additional_headers is not None:
for key in self.config.additional_headers:
headers[key] = self.config.additional_headers[key]
Expand Down
12 changes: 12 additions & 0 deletions azure-devops/azure/devops/connection.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ def __init__(self, base_url=None, creds=None, user_agent=None):
self.clients = ClientFactory(self)
self.clients_v5_0 = ClientFactoryV5_0(self)
self.clients_v5_1 = ClientFactoryV5_1(self)
self.use_fiddler = False

def get_client(self, client_type):
"""get_client.
Expand All @@ -57,6 +58,8 @@ def _get_client_instance(self, client_class):
url = self._get_url_for_client_instance(client_class)
client = client_class(url, self._creds)
client.add_user_agent(self._addition_user_agent)
if self.use_fiddler:
self._configure_client_for_fiddler(client)
return client

def _get_url_for_client_instance(self, client_class):
Expand Down Expand Up @@ -89,6 +92,8 @@ def _get_deployment_resource_area_from_sps(self, resource_id):
if resource_id in _deployment_level_resource_areas:
return _deployment_level_resource_areas[resource_id]
location_client = LocationClient(sps_url, self._creds)
if self.use_fiddler:
self._configure_client_for_fiddler(location_client)
resource_area = location_client.get_resource_area(area_id=resource_id)
_deployment_level_resource_areas[resource_id] = resource_area
return resource_area
Expand All @@ -99,6 +104,8 @@ def authenticate(self):
def _get_resource_areas(self, force=False):
if self._resource_areas is None or force:
location_client = LocationClient(self.base_url, self._creds)
if self.use_fiddler:
self._configure_client_for_fiddler(location_client)
if not force and RESOURCE_FILE_CACHE[location_client.normalized_url]:
try:
logger.debug('File cache hit for resources on: %s', location_client.normalized_url)
Expand All @@ -125,6 +132,11 @@ def _get_resource_areas(self, force=False):
def _combine_url(part1, part2):
return part1.rstrip('/') + '/' + part2.strip('/')

@staticmethod
def _configure_client_for_fiddler(client):
client.config.connection.verify = False
client.config.proxies.add(protocol='https', proxy_url='https://127.0.0.1:8888')


_deployment_level_resource_areas = {}
sps_url = 'https://app.vssps.visualstudio.com'
4 changes: 4 additions & 0 deletions azure-devops/azure/devops/released/wiki/wiki_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -109,12 +109,16 @@ def create_or_update_page(self, parameters, project, wiki_identifier, path, vers
query_parameters['path'] = self._serialize.query('path', path, 'str')
if comment is not None:
query_parameters['comment'] = self._serialize.query('comment', comment, 'str')
additional_headers = {}
if version is not None:
additional_headers['If-Match'] = version
content = self._serialize.body(parameters, 'WikiPageCreateOrUpdateParameters')
response = self._send(http_method='PUT',
location_id='25d3fbc7-fe3d-46cb-b5a5-0b6f79caf27b',
version='5.0',
route_values=route_values,
query_parameters=query_parameters,
additional_headers=additional_headers,
content=content)
response_object = models.WikiPageResponse()
response_object.page = self._deserialize('WikiPage', response)
Expand Down
14 changes: 13 additions & 1 deletion azure-devops/azure/devops/v5_0/dashboard/dashboard_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -347,10 +347,14 @@ def get_widgets(self, team_context, dashboard_id, eTag=None):
route_values['team'] = self._serialize.url('team', team, 'string')
if dashboard_id is not None:
route_values['dashboardId'] = self._serialize.url('dashboard_id', dashboard_id, 'str')
additional_headers = {}
if eTag is not None:
additional_headers['ETag'] = eTag
response = self._send(http_method='GET',
location_id='bdcff53a-8355-4172-a00a-40497ea23afc',
version='5.0-preview.2',
route_values=route_values)
route_values=route_values,
additional_headers=additional_headers)
response_object = models.WidgetsVersionedList()
response_object.widgets = self._deserialize('[Widget]', self._unwrap_collection(response))
response_object.eTag = response.headers.get('ETag')
Expand Down Expand Up @@ -422,11 +426,15 @@ def replace_widgets(self, widgets, team_context, dashboard_id, eTag=None):
route_values['team'] = self._serialize.url('team', team, 'string')
if dashboard_id is not None:
route_values['dashboardId'] = self._serialize.url('dashboard_id', dashboard_id, 'str')
additional_headers = {}
if eTag is not None:
additional_headers['ETag'] = eTag
content = self._serialize.body(widgets, '[Widget]')
response = self._send(http_method='PUT',
location_id='bdcff53a-8355-4172-a00a-40497ea23afc',
version='5.0-preview.2',
route_values=route_values,
additional_headers=additional_headers,
content=content)
response_object = models.WidgetsVersionedList()
response_object.widgets = self._deserialize('[Widget]', self._unwrap_collection(response))
Expand Down Expand Up @@ -499,11 +507,15 @@ def update_widgets(self, widgets, team_context, dashboard_id, eTag=None):
route_values['team'] = self._serialize.url('team', team, 'string')
if dashboard_id is not None:
route_values['dashboardId'] = self._serialize.url('dashboard_id', dashboard_id, 'str')
additional_headers = {}
if eTag is not None:
additional_headers['ETag'] = eTag
content = self._serialize.body(widgets, '[Widget]')
response = self._send(http_method='PATCH',
location_id='bdcff53a-8355-4172-a00a-40497ea23afc',
version='5.0-preview.2',
route_values=route_values,
additional_headers=additional_headers,
content=content)
response_object = models.WidgetsVersionedList()
response_object.widgets = self._deserialize('[Widget]', self._unwrap_collection(response))
Expand Down
48 changes: 47 additions & 1 deletion azure-devops/azure/devops/v5_0/gallery/gallery_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -160,11 +160,15 @@ def get_asset_by_name(self, publisher_name, extension_name, version, asset_type,
query_parameters['accountToken'] = self._serialize.query('account_token', account_token, 'str')
if accept_default is not None:
query_parameters['acceptDefault'] = self._serialize.query('accept_default', accept_default, 'bool')
additional_headers = {}
if account_token_header is not None:
additional_headers['X-Market-AccountToken'] = account_token_header
response = self._send(http_method='GET',
location_id='7529171f-a002-4180-93ba-685f358a0482',
version='5.0-preview.1',
route_values=route_values,
query_parameters=query_parameters,
additional_headers=additional_headers,
accept_media_type='application/octet-stream')
if "callback" in kwargs:
callback = kwargs["callback"]
Expand Down Expand Up @@ -195,11 +199,15 @@ def get_asset(self, extension_id, version, asset_type, account_token=None, accep
query_parameters['accountToken'] = self._serialize.query('account_token', account_token, 'str')
if accept_default is not None:
query_parameters['acceptDefault'] = self._serialize.query('accept_default', accept_default, 'bool')
additional_headers = {}
if account_token_header is not None:
additional_headers['X-Market-AccountToken'] = account_token_header
response = self._send(http_method='GET',
location_id='5d545f3d-ef47-488b-8be3-f5ee1517856c',
version='5.0-preview.1',
route_values=route_values,
query_parameters=query_parameters,
additional_headers=additional_headers,
accept_media_type='application/octet-stream')
if "callback" in kwargs:
callback = kwargs["callback"]
Expand Down Expand Up @@ -230,11 +238,15 @@ def get_asset_authenticated(self, publisher_name, extension_name, version, asset
query_parameters = {}
if account_token is not None:
query_parameters['accountToken'] = self._serialize.query('account_token', account_token, 'str')
additional_headers = {}
if account_token_header is not None:
additional_headers['X-Market-AccountToken'] = account_token_header
response = self._send(http_method='GET',
location_id='506aff36-2622-4f70-8063-77cce6366d20',
version='5.0-preview.1',
route_values=route_values,
query_parameters=query_parameters,
additional_headers=additional_headers,
accept_media_type='application/octet-stream')
if "callback" in kwargs:
callback = kwargs["callback"]
Expand Down Expand Up @@ -490,6 +502,9 @@ def update_payload_in_draft_for_edit_extension(self, upload_stream, publisher_na
route_values['extensionName'] = self._serialize.url('extension_name', extension_name, 'str')
if draft_id is not None:
route_values['draftId'] = self._serialize.url('draft_id', draft_id, 'str')
additional_headers = {}
if file_name is not None:
additional_headers['X-Market-UploadFileName'] = file_name
if "callback" in kwargs:
callback = kwargs["callback"]
else:
Expand All @@ -499,6 +514,7 @@ def update_payload_in_draft_for_edit_extension(self, upload_stream, publisher_na
location_id='02b33873-4e61-496e-83a2-59d1df46b7d8',
version='5.0-preview.1',
route_values=route_values,
additional_headers=additional_headers,
content=content,
media_type='application/octet-stream')
return self._deserialize('ExtensionDraft', response)
Expand Down Expand Up @@ -547,6 +563,11 @@ def create_draft_for_new_extension(self, upload_stream, publisher_name, product,
route_values = {}
if publisher_name is not None:
route_values['publisherName'] = self._serialize.url('publisher_name', publisher_name, 'str')
additional_headers = {}
if product is not None:
additional_headers['X-Market-UploadFileProduct'] = product
if file_name is not None:
additional_headers['X-Market-UploadFileName'] = file_name
if "callback" in kwargs:
callback = kwargs["callback"]
else:
Expand All @@ -556,6 +577,7 @@ def create_draft_for_new_extension(self, upload_stream, publisher_name, product,
location_id='b3ab127d-ebb9-4d22-b611-4e09593c8d79',
version='5.0-preview.1',
route_values=route_values,
additional_headers=additional_headers,
content=content,
media_type='application/octet-stream')
return self._deserialize('ExtensionDraft', response)
Expand Down Expand Up @@ -595,6 +617,9 @@ def update_payload_in_draft_for_new_extension(self, upload_stream, publisher_nam
route_values['publisherName'] = self._serialize.url('publisher_name', publisher_name, 'str')
if draft_id is not None:
route_values['draftId'] = self._serialize.url('draft_id', draft_id, 'str')
additional_headers = {}
if file_name is not None:
additional_headers['X-Market-UploadFileName'] = file_name
if "callback" in kwargs:
callback = kwargs["callback"]
else:
Expand All @@ -604,6 +629,7 @@ def update_payload_in_draft_for_new_extension(self, upload_stream, publisher_nam
location_id='b3ab127d-ebb9-4d22-b611-4e09593c8d79',
version='5.0-preview.1',
route_values=route_values,
additional_headers=additional_headers,
content=content,
media_type='application/octet-stream')
return self._deserialize('ExtensionDraft', response)
Expand Down Expand Up @@ -748,11 +774,15 @@ def query_extensions(self, extension_query, account_token=None, account_token_he
query_parameters = {}
if account_token is not None:
query_parameters['accountToken'] = self._serialize.query('account_token', account_token, 'str')
additional_headers = {}
if account_token_header is not None:
additional_headers['X-Market-AccountToken'] = account_token_header
content = self._serialize.body(extension_query, 'ExtensionQuery')
response = self._send(http_method='POST',
location_id='eb9d5ee1-6d43-456b-b80e-8a96fbc014b6',
version='5.0-preview.1',
query_parameters=query_parameters,
additional_headers=additional_headers,
content=content)
return self._deserialize('ExtensionQueryResult', response)

Expand Down Expand Up @@ -897,11 +927,15 @@ def get_extension(self, publisher_name, extension_name, version=None, flags=None
query_parameters['flags'] = self._serialize.query('flags', flags, 'str')
if account_token is not None:
query_parameters['accountToken'] = self._serialize.query('account_token', account_token, 'str')
additional_headers = {}
if account_token_header is not None:
additional_headers['X-Market-AccountToken'] = account_token_header
response = self._send(http_method='GET',
location_id='e11ea35a-16fe-4b80-ab11-c4cab88a0966',
version='5.0-preview.2',
route_values=route_values,
query_parameters=query_parameters)
query_parameters=query_parameters,
additional_headers=additional_headers)
return self._deserialize('PublishedExtension', response)

def update_extension(self, upload_stream, publisher_name, extension_name, bypass_scope_check=None, **kwargs):
Expand Down Expand Up @@ -1047,11 +1081,15 @@ def get_package(self, publisher_name, extension_name, version, account_token=Non
query_parameters['accountToken'] = self._serialize.query('account_token', account_token, 'str')
if accept_default is not None:
query_parameters['acceptDefault'] = self._serialize.query('accept_default', accept_default, 'bool')
additional_headers = {}
if account_token_header is not None:
additional_headers['X-Market-AccountToken'] = account_token_header
response = self._send(http_method='GET',
location_id='7cb576f8-1cae-4c4b-b7b1-e4af5759e965',
version='5.0-preview.1',
route_values=route_values,
query_parameters=query_parameters,
additional_headers=additional_headers,
accept_media_type='application/octet-stream')
if "callback" in kwargs:
callback = kwargs["callback"]
Expand Down Expand Up @@ -1088,11 +1126,15 @@ def get_asset_with_token(self, publisher_name, extension_name, version, asset_ty
query_parameters['accountToken'] = self._serialize.query('account_token', account_token, 'str')
if accept_default is not None:
query_parameters['acceptDefault'] = self._serialize.query('accept_default', accept_default, 'bool')
additional_headers = {}
if account_token_header is not None:
additional_headers['X-Market-AccountToken'] = account_token_header
response = self._send(http_method='GET',
location_id='364415a1-0077-4a41-a7a0-06edd4497492',
version='5.0-preview.1',
route_values=route_values,
query_parameters=query_parameters,
additional_headers=additional_headers,
accept_media_type='application/octet-stream')
if "callback" in kwargs:
callback = kwargs["callback"]
Expand Down Expand Up @@ -1158,6 +1200,9 @@ def update_publisher_asset(self, upload_stream, publisher_name, asset_type=None,
query_parameters = {}
if asset_type is not None:
query_parameters['assetType'] = self._serialize.query('asset_type', asset_type, 'str')
additional_headers = {}
if file_name is not None:
additional_headers['X-Market-UploadFileName'] = file_name
if "callback" in kwargs:
callback = kwargs["callback"]
else:
Expand All @@ -1168,6 +1213,7 @@ def update_publisher_asset(self, upload_stream, publisher_name, asset_type=None,
version='5.0-preview.1',
route_values=route_values,
query_parameters=query_parameters,
additional_headers=additional_headers,
content=content,
media_type='application/octet-stream')
return self._deserialize('{str}', self._unwrap_collection(response))
Expand Down
Loading

0 comments on commit 143ccaf

Please sign in to comment.