code: def update_share(self, share_id, **kwargs):
          perms = kwargs.get('perms', None)
          password = kwargs.get('password', None)
          public_upload = kwargs.get('public_upload', None)
          if (isinstance(perms, int)) and (perms > self.OCS_PERMISSION_ALL):
              perms = None
          if not (perms or password or (public_upload is not None)):
              return False
          if not isinstance(share_id, int):
              return False
          data = {}
          if perms:
              data['permissions'] = perms
          if isinstance(password, six.string_types):
              data['password'] = password
          if (public_upload is not None) and (isinstance(public_upload, bool)):
              data['publicUpload'] = str(public_upload).lower()
          res = self._make_ocs_request(
              'PUT',
              self.OCS_SERVICE_SHARE,
              'shares/' + str(share_id),
              data=data
          )
          if res.status_code == 200:
              return True
          raise HTTPResponseError(res)