def build_request(self, query): request = RequestOptions(query.url) # set json format headers request.set_headers(self.context.json_format.build_http_headers()) if isinstance(self.context.json_format, JsonLightFormat): # set custom method headers if query.action_type == ActionType.DeleteEntity: request.set_header("X-HTTP-Method", "DELETE") request.set_header("IF-MATCH", '*') elif query.action_type == ActionType.UpdateEntity: request.set_header("X-HTTP-Method", "MERGE") request.set_header("IF-MATCH", '*') # set method if not (query.action_type == ActionType.ReadEntity or query.action_type == ActionType.GetMethod): request.method = HttpMethod.Post else: if query.action_type == ActionType.CreateEntity: request.method = HttpMethod.Post elif query.action_type == ActionType.UpdateEntity: request.method = HttpMethod.Patch elif query.action_type == ActionType.DeleteEntity: request.method = HttpMethod.Delete # set request payload if query.payload is not None: request.data = ODataEncoder(self.context.json_format).default( query.payload) return request
def build_request(self, query): request = RequestOptions(query.url) # set json format headers request.set_headers(self.context.json_format.build_http_headers()) # set method request.method = query.method # set request payload if query.payload is not None: request.data = ODataEncoder(self.context.json_format).default(query.payload) return request
def request_form_digest(self): """Request Form Digest""" request = RequestOptions(self.serviceRootUrl + "contextinfo") request.method = HttpMethod.Post request.set_headers(self.json_format.build_http_headers()) response = self.execute_request_direct(request) payload = response.json() if self.json_format.metadata == ODataMetadataLevel.Verbose: payload = payload['d']['GetContextWebInformation'] self.contextWebInformation = ContextWebInformation() self.contextWebInformation.from_json(payload)
def request_form_digest(self): """Request Form Digest""" request = RequestOptions(self.service_root_url + "contextinfo") self.authenticate_request(request) request.set_headers(self.json_format.build_http_headers()) response = requests.post(url=request.url, headers=request.headers, auth=request.auth) payload = response.json() if self.json_format.metadata == ODataMetadataLevel.Verbose: payload = payload['d']['GetContextWebInformation'] self.contextWebInformation = ContextWebInformation() self.contextWebInformation.from_json(payload)
def post(self, path, headers={}, data={}): # request = ClientRequest(self.ctx_auth) options = RequestOptions('{}_api/web/{}'.format(self.site_url, path)) options.method = HttpMethod.Post options.set_headers(headers) options.data = data data = self.request.execute_request_direct(options) if data.status_code == 403: import traceback traceback.print_tb() print(options.url) print(data.content) print(options.headers) return data
def post_raw(self, path, headers={}, data={}): options = RequestOptions('{}{}'.format(self.site_url, path)) options.method = HttpMethod.Post options.set_headers(headers) if isinstance(data, abc.Mapping): options.data.update(data) data = self.request.execute_request_direct(options) if data.status_code == 403: import traceback traceback.print_tb() print(options.url) print(data.content) print(options.headers) return data
def __iter__(self): for _object in self._data: yield _object while self.__next_query_url: # create a request with the __next_query_url request = RequestOptions(self.__next_query_url) request.set_headers(self.context.json_format.build_http_headers()) response = self.context.execute_request_direct(request) # process the response payload = self.context.pending_request.process_response(response) self.__next_query_url = payload["next"] child_client_objects = [] # add the new objects to the collection before yielding the results for properties in payload["collection"]: child_client_object = self.create_typed_object( properties, self._item_type) self.add_child(child_client_object) child_client_objects.append(child_client_object) for child_client_object in child_client_objects: yield child_client_object
def _build_request(self): for qry in self._queries: request = RequestOptions(qry.entity_type.resourceUrl) # set json format headers request.set_headers(self.context.json_format.build_http_headers()) # set method request.method = HttpMethod.Get if isinstance(qry, CreateEntityQuery) \ or isinstance(qry, UpdateEntityQuery) \ or isinstance(qry, DeleteEntityQuery): request.method = HttpMethod.Post elif isinstance(qry, ServiceOperationQuery): request.url = '/'.join( [qry.entity_type.resourceUrl, qry.method_path.segment]) request.method = HttpMethod.Post # set request payload if qry.parameters is not None: request.data = self._normalize_payload(qry.parameters) if 'before' in self._events: self._events['before'](request, qry) self.__current_query = qry yield request
def build_request(self, query): request = RequestOptions(query.url) # set json format headers request.set_headers(self.context.json_format.build_http_headers()) # set method request.method = query.method # set custom method headers if isinstance(self.context.json_format, JsonLightFormat): if isinstance(query, DeleteEntityQuery): request.set_header("X-HTTP-Method", "DELETE") request.set_header("IF-MATCH", '*') elif isinstance(query, UpdateEntityQuery): request.set_header("X-HTTP-Method", "MERGE") request.set_header("IF-MATCH", '*') else: if isinstance(query, UpdateEntityQuery): request.method = HttpMethod.Patch elif isinstance(query, DeleteEntityQuery): request.method = HttpMethod.Delete # set request payload if query.payload is not None: request.data = ODataEncoder(self.context.json_format).default( query.payload) return request