I’m not 100% certain that’s the cause, but my testing so far suggests it’s probably that. Basically if you have a URL that doesn’t point to the original resource, but some copy of it on another instance, it won’t resolve. So far I’ve only tested that on a third instance, but from my experience with the same bug on pleroma, this will occur even if you do it on the resource’s origin instance. (fse post referred to from poa.st can’t be resolved on fse.) As example: https://lemmy.perthchat.org/api/v3/resolve_object?q=https://lemmy.ml/post/472799. It’s possible that this is actually just a federation block, but https://beehaw.org/post/125367/comment/32382 also fails, (and fetching that post works,) which I’m pretty sure isn’t.

  • @nutomic@lemmy.ml
    link
    fedilink
    32 years ago

    If you are writing a client, there is really no reason to browse instances using browser/lemmy-ui. Instead you can directly connect with your client to the api of any instance. Then when you want to interact with any object (eg vote, write a post, subscribe), you take the value of ap_id field (on post, comment) or actor_id field (user, community, site), and pass that to resolve_object.

    What resolve_object does is essentially the command below, and then transform the data to store it in Lemmy db. Note that each fetchable object has an id, and that is where you can resolve it.

    curl -H 'Accept: application/activity+json' https://lemmy.ml/post/472799 | jq

    https://lemmy.perthchat.org/api/v3/resolve_object?q=https://lemmy.ml/post/472799

    This fails because it was posted on lemmygrad.ml, which is blocked on perthchat.

    To fetch comments, the url should look like this: https://sopuli.xyz/comment/104283

    • Oh, title got munched, heh. I’ll fix that… So basically you’re saying that before resolve_object I should transform it on given instance and load from there, pull ap_id from it and then resolve on that. How annoying, now I have to figure out if I can easily and reliably transform any valid lemmy URL to an API link. Probably yes, regex something like https://[a-zA-Z0-9\.\-\_]+/(.*/?)\w+/\d+ and replace the capture with api/v3. So much for simplicity.

      • @nutomic@lemmy.ml
        link
        fedilink
        12 years ago

        That sounds overly complicated. Why do you open Lemmy in your browser, when you can directly connect with your client to the API of any instance?

        And if you do use the browser, theres the fedilink icon which has the link you need. If that isnt rendered properly in your browser, send me the details and i can open an issue for you.

        • Why do you open Lemmy in your browser I don’t.

          you can directly connect with your client to the API of any instance The complexity is necessary for this. When given a link, I need to translate it into an API link so I can load the object and grab the ap_id.

          If that isnt rendered properly in your browser Lynx. I’ve detailed the problem in the matrix room, basically for some reason it’s in a title element so lynx correctly sets the page title to “fedilink” 100 times.

          • Thinking about this more, I realised it’s impossible: The link might not even be a lemmy link at all! How am I meant to guess the other node’s API? I’d use federation API, I guess, which I still haven’t found nice docs for.

          • @nutomic@lemmy.ml
            link
            fedilink
            12 years ago

            You are wrong, it uses the title attribute which is valid html, and not the title element. Maybe Lynx doesnt support that attribute on a elements, I dont know.

            Btw you need to add a newline after each quote so that its rendered correctly as markdown.

            • yun-wuxin:[wisknort]:~$ curl https://beehaw.org/post/125367/comment/32382 -s | grep -Eo ‘.{10}fedilink.{10}’ id=“icon-fedilink” viewBox= ef=“#icon-fedilink”></use><d y"><title>fedilink</title></

              Do you mean a blank line? Because I added newlines. Frankly I consider this to be markdown’s fault, because the behaviour is, put simply, retarded. If I want to quote two lines, I will quote two lines. (Worse is the part where a single newline is ignored, but two newlines is two newlines. I just want one newline, thanks.)