Ejemplo n.º 1
0
 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
Ejemplo n.º 2
0
 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
Ejemplo n.º 3
0
 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)
Ejemplo n.º 4
0
 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)
Ejemplo n.º 5
0
 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
Ejemplo n.º 6
0
 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
Ejemplo n.º 9
0
 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