W3C home > Mailing lists > Public > public-linked-json@w3.org > June 2014

Re: Using Angular $http service as documentLoader

From: Dave Longley <dlongley@digitalbazaar.com>
Date: Wed, 18 Jun 2014 19:10:12 -0400
Message-ID: <53A21C54.2040205@digitalbazaar.com>
To: public-linked-json@w3.org
CC: tomasz@t-code.pl
On 06/18/2014 05:20 PM, Tomasz Pluskiewicz wrote:
> Hi
> 
> I'm trying to use the jsonld with Angular and in tests I want to
> replace the default documentLoader with $http service so that I can
> mock the responses.
> 
> I assumed that because $http already returns a promise it would be
> enough to simply use a function like
> 
> jsonld.documentLoader = function (url) {
>    return $http.get(url);
> }
> 
> as replacement for whatever is currently set.
> 
> Unfortunately it doesn't work. What's would be correct way to do that?

That's because the value that promise resolves to isn't what is required
by the JSON-LD API spec. It requires that the promise resolve to a
"RemoteDocument":

http://www.w3.org/TR/json-ld-api/#idl-def-RemoteDocument

I didn't test this, but it should be pretty close to what you want:

jsonld.documentLoader = function(url) {
  return $http.get(url).then(function(response) {
    return {
      contextUrl: null,
      document: response.data,
      documentUrl: url
    }
  });
};

Hopefully that works for you.

-Dave

-- 
Dave Longley
CTO
Digital Bazaar, Inc.
Received on Wednesday, 18 June 2014 23:10:40 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 16:18:41 UTC