Esempio n. 1
0
    def _create_raw(self, **kwargs):
        """
        Return common parameters for _libcouchbase._http_request
        """
        d = {
            'type': C.LCB_HTTP_TYPE_VIEW,
            'fetch_headers': True,
            'quiet': False,
            'response_format': FMT_JSON
        }

        # Figure out the path
        qstr = self._query.encoded
        uri = make_dvpath(self.design, self.view)

        if len(uri) + len(qstr) > MAX_URI_LENGTH:
            (uriparams, post_data) = self._query._long_query_encoded

            d['method'] = C.LCB_HTTP_METHOD_POST
            d['post_data'] = post_data
            d['path'] = uri + uriparams
            d['content_type'] = "application/json"

        else:
            d['method'] = C.LCB_HTTP_METHOD_GET
            d['path'] = "{0}{1}".format(uri, qstr)

        d.update(**kwargs)
        return self._parent._http_request(**d)
    def _view(self, ddoc, view,
              use_devmode=False,
              params=None,
              unrecognized_ok=False,
              passthrough=False):
        """
        .. warning:: This method's API is not stable

        Execute a view (MapReduce) query

        :param string ddoc: Name of the design document
        :param string view: Name of the view function to execute
        :param params: Extra options to pass to the view engine
        :type params: string or dict

        :return: a :class:`HttpResult` object.
        """

        if params:
            if not isinstance(params, str):
                params = make_options_string(
                    params,
                    unrecognized_ok=unrecognized_ok,
                    passthrough=passthrough)
        else:
            params = ""

        ddoc = self._mk_devmode(ddoc, use_devmode)
        url = make_dvpath(ddoc, view) + params

        ret = self._http_request(type=_LCB.LCB_HTTP_TYPE_VIEW,
                                 path=url,
                                 method=_LCB.LCB_HTTP_METHOD_GET,
                                 response_format=FMT_JSON)
        return ret
    def _get_page(self):
        if not self._streaming:
            self._handle_single_view()
            self._do_iter = False
            return

        if not self.raw:
            params = {
                'method': C.LCB_HTTP_METHOD_GET,
                'type': C.LCB_HTTP_TYPE_VIEW,
                'chunked': True,
                'path': ('{0}{1}'
                         ).format(make_dvpath(self.design, self.view),
                                  self._query.encoded),
                'fetch_headers': True,
                'quiet': False
            }
            self.raw = self._parent._http_request(**params)

        # Fetch the rows:
        rows = self.raw._fetch()

        if not rows:
            self._handle_meta(self.raw.value)
            self._do_iter = False
            return

        rows = tuple(json.loads(r) for r in rows)
        self._process_page(rows)
    def _create_raw(self, **kwargs):
        """
        Return common parameters for _libcouchbase._http_request
        """
        d = {
            'type': C.LCB_HTTP_TYPE_VIEW,
            'fetch_headers': True,
            'quiet': False,
            'response_format': FMT_JSON
        }

        # Figure out the path
        qstr = self._query.encoded
        uri = make_dvpath(self.design, self.view)

        if len(uri) + len(qstr) > MAX_URI_LENGTH:
            (uriparams, post_data) = self._query._long_query_encoded

            d['method'] = C.LCB_HTTP_METHOD_POST
            d['post_data'] = post_data
            d['path'] = uri + uriparams
            d['content_type'] = "application/json"

        else:
            d['method'] = C.LCB_HTTP_METHOD_GET
            d['path'] = "{0}{1}".format(uri, qstr)


        d.update(**kwargs)
        return self._parent._http_request(**d)
    def _get_page(self):
        if not self._streaming:
            self._handle_single_view()
            self._do_iter = False
            return

        if not self.raw:
            params = {
                'method':
                C.LCB_HTTP_METHOD_GET,
                'type':
                C.LCB_HTTP_TYPE_VIEW,
                'chunked':
                True,
                'path': ('{0}{1}').format(make_dvpath(self.design, self.view),
                                          self._query.encoded),
                'fetch_headers':
                True,
                'quiet':
                False
            }
            self.raw = self._parent._http_request(**params)

        # Fetch the rows:
        rows = self.raw._fetch()

        if not rows:
            self._handle_meta(self.raw.value)
            self._do_iter = False
            return

        rows = tuple(json.loads(r) for r in rows)
        self._process_page(rows)
Esempio n. 6
0
    def _get_page(self):
        if not self._streaming:
            self._handle_single_view()
            self._do_iter = False
            return

        if not self.raw:
            params = {
                "method": C.LCB_HTTP_METHOD_GET,
                "type": C.LCB_HTTP_TYPE_VIEW,
                "chunked": True,
                "path": ("{0}{1}").format(make_dvpath(self.design, self.view), self._query.encoded),
                "fetch_headers": True,
                "quiet": False,
            }
            self.raw = self._parent._http_request(**params)

        # Fetch the rows:
        rows = self.raw._fetch()

        if not rows:
            self._handle_meta(self.raw.value)
            self._do_iter = False
            return

        rows = tuple(json.loads(r) for r in rows)
        self._process_page(rows)
    def _view(self,
              ddoc,
              view,
              use_devmode=False,
              params=None,
              unrecognized_ok=False,
              passthrough=False):
        """
        .. warning:: This method's API is not stable

        Execute a view (MapReduce) query

        :param string ddoc: Name of the design document
        :param string view: Name of the view function to execute
        :param params: Extra options to pass to the view engine
        :type params: string or dict

        :return: a :class:`~couchbase.result.HttpResult` object.
        """

        if params:
            if not isinstance(params, str):
                params = make_options_string(params,
                                             unrecognized_ok=unrecognized_ok,
                                             passthrough=passthrough)
        else:
            params = ""

        ddoc = self._mk_devmode(ddoc, use_devmode)
        url = make_dvpath(ddoc, view) + params

        ret = self._http_request(type=_LCB.LCB_HTTP_TYPE_VIEW,
                                 path=url,
                                 method=_LCB.LCB_HTTP_METHOD_GET,
                                 response_format=FMT_JSON)
        return ret