def read_list_items(context, list_title, url):
    """Read list items example"""
    request = ClientRequest(context)
    options = RequestOptions("{0}/web/lists/getbyTitle('{1}')/items".format(url, list_title))
    options.set_header('Accept', 'application/json; odata=nometadata')

    print("Retrieving list items from List {0}".format(list_title))
    response = request.execute_request_direct(options)
    data = json.loads(response.content)
    for item in data['value']:
        print("Item title: {0}".format(item["Title"]))
Esempio n. 2
0
 def open_binary(ctx, server_relative_url):
     try:
         from urllib import quote  # Python 2.X
     except ImportError:
         from urllib.parse import quote  # Python 3+
     server_relative_url = quote(server_relative_url)
     url = "{0}web/getfilebyserverrelativeurl('{1}')/\$value".format(
         ctx.service_root_url, server_relative_url)
     request = RequestOptions(url)
     request.method = HttpMethod.Get
     response = ctx.execute_request_direct(request)
     return response
def delete_list_item(context, list_title, item_id, url):
    """Delete list item example"""
    request = ClientRequest(context)
    options = RequestOptions(
        "{0}/web/lists/getbyTitle('{1}')/items({2})".format(url, list_title, item_id))
    options.set_header('Accept', 'application/json; odata=nometadata')  # JSON Light nometadata mode!
    options.set_header('IF-MATCH', '*')
    options.set_header('X-HTTP-Method', 'DELETE')
    options.data = {'Title': 'New Task (updated)'}
    options.method = HttpMethod.Post
    print("Deleting list item...")
    request.execute_request_direct(options)
    print("Task has been successfully [deleted]")
Esempio 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,
                              proxies=self.proxy)
     self.pending_request.validate_response(response)
     payload = response.json()
     if self.json_format.metadata == ODataMetadataLevel.Verbose:
         payload = payload['d']['GetContextWebInformation']
     self.contextWebInformation = ContextWebInformation()
     self.contextWebInformation.from_json(payload)
    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_json(
                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 create_list_item(context, list_title, url):
    """Create list item example"""
    request = ClientRequest(context)
    options = RequestOptions("{0}/web/lists/getbyTitle('{1}')/items".format(url, list_title))
    options.set_header('Accept', 'application/json; odata=nometadata')  # JSON Light nometadata mode!
    options.data = {'Title': 'New Task'}
    options.method = HttpMethod.Post
    print("Creating list item...")
    response = request.execute_request_direct(options)
    item = json.loads(response.content)
    print("Task {0} has been successfully [created]".format(item['Title']))
    return item
Esempio n. 7
0
 def save_binary(ctx, server_relative_url, content):
     try:
         from urllib import quote  # Python 2.X
     except ImportError:
         from urllib.parse import quote  # Python 3+
     server_relative_url = quote(server_relative_url)
     url = "{0}web/getfilebyserverrelativeurl('{1}')/\$value".format(
         ctx.service_root_url, server_relative_url)
     request = RequestOptions(url)
     request.method = HttpMethod.Post
     request.set_header('X-HTTP-Method', 'PUT')
     request.data = content
     response = ctx.execute_request_direct(request)
     return response
Esempio n. 8
0
 def execute_request(self, url):
     request = RequestOptions("{0}/{1}".format(self.__service_root_url,
                                               url))
     return self.execute_request_direct(request)
 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
Esempio n. 10
0
from spoklient.runtime.auth.authentication_context import AuthenticationContext
from spoklient.runtime.client_request import ClientRequest
from spoklient.runtime.utilities.request_options import RequestOptions
from settings import settings
import json

from spoklient.sharepoint.client_context import ClientContext

if __name__ == '__main__':
    context_auth = AuthenticationContext(url=settings['url'])
    if context_auth.acquire_token_for_user(
            username=settings['user_credentials']['username'],
            password=settings['user_credentials']['password']):
        """Read Web client object"""
        ctx = ClientContext(settings['url'], context_auth)

        request = ClientRequest(ctx)
        options = RequestOptions("{0}/_api/web/".format(settings['url']))
        options.set_header('Accept', 'application/json')
        options.set_header('Content-Type', 'application/json')
        data = ctx.execute_request_direct(options)
        s = json.loads(data.content)
        web_title = s['Title']
        print("Web title: {0}".format(web_title))

    else:
        print(context_auth.get_last_error())