Transcription: OpenAgents Episode 070 - L402 Plugin Deployment
June 9, 2026 ยท View on GitHub
Source: https://twitter.com/OpenAgentsInc/status/1753527990506721416 Wiki source: https://raw.githubusercontent.com/wiki/OpenAgentsInc/openagents/Video-Series.md Media title: OpenAgents - Episode 070: L402 Plugin Deployment Our longest video yet! We configu... Upload date: 20240202 Transcription model: mlx-whisper/mlx-community/whisper-tiny Generated at: 2026-06-01T19:07:54Z
Machine-generated transcript. Review speaker labels and wording before using this as quote-grade source material.
[00:00] Christopher David: Let's deploy our plugin number two to an L402 endpoint.
[00:07] Christopher David: So one correction I said in the last video that the PHP SDK from ex-tism does not yet implement
[00:18] Christopher David: the host functions needed to have our wasm plugin make HTTP requests necessary for this plugin.
[00:28] Christopher David: And that was the case until four days ago they did add support for host functions.
[00:34] Christopher David: So we will play with that in a future video.
[00:38] Christopher David: We're definitely going to use that. However, I do actually like the idea that we arrived
[00:44] Christopher David: in the last video of like let's try deploying this function.
[00:49] Christopher David: Let's try throwing it behind an L402 endpoint.
[00:52] Christopher David: Just to see what it's like.
[00:56] Christopher David: We won't be doing that and want to let that be something that we let other smart people like
[01:03] Christopher David: Sulu take on and just work with them.
[01:05] Christopher David: But I do want to learn about it.
[01:07] Christopher David: And we've got some code from Alex.
[01:12] Christopher David: Alex who did our most recent bounty for Nostra plugin, but he did another bounty
[01:18] Christopher David: months ago.
[01:21] Christopher David: November.
[01:24] Christopher David: Where he wrote an L42 demo adapting Cody Lowe's mad as we're project hitting a GPU
[01:30] Christopher David: Topia.
[01:31] Christopher David: The previous version of open agents are swarm computing network endpoint.
[01:35] Christopher David: And receiving first error for two payment required and then working normally after
[01:39] Christopher David: receiving a big one I'd be paying.
[01:41] Christopher David: Oh look, I said we're excited to further integrate L42 into our forthcoming agent you
[01:46] Christopher David: want.
[01:47] Christopher David: We are.
[01:48] Christopher David: We did.
[01:49] Christopher David: Okay.
[01:50] Christopher David: I'm a video.
[01:51] Christopher David: I don't know if I can demo video that.
[01:54] Christopher David: But it just hitting the endpoint getting forward to and then not.
[01:56] Christopher David: Okay.
[01:57] Christopher David: So this is just some code that we have in our repo.
[02:03] Christopher David: I had mentioned brief in the previous video the goal and library from Sulu.
[02:08] Christopher David: I'm pretty sure this is just for consuming.
[02:11] Christopher David: If I check it down if there's stuff that is worth using other than the kind of
[02:16] Christopher David: of thing but this is for like a go application that wants to consume using an LWL.
[02:21] Christopher David: That's cool.
[02:22] Christopher David: But we want to do actually the endpoint.
[02:25] Christopher David: I think the most mature version of this is the aperture project from L&D.
[02:35] Christopher David: You know, it's a reverse proxy server.
[02:41] Christopher David: And then there's a lot there and I don't know.
[02:47] Christopher David: That's scary.
[02:49] Christopher David: Okay.
[02:50] Christopher David: And then Cody did something.
[02:53] Christopher David: Maybe this used to be in.
[02:57] Christopher David: Go link.
[02:58] Christopher David: I saw some go link packages in Alex's code base.
[03:02] Christopher David: But this looks like it's in Ross.
[03:04] Christopher David: Let's just take a look at this.
[03:07] Christopher David: And then there's a Bitcoin powered past your service.
[03:09] Christopher David: Let's use cell API access against an arbitrary API using our API key and exchange for
[03:13] Christopher David: Bitcoin micro payments.
[03:15] Christopher David: I built it by the door because I'm sick of waiting for companies to wrap their API's
[03:18] Christopher David: with Bitcoin payment.
[03:19] Christopher David: So this lets anyone with an API key as a 412 pass through to the actually API.
[03:23] Christopher David: Letting anyone pay for your using your API key with Bitcoin.
[03:29] Christopher David: And it supports those APIs.
[03:31] Christopher David: That's cool.
[03:38] Christopher David: All right.
[03:43] Christopher David: So that's rust.
[03:46] Christopher David: And I like rust.
[03:47] Christopher David: But we're going to keep running with our go link thing that we did in the last video.
[03:52] Christopher David: Plus the code that Alex did for this is in go link.
[04:02] Christopher David: I think I haven't been through this in fine to TTL.
[04:06] Christopher David: But I think this is going to be what we want to deploy.
[04:13] Christopher David: And maybe like kind of combine this with the this.
[04:18] Christopher David: I don't know if this is like a proxy server for another API.
[04:22] Christopher David: We're going to figure all this out.
[04:25] Christopher David: But the objective for this video is to take the plugin that we created here, the host function.
[04:32] Christopher David: Uh, the plugin, the wasm, the exesum plugin.
[04:39] Christopher David: That uses exesum host functions.
[04:42] Christopher David: And we're going to deploy that into an environment, a go link environment, where we can pass in that fetch.
[04:49] Christopher David: As the host function, to get around wasms inability to make HTTP requests.
[04:54] Christopher David: And then.
[04:57] Christopher David: Because that's going to be deployed as an external third party API.
[05:01] Christopher David: I remember in our L for a two video.
[05:04] Christopher David: We haven't even implemented just the ability to hit APIs.
[05:07] Christopher David: But we did implement the ability to hit L for a two APIs and pay for them.
[05:11] Christopher David: So like we're just going to consume this plugin via an L for a two endpoint.
[05:17] Christopher David: And this will just kind of help us model what it's like to deploy an endpoint.
[05:22] Christopher David: And this code in the future, we're probably not going to be like building a service around.
[05:26] Christopher David: But it'll just be cool to like, play around with this and get it working in an actual agent workflow and not just the kind of demo mode stuff from there.
[05:39] Christopher David: Let's try it.
[05:44] Christopher David: So I've cloned this.
[05:50] Christopher David: Maybe let's kind of take a spin through it here.
[05:52] Christopher David: So main.go. What does this do?
[05:57] Christopher David: All right. We're going to exercise our friend chat, jippity,
[06:03] Christopher David: until we replace them in about five videos.
[06:06] Christopher David: So.
[06:13] Christopher David: Let's learn about this application.
[06:20] Christopher David: Here's a description from the announcement tweet.
[06:30] Christopher David: This is the main.go.
[06:45] Christopher David: Help me understand the code base.
[06:49] Christopher David: I'll pay some more stuff in.
[07:13] Christopher David: Router, path, we find handler. So handler, pass through handler.
[07:31] Christopher David: Where's handler come from?
[07:34] Christopher David: Ruffle.
[07:35] Christopher David: I'm a complete new bit to go, by the way.
[07:39] Christopher David: So handler, pass through.
[07:43] Christopher David: This seems relevant.
[07:47] Christopher David: Say way less than all that.
[07:51] Christopher David: Here's the relevant pass through handler file.
[07:58] Christopher David: Sumerize how it works with main.go.
[08:11] Christopher David: The pass through handler function in the handler package works in conjunction with the setup in main.go.
[08:16] Christopher David: To fold requests to a specified API endpoint, incorporating an authorization and payment verification process.
[08:23] Christopher David: I think what we're going to do is take this code.
[08:38] Christopher David: That's got the like going and pulling stuff.
[08:45] Christopher David: Things.
[08:48] Christopher David: And just like strip out where it would call some other API.
[08:52] Christopher David: Like instead of proxying a request, just hand over requests for what I'm going to pass in.
[08:58] Christopher David: We don't need this to be reusable.
[09:00] Christopher David: This is just like an example of a thing.
[09:02] Christopher David: No, the simplest possible thing to call a thing.
[09:04] Christopher David: So maybe instead of proxying it, we're just implementing the code there.
[09:10] Christopher David: So let's revisit what we worked on in the last video.
[09:38] Christopher David: So this is the plugin.
[09:50] Christopher David: I don't fully yet know how we power what we pass in to this.
[09:56] Christopher David: So this is the goling definition of the.
[10:00] Christopher David: Extism plugin that uses host functions.
[10:03] Christopher David: So you can define custom host functions or you can use like host functions that come I guess in this package for HTTP calls.
[10:15] Christopher David: So I think that's all a proxy server.
[10:35] Christopher David: But I need to change the code.
[10:40] Christopher David: I think for my use case, which is.
[10:48] Christopher David: I wish I could just drop in a link to a GitHub issue and have it read the fucking thing, which is what we're actually building here, by the way.
[10:56] Christopher David: That is what we're building.
[11:03] Christopher David: Which is described in these GitHub comments.
[11:28] Christopher David: So I don't think we need all that reverse proxy stuff.
[11:37] Christopher David: I just need this code base.
[11:44] Christopher David: I just need this.
[11:53] Christopher David: And I want to add that.
[12:03] Christopher David: Goling, Extism plugin defined here in my separate code base plugin URL scraper go.
[12:20] Christopher David: Main file is calling.
[12:26] Christopher David: It's going to be nice if we get these things working together.
[12:40] Christopher David: For your specific use case, you're aiming to build an agent that replaces your data that uses your chat to be teed by utilizing open agents.
[12:46] Christopher David: Plugins for various tasks including fetching and processing URL content.
[12:50] Christopher David: Given the description and the provided goline code base for the x is in plugin it seems you want to add down to your go application to serve as an L4 to end point that requires user payment before that.
[13:02] Christopher David: We're going to execute the x is in plugin plugin URL scraper go upon successful payment to fetch and return URL content correct.
[13:06] Christopher David: The current go application you shared the one with the past two handler serves as a proxy server, which might not directly align with your new requirements to modify it for your use case considered the following changes.
[13:17] Christopher David: Simplifying the application structure. Remove unnecessary proxy logic.
[13:20] Christopher David: Seed your focusing on executing a specific plugin action fetching URL content rather than forwarding requests with the API. You can remove the proxy forwarding logic from the password handler.
[13:30] Christopher David: Integrating the x is in plugin.
[13:33] Christopher David: Plug in execution on payment. Modify the past two handler or create a new handler to integrate the x is in plugin execution.
[13:39] Christopher David: This handler should wait for a payment confirmation. The L4 or two process you mentioned.
[13:43] Christopher David: Upon successful payment read the URL from the request.
[13:46] Christopher David: Execute the x is in plugin fetch your all content with the given URL.
[13:50] Christopher David: Return the fetch to content or an error message to user. Perfect.
[13:54] Christopher David: Payment verification L4 to process. Integrate L4 to payment verification.
[13:58] Christopher David: Before executing the x is in plugin the handler should verify the payment has been made. This involves checking for payment token or identifying their quest.
[14:04] Christopher David: Verifying this payment token with your payment processing back in our service.
[14:07] Christopher David: Proceeding with the plugin execution only the payment verification schedule.
[14:10] Christopher David: Sounds good to me.
[14:12] Christopher David: Example handler adjustment. You might consider adjusting your handler function to something along these lines.
[14:17] Christopher David: This is a simplified concept to illustrate integrating the payment check and plugin execution.
[14:23] Christopher David: Funk fetch your all content handler.
[14:28] Christopher David: Read the URL from the request.
[14:32] Christopher David: Assuming payment is verified and URL parameter is present execute the x is in plugin with the URL.
[14:38] Christopher David: This example omits specified details about implementing execute x is in plugin with URL.
[14:43] Christopher David: And payment verification output.
[14:45] Christopher David: Okay.
[14:46] Christopher David: Well, yeah, I'll give it those details.
[14:50] Christopher David: Deploying the odd file up again after modifying your application.
[14:53] Christopher David: Deployed behind an L4 to endpoint as you plan.
[14:55] Christopher David: This deployment involves sending a payment gateway.
[14:57] Christopher David: Okay.
[15:00] Christopher David: Um, props to open a item. This is a really good response.
[15:07] Christopher David: I mean, it's basically just mirroring back what I said, but like this is very clear.
[15:12] Christopher David: And then now I just got to like be copypacing a bunch of stuff in and that's what we're abilting this to avoid.
[15:18] Christopher David: I want to keep this. We'll continue using GPT4 as an option within our flows.
[15:23] Christopher David: It's just I don't have to keep copypacing stuff in here.
[15:29] Christopher David: Okay.
[15:36] Christopher David: So I think I'm going to fork the L4O2 demo code.
[15:44] Christopher David: All right. We're going to fork this and we're going to call it.
[16:03] Christopher David: Uh, plug in.
[16:33] Christopher David: L4O2 plug in endpoint.
[16:40] Christopher David: Is there more, or again one branch?
[16:54] Christopher David: No.
[16:56] Christopher David: Okay.
[16:59] Christopher David: Okay. And then this will be what we chop up.
[17:28] Christopher David: Okay.
[17:39] Christopher David: Oops.
[17:59] Christopher David: Thank you. Sounds good.
[18:06] Christopher David: Let's please.
[18:10] Christopher David: Okay. Please write. Okay. Thanks. You can start.
[18:13] Christopher David: I have forked the original go repo into a new project called L4O2 plug in endpoint.
[18:27] Christopher David: So we can chop it up.
[18:34] Christopher David: Please write a new main.go that is simpler.
[18:41] Christopher David: Avoid plugin.
[18:45] Christopher David: Straight forward implementation.
[18:48] Christopher David: Write just the main.go.
[18:50] Christopher David: Then I'll ask you to write any other functions you reference.
[19:09] Christopher David: Well, let's try this.
[19:29] Christopher David: All that goes. Let's take a look at the and V files expected.
[19:43] Christopher David: Configure the payment location in price.
[19:46] Christopher David: Configure the proxy to API location.
[19:49] Christopher David: We won't need to do that.
[19:51] Christopher David: I'm guessing.
[19:53] Christopher David: I got to look in this code to see if it matches with what the current read me here is.
[19:58] Christopher David: It's like L.
[19:59] Christopher David: and address, or what do we need to actually put in there?
[20:04] Christopher David: Let's see what the code expects.
[20:09] Christopher David: Okay, this says...
[20:15] Christopher David: I'll provide a simplified main.go that focuses on setting up a basic HTTP server,
[20:19] Christopher David: which waits for payment confirmation before executing an XTISM plugin to fetch URL content.
[20:25] Christopher David: This version will omit proxy logic and include placeholder for the payment verification
[20:30] Christopher David: and plugin execution processes, which you'll need to implement according to your project requirements.
[20:36] Christopher David: This main.go sets up an HTTP server with a single endpoint fetch URL content that expects a URL query parameter.
[20:45] Christopher David: Inexpected, it's older for the payment.
[20:47] Christopher David: The... here we go!
[20:51] Christopher David: Thank you for the reminder. This is exactly why we want to the reasons why we're doing
[20:55] Christopher David: what we're doing.
[20:57] Christopher David: Episode 67-ish replacing Chatchee BT because of this.
[21:07] Christopher David: Failures are okay. It's just like handled it. Like stop retry.
[21:12] Christopher David: Or give me a fallback.
[21:16] Christopher David: Okay, well let's just start with this and see what this looks like.
[21:25] Christopher David: So there's currently no ENV file.
[21:38] Christopher David: Can I do this?
[21:45] Christopher David: And then what did it ask for?
[21:50] Christopher David: Maybe Ellen address and then is this what gets paid?
[21:56] Christopher David: The open agents, Llining address is ChrismObinagent.com.
[22:00] Christopher David: Not personal one is the Arcade Labs. Okay.
[22:05] Christopher David: Let's just start with that. See. Let's have a tour.
[22:17] Christopher David: The.
[22:25] Christopher David: I'm a go-nube. I paced that into my
[22:33] Christopher David: main.go. Tell me how to write.
[22:45] Christopher David: I already have it.
[22:48] Christopher David: I haven't stalled go. Just tell me the command.
[22:51] Christopher David: Go run. Okay, that's easy enough.
[23:02] Christopher David: What?
[23:09] Christopher David: Oh.
[23:13] Christopher David: Go run, Mingo.
[23:21] Christopher David: Go. All right, server starting.
[23:25] Christopher David: Oh.
[23:31] Christopher David: I'm not used to it like just let's think doing something.
[23:34] Christopher David: You get to give me a bunch of type errors and like baro check errors. Okay.
[23:38] Christopher David: Listen, that's pretty nice. All right, localhost 88. Let's just see what this happened.
[23:44] Christopher David: What happens here?
[23:45] Christopher David: A four four page. Not fun.
[23:51] Christopher David: Okay. Should I be breaking something?
[23:58] Christopher David: That should be the code. All right, so in it, error,
[24:02] Christopher David: load and forgets it did that.
[24:06] Christopher David: All right, define route for fetching URL content.
[24:21] Christopher David: Okay. I was going to ask you for an example URL.
[24:41] Christopher David: Looks like it gave me one.
[24:45] Christopher David: What should I have it fetch?
[24:47] Christopher David: Shh. Let's go grab that same one we use the other day, which was the routes web raw.
[25:02] Christopher David: Give me this.
[25:03] Christopher David: This.
[25:15] Christopher David: I don't know if I need to encode it or something.
[25:26] Christopher David: Yeah, I haven't, but I just want to see something happen with I go there.
[25:29] Christopher David: Nothing goes there. Okay, fine, but do I have any errors?
[25:38] Christopher David: Okay, let's see what happens.
[25:43] Christopher David: Hand of the funk.
[25:51] Christopher David: Hand there is get URL. Let me just try, let's see if we can get some code pile going here.
[25:57] Christopher David: Log the URL to the console. Please. Oh, who?
[26:04] Christopher David: Out there works. I hope that works. I need to refresh restart the thing.
[26:10] Christopher David: Do I need to restart the thingy? Maybe I do.
[26:18] Christopher David: All year. Okay, fetching content from URL.
[26:22] Christopher David: Do it. Do it. Do it.
[26:30] Christopher David: Are we have the URL?
[26:37] Christopher David: You know what I might even do to be super cool?
[26:42] Christopher David: Is put that. I don't know the command to just just just boom.
[26:52] Christopher David: No. No. No.
[26:58] Christopher David: Oh yeah.
[27:15] Christopher David: I'm a team accident, but this is like feeling pretty cool. Okay, fetching content from URL.
[27:23] Christopher David: Now what?
[27:32] Christopher David: This is saying assuming payment is verified and URL parameter is present.
[27:37] Christopher David: Placeholder for executing the x is in plug with URL. Okay.
[27:47] Christopher David: Before we do L402.
[27:52] Christopher David: Let's first get the x-dism piece running.
[27:54] Christopher David: I'm not sure if you can see the x-dism piece running.
[28:20] Christopher David: I never deployed
[28:25] Christopher David: the wasm file for this.
[28:34] Christopher David: Well, there it is though.
[28:41] Christopher David: I wonder if I can just use that. Okay, so we do have the host for I don't know if this is the most updated one.
[28:49] Christopher David: We'll try it.
[28:51] Christopher David: But so what I need now is the ability to load a wasm and x-dism plug-in via the go app.
[28:59] Christopher David: So for that I need to go SDK, I think.
[29:08] Christopher David: And what I'm wondering also is if the same
[29:13] Christopher David: quick start. So we did the quick start for write a plug-in and rust.
[29:17] Christopher David: What if I do run a plug-in and go there's much more languages here?
[29:24] Christopher David: Yeah, here we go, here we go.
[29:31] Christopher David: I can't have this whole thing. I really enjoy it when docks when I can copy paste the whole thing.
[29:36] Christopher David: A bunch of docks that just don't let you do it. Okay.
[29:43] Christopher David: I don't need all that.
[29:47] Christopher David: Okay.
[29:53] Christopher David: Thanks. Let's first implement the x-dism plug-in functionality
[30:01] Christopher David: before two after that. So we need to implement this x-dism go SDK code
[30:12] Christopher David: in the handler.
[30:13] Christopher David: And vise, please rewrite main.go to implement this.
[30:31] Christopher David: To incorporate the x-dism plug-in functionality into your main.go file as described,
[30:35] Christopher David: I will rewrite the main.go to include the initialization of an x-dism plug-in
[30:39] Christopher David: and make a call to the plug-in's export function from within the feds. You are all content.
[30:43] Christopher David: handler. This implementation assumes you want to replace the placeholder function x-dism plug with
[30:48] Christopher David: URL with actual logic to call an x-dism plug-in specifically the example of counting vowels using the
[30:55] Christopher David: no no no no no.
[31:04] Christopher David: Okay. So let me give it the actual.
[31:17] Christopher David: Thanks, except no I want you to not to replace that count vowels
[31:25] Christopher David: stuff with this plug-in we already wrote.
[31:41] Christopher David: And that exposes the function.
[31:49] Christopher David: Go into our plugin code fetch URL content
[31:56] Christopher David: written as such.
[32:07] Christopher David: So in this case both are plugin and our hosenvimant are in go but the plugin could be written in rust.
[32:15] Christopher David: It doesn't matter it's all compiling to wasm.
[32:17] Christopher David: To integrate your specific x-dism plug-in for URL scraping into the main.go file of your go
[32:28] Christopher David: HTTP server application we'll replace the previous example plugin with your plugin.
[32:32] Christopher David: The plugin you've written and go and compile to have assembly exposes a function fetch URL content
[32:36] Christopher David: that fetches the content of your URL. The updated main.go file will download and initialize your plugin
[32:41] Christopher David: from the provided URL and use it to scrape content from URLs provided in an HTTP request
[32:48] Christopher David: to the fetch URL content. Please ensure you have the x-dism go SDK installed.
[32:53] Christopher David: Here's how you can adjust main.go. Okay while that hopefully finishes let's go install the SDK.
[33:06] Christopher David: And before we do that let's see what we did.
[33:18] Christopher David: Initial HTTP server initial sublure HTTP server and then we'll do oops oops.
[33:29] Christopher David: That to install the x-dism go SDK.
[33:39] Christopher David: Oops.
[33:47] Christopher David: Okay.
[33:54] Christopher David: I'm liking go. I'm liking go.
[33:59] Christopher David: Okay.
[34:05] Christopher David: ChadGPT knows it must know that we're trying to replace it. It's like I'm not going to help you do that.
[34:15] Christopher David: Do it. Do it.
[34:23] Christopher David: You timed out. Please give me that again.
[34:28] Christopher David: The entire code.
[34:59] Christopher David: If you want to use the URL content handler, handle requests to fetch content from URL.
[35:13] Christopher David: Load your x-dism plugin.
[35:20] Christopher David: Get the URL from the get request. Call the fetch URL content function on the plugin.
[35:29] Christopher David: Return the fetch content.
[35:35] Christopher David: Load wasm binary.
[35:47] Christopher David: Help me.
[35:58] Christopher David: You'll likely need to modify this function to correctly load.
[36:21] Christopher David: No.
[36:27] Christopher David: Just the example code from the wasm from the x-dism.
[36:33] Christopher David: Doc I sent you should work.
[36:37] Christopher David: Remove that load wasm binary stuff.
[36:46] Christopher David: Apologies for the confusion.
[36:51] Christopher David: You can't do that.
[37:07] Christopher David: That's interesting. That's a lazy version of the in-ed function.
[37:21] Christopher David: Okay. Do we think this is going to work?
[37:37] Christopher David: Do we think this is going to work?
[37:51] Christopher David: Okay. Fail to initialize plugin module.
[38:13] Christopher David: Wasis. Now I'm trying to do it.
[38:19] Christopher David: I remember when we called it from the command library to pass in a wasi flag.
[38:38] Christopher David: Got anything in here for wasing.
[38:40] Christopher David: Plug in config enable wasing.
[38:47] Christopher David: It might be a simple as pressing in this.
[38:55] Christopher David: I think we need to pass in a flag to enable wasi using the config.
[39:02] Christopher David: Give me that piece of the code again with this.
[39:39] Christopher David: Okay.
[39:41] Christopher David: Okay.
[39:59] Christopher David: the
[40:55] Christopher David: the
[41:25] Christopher David: the
[41:51] Christopher David: the
[41:57] Christopher David: the
[42:19] Christopher David: the
[42:29] Christopher David: the
[42:39] Christopher David: the
[42:49] Christopher David: the
[42:49] Christopher David: the
[42:49] Christopher David: the
[42:49] Christopher David: the
[42:49] Christopher David: the
[42:49] Christopher David: the
[42:49] Christopher David: the
[42:49] Christopher David: the
[42:49] Christopher David: the
[42:49] Christopher David: the
[43:17] Christopher David: the
[43:17] Christopher David: the
[43:43] Christopher David: the
[43:53] Christopher David: the
[44:13] Christopher David: the
[44:23] Christopher David: the
[44:49] Christopher David: the
[44:59] Christopher David: the
[45:29] Christopher David: the
[45:55] Christopher David: the
[46:25] Christopher David: the
[46:25] Christopher David: the
[46:25] Christopher David: the
[46:25] Christopher David: the
[46:25] Christopher David: the
[46:25] Christopher David: the
[46:25] Christopher David: the
[46:25] Christopher David: the
[46:53] Christopher David: the
[46:53] Christopher David: the
[47:13] Christopher David: the
[47:33] Christopher David: the
[48:03] Christopher David: the
[48:13] Christopher David: the
[48:23] Christopher David: the
[48:33] Christopher David: the
[48:43] Christopher David: the
[48:53] Christopher David: the
[49:19] Christopher David: the
[49:29] Christopher David: the
[49:29] Christopher David: the
[49:39] Christopher David: the
[49:49] Christopher David: the
[49:59] Christopher David: the
[50:09] Christopher David: the
[50:19] Christopher David: the
[50:45] Christopher David: the
[50:55] Christopher David: the
[50:55] Christopher David: the
[51:25] Christopher David: the
[51:33] Christopher David: the
[51:39] Christopher David: the
[51:45] Christopher David: the
[51:55] Christopher David: the
[52:03] Christopher David: the
[52:29] Christopher David: the
[52:29] Christopher David: the
[52:34] Christopher David: the
[52:44] Christopher David: the
[52:54] Christopher David: the
[53:00] Christopher David: the
[53:10] Christopher David: the
[53:18] Christopher David: the
[53:23] Christopher David: the
[53:28] Christopher David: the
[53:38] Christopher David: the
[53:46] Christopher David: the
[54:04] Christopher David: the
[54:09] Christopher David: the
[54:12] Christopher David: the
[54:30] Christopher David: the
[54:40] Christopher David: the
[54:48] Christopher David: the
[54:56] Christopher David: the
[55:01] Christopher David: the
[55:06] Christopher David: the
[55:14] Christopher David: the
[55:22] Christopher David: the
[55:27] Christopher David: the
[55:32] Christopher David: the
[55:37] Christopher David: the
[55:42] Christopher David: the
[55:47] Christopher David: the
[55:52] Christopher David: the
[55:57] Christopher David: the
[56:02] Christopher David: the
[56:07] Christopher David: the
[56:15] Christopher David: the
[56:20] Christopher David: the
[56:25] Christopher David: the
[56:30] Christopher David: the
[56:46] Christopher David: the
[56:51] Christopher David: the
[56:56] Christopher David: the
[57:01] Christopher David: the
[57:06] Christopher David: the
[57:11] Christopher David: the
[57:16] Christopher David: the
[57:21] Christopher David: the
[57:26] Christopher David: the
[57:31] Christopher David: the
[57:36] Christopher David: the
[57:41] Christopher David: the
[58:01] Christopher David: the
[58:06] Christopher David: the
[58:11] Christopher David: the
[58:14] Christopher David: the
[58:18] Christopher David: the
[58:21] Christopher David: the
[58:26] Christopher David: the
[58:31] Christopher David: the
[58:56] Christopher David: the
[59:01] Christopher David: the
[59:06] Christopher David: the
[59:10] Christopher David: the
[59:14] Christopher David: the
[59:22] Christopher David: the
[59:27] Christopher David: the
[59:32] Christopher David: the
[59:37] Christopher David: the
[59:40] Christopher David: the
[59:42] Christopher David: the
[59:47] Christopher David: the
[59:52] Christopher David: the
[59:57] Christopher David: the
[01:00:02] Christopher David: the
[01:00:07] Christopher David: the
[01:00:12] Christopher David: the
[59:59] Christopher David: You got to allow path and allow host.
[01:00:17] Christopher David: Call.
[01:00:20] Christopher David: Okay, what does it do with that?
[01:00:26] Christopher David: Run call.
[01:00:31] Christopher David: Manifest.
[01:00:33] Christopher David: Allowed hosts.
[01:00:35] Christopher David: Manifest.
[01:00:36] Christopher David: Allowed paths.
[01:00:39] Christopher David: Okay.
[01:00:40] Christopher David: The ex-dismcee-l-i.
[01:00:44] Christopher David: Flag.
[01:00:46] Christopher David: Configures the Manifest.
[01:00:51] Christopher David: With allowed hosts or paths.
[01:00:54] Christopher David: Here's the Manifest.
[01:01:01] Christopher David: Where's the Manifest?
[01:01:09] Christopher David: This is Walsy.
[01:01:10] Christopher David: Get out of here.
[01:01:11] Christopher David: Ex-dism.
[01:01:13] Christopher David: Manifest.
[01:01:14] Christopher David: Manifest.
[01:01:15] Christopher David: Yo.
[01:01:17] Christopher David: Allowed hosts.
[01:01:18] Christopher David: Yeah, yeah, yeah, yeah, yeah.
[01:01:22] Christopher David: Configure their bro's.
[01:01:28] Christopher David: Hey.
[01:01:31] Christopher David: Muah.
[01:01:33] Christopher David: Sometimes you just gotta go dive into the source code.
[01:01:39] Christopher David: Manifest.
[01:01:42] Christopher David: Do it.
[01:01:43] Christopher David: Just give me it.
[01:01:51] Christopher David: Specify.
[01:01:56] Christopher David: A loud host here.
[01:01:59] Christopher David: Antica permissions going.
[01:02:01] Christopher David: So nice.
[01:02:03] Christopher David: What do we loud in front of those?
[01:02:05] Christopher David: Just fucking anything.
[01:02:06] Christopher David: Just let it go.
[01:02:07] Christopher David: Let it all hang out.
[01:02:08] Christopher David: It's okay.
[01:02:09] Christopher David: It's okay.
[01:02:12] Christopher David: Better work.
[01:02:15] Christopher David: You better work.
[01:02:18] Christopher David: Yes.
[01:02:22] Christopher David: Ha ha ha.
[01:02:24] Christopher David: Okay.
[01:02:26] Christopher David: What do we have?
[01:02:28] Christopher David: We have a go-ling.
[01:02:31] Christopher David: Little HTTP server.
[01:02:34] Christopher David: That's loading our go plugin.
[01:02:41] Christopher David: And doing what the fuck we wanted to do, which is it's taking URL in.
[01:02:45] Christopher David: Call in the host function or calling the plugin, which uses the built-in host function for HTTP.
[01:02:53] Christopher David: To make the HTTP call and return back with content.
[01:02:59] Christopher David: Okay.
[01:03:00] Christopher David: So that's part one.
[01:03:01] Christopher David: Part one.
[01:03:02] Christopher David: And we could stop there.
[01:03:03] Christopher David: We could just deploy this and then and put this into our agent to workflow.
[01:03:07] Christopher David: But.
[01:03:10] Christopher David: And so such a pain in the ass.
[01:03:12] Christopher David: I want to charge for this.
[01:03:14] Christopher David: I want to charge for this.
[01:03:16] Christopher David: Plus I want to put this live.
[01:03:18] Christopher David: And you know, just let people start paying me sats right now.
[01:03:22] Christopher David: Hit my endpoint.
[01:03:23] Christopher David: Hey, you.
[01:03:24] Christopher David: Do you need to fetch HTTP?
[01:03:27] Christopher David: Do you need to make a simple get request?
[01:03:30] Christopher David: Well, make a get request to my endpoint, which will make a get request for you.
[01:03:34] Christopher David: Okay.
[01:03:37] Christopher David: Just let me prove the concept.
[01:03:39] Christopher David: Let me prove the concept.
[01:03:41] Christopher David: Okay.
[01:03:45] Christopher David: Passing allowed hosts and it works.
[01:03:50] Christopher David: I don't need clink.
[01:03:52] Christopher David: I can say whatever the fuck I want.
[01:03:54] Christopher David: Okay.
[01:03:55] Christopher David: All right.
[01:03:57] Christopher David: So let's inform.
[01:03:59] Christopher David: Chad Jippity that this is working.
[01:04:03] Christopher David: Man, it told us a whole bunch of shit.
[01:04:06] Christopher David: It should have just said, yeah, you got to have this one thing.
[01:04:08] Christopher David: Like read the docs read the docs read the source code.
[01:04:13] Christopher David: Okay.
[01:04:16] Christopher David: We now have this working with allow host.
[01:04:19] Christopher David: No thanks to you complicating my fucker.
[01:04:21] Christopher David: Okay.
[01:04:22] Christopher David: We now have this room with a lot of host.
[01:04:24] Christopher David: The ex-dism.
[01:04:25] Christopher David: Plugin is working.
[01:04:34] Christopher David: Great.
[01:04:35] Christopher David: It is returning the HTTP file.
[01:04:40] Christopher David: Get you to be.
[01:04:42] Christopher David: That's that given URL.
[01:04:46] Christopher David: Now let's.
[01:04:49] Christopher David: Bring in the L402 support.
[01:04:53] Christopher David: Please.
[01:04:56] Christopher David: Do it.
[01:04:59] Christopher David: Just fucking do it.
[01:05:02] Christopher David: Don't let me repeat myself.
[01:05:09] Christopher David: Yeah.
[01:05:10] Christopher David: So I don't think this is, uh, I don't know if this is going to
[01:05:14] Christopher David: consult the actual stuff I've pasted earlier in this conversation.
[01:05:19] Christopher David: Okay.
[01:05:21] Christopher David: I don't think I need that anymore.
[01:05:49] Christopher David: Let's see.
[01:05:59] Christopher David: Integrating L402 support into your application involves adding a payment
[01:06:03] Christopher David: require meant before executing the plugin functionality.
[01:06:07] Christopher David: For this scenario, I'll outline a simplified approach to simulate payment
[01:06:10] Christopher David: verification.
[01:06:11] Christopher David: The approach includes checking for a hypothetical payment token in the request header.
[01:06:16] Christopher David: If the token is valid, we proceed with calling the plugin otherwise.
[01:06:19] Christopher David: We return an HTTP 402 payment required response.
[01:06:24] Christopher David: This example doesn't implement real payment processing, but gives you a structure to integrate
[01:06:29] Christopher David: with an actual payment system.
[01:06:35] Christopher David: Uh, yeah, yeah, yeah, yeah, yeah.
[01:06:38] Christopher David: That's not correct.
[01:06:40] Christopher David: That's not correct.
[01:06:44] Christopher David: So let's go back to our original main.gov.
[01:06:53] Christopher David: Um, thanks, except we are going to use the same L402 code as the original example.
[01:07:20] Christopher David: I gave you.
[01:07:35] Christopher David: Remember, we began by forking the code base with this logic in main.gov.
[01:07:49] Christopher David: And this handler.
[01:07:55] Christopher David: Okay.
[01:08:17] Christopher David: Use that to implement L42.
[01:08:22] Christopher David: Okay.
[01:08:27] Christopher David: To integrate the L402 support with your current setup, where the ex-tism plugin fetches URL content,
[01:08:32] Christopher David: you can incorporate the payment authorization logic from your original pass through handler into the fetch URL content.
[01:08:38] Christopher David: As it involves checking for authorization before executing the plugin call and requiring payment to necessary.
[01:08:44] Christopher David: Given the structure of your original application, here's how you can adapt the fetch URL content handler to include L402 support,
[01:08:50] Christopher David: reusing the logic from your pass through handler.
[01:08:53] Christopher David: One, integrate L402 payment to check before executing the ex-tism plugin check if you request is authorized.
[01:09:00] Christopher David: If not, return a 402 payment required response along with the payment details.
[01:09:05] Christopher David: Use ex-tism plugin, object size for payment.
[01:09:08] Christopher David: Yeah, let's see. Let's see if you've said that already.
[01:09:20] Christopher David: Core is set up.
[01:09:50] Christopher David: This version integrates L402 payment logic directly into the fetch URL content handler.
[01:10:10] Christopher David: It leverages. Oh, we got to continue generating button. You better.
[01:10:15] Christopher David: There was an error generating response.
[01:10:18] Christopher David: Chats, even see, we're going to have.
[01:10:21] Christopher David: We do have some problems. I'm in the middle of replacing you. I'm trying to replace you faster.
[01:10:27] Christopher David: Okay.
[01:10:29] Christopher David: Let's try dumping this.
[01:10:42] Christopher David: And I will commit this now as initial L42 maybe.
[01:10:52] Christopher David: Okay.
[01:11:03] Christopher David: Wow. It is nuked all of a code of game.
[01:11:11] Christopher David: You're a response was deleted, but this was the code you gave me.
[01:11:37] Christopher David: The provided code integrates the L42 payment requirement with an ex-tism plugin for fetching URL content.
[01:11:52] Christopher David: The implementation loads, environment variables, initializes the database and secret for off.
[01:11:57] Christopher David: And sets up a server with core support.
[01:11:59] Christopher David: Upon receiving a request, effects URL content, a checks for authorization.
[01:12:02] Christopher David: If the request is unauthorized, it triggers a payment requirement using the L42 process.
[01:12:06] Christopher David: If the payment is verified, it then proceeds to call the x-is-implug-in-defection return to URL content.
[01:12:11] Christopher David: Here's a story how this works.
[01:12:17] Christopher David: Payment verification. When the fetch URL content route is accessed, the handler first checks other requests is authorized.
[01:12:23] Christopher David: If an authorized response with the 4x of your required, including a payment prompt.
[01:12:28] Christopher David: Plug an execution. If the request is authorized, IE payment verified. Initialize with the x-is-implug-in with the provided Walsam URL and allow post settings.
[01:12:35] Christopher David: It then calls the fetch URL content function within the plugin patch and the request URL as input.
[01:12:40] Christopher David: The output is sent back to the client.
[01:12:43] Christopher David: This code effectively combines L42 payment logic with the functionality of an x-isimplug-in serving as a gateway that requires payment before allowing access to specific capabilities in this case fetching URL content.
[01:12:54] Christopher David: To deploy this in a production environment, ensure that the .end file contains all necessary configurations including price sets and any other required environment variables.
[01:13:05] Christopher David: The database installation is in the process.
[01:13:11] Christopher David: So what is this price set situation?
[01:13:25] Christopher David: Global price.
[01:13:37] Christopher David: OS.get in price sets.
[01:13:41] Christopher David: That's just probably the lazy hard coding situation.
[01:13:54] Christopher David: Maybe.
[01:14:03] Christopher David: Auth.getL42.
[01:14:09] Christopher David: Extract token.
[01:14:13] Christopher David: Check authorization header.
[01:14:20] Christopher David: Returns the L42 authentication header for the given request.
[01:14:30] Christopher David: Explain this.
[01:14:50] Christopher David: You can see the file is in the file.
[01:15:00] Christopher David: You can see the file is in the file.
[01:15:05] Christopher David: You can see the file is in the file.
[01:15:09] Christopher David: You can see the file is in the file.
[01:15:19] Christopher David: You can see the file is in the file.
[01:15:24] Christopher David: You can see the file is in the file.
[01:15:29] Christopher David: I was thinking the bitcoin price is so defined somewhere.
[01:15:39] Christopher David: I'm going to get a new file.
[01:15:49] Christopher David: I'm going to get a new file.
[01:15:54] Christopher David: I'm going to get a new file.
[01:15:59] Christopher David: I'm going to get a new file.
[01:16:09] Christopher David: I'm going to get a new file.
[01:16:19] Christopher David: I'm going to get a new file.
[01:16:29] Christopher David: I'm going to get a new file.
[01:16:39] Christopher David: I'm guessing.
[01:17:02] Christopher David: If you imagine keys, you'll just mess up.
[01:17:11] Christopher David: Okay.
[01:17:19] Christopher David: I want to add a git ignore.
[01:17:49] Christopher David: I think that's good.
[01:18:04] Christopher David: I think we're ready to deploy this and test it.
[01:18:08] Christopher David: I don't quite know how to test this locally.
[01:18:14] Christopher David: I mean, I can run the application.
[01:18:24] Christopher David: Let's see if there's any errors.
[01:18:28] Christopher David: Hey, hey everybody.
[01:18:44] Christopher David: FMT imported and not used.
[01:18:54] Christopher David: I'm going to get a new file.
[01:19:24] Christopher David: I'm going to get a new file.
[01:19:40] Christopher David: What was this previously?
[01:19:59] Christopher David: This could be used all the dark request info.
[01:20:28] Christopher David: Did the use request info of any sort?
[01:20:54] Christopher David: Okay, so pick a G models,
[01:21:04] Christopher David: REC info.go has this code.
[01:21:14] Christopher David: So fix the original code.
[01:22:04] Christopher David: Okay, so I'm going to try to do this.
[01:22:29] Christopher David: I'm going to have a look at the code.
[01:22:59] Christopher David: Okay, so I'm going to do this.
[01:23:27] Christopher David: Okay, so I'm going to do this.
[01:23:55] Christopher David: Go mod.
[01:24:10] Christopher David: Okay, so I'm going to do this.
[01:24:35] Christopher David: Okay, so I think that we just got the file name wrong.
[01:24:50] Christopher David: Okay, this is not even the right.
[01:25:00] Christopher David: Okay, so pick a G models REC info.
[01:25:10] Christopher David: Package request.
[01:25:30] Christopher David: Maybe.
[01:25:39] Christopher David: Greatest Go developer in the world right here.
[01:25:50] Christopher David: Fix African name of model REC info import.
[01:25:56] Christopher David: Okay, so out of curiosity, just if I go to this, hopefully this gives me a nice L4 or two error refresh internal server error.
[01:26:17] Christopher David: Okay, error getting invoice.
[01:26:26] Christopher David: 5,000 msats not insensible range of 0 to 0.
[01:26:54] Christopher David: I mean, that is expected because we didn't pass it one.
[01:27:16] Christopher David: I mean, maybe that wouldn't happen if we did pass it in authorization center.
[01:27:34] Christopher David: Okay, so this is called service dot get invoice.
[01:27:56] Christopher David: Service.
[01:28:14] Christopher David: Ln address.
[01:28:24] Christopher David: Get invoice from the server.
[01:28:26] Christopher David: Does there need to connect this to a notice something.
[01:28:30] Christopher David: Get payment hash.
[01:29:30] Christopher David: Okay, so I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think
[01:30:00] Christopher David: I get Alby.com.
[01:30:05] Christopher David: Let's try again.
[01:30:10] Christopher David: All right, we're going to even say anything.
[01:30:25] Christopher David: After the get call back call.
[01:30:54] Christopher David: And what here.
[01:31:19] Christopher David: Where's my syntax?
[01:31:20] Christopher David: Where's my syntax?
[01:31:44] Christopher David: LN, GitHub and BDWTF, Ellen the CodePay.
[01:32:14] Christopher David: I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the
[01:32:44] Christopher David: the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I
[01:33:14] Christopher David: think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first
[01:33:44] Christopher David: I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the first thing that I think that's the
[01:34:14] Christopher David: okay let me quit out of this because I don't know why
[01:35:14] Christopher David: okay
[01:35:40] Christopher David: I'm taking one last look at this and then I'm just going to skip past this into play and see if we get the same error in production
[01:35:50] Christopher David: and I'm still like them new being I don't even remember how I don't even know how to like do a search all through my own code base.
[01:36:11] Christopher David: error getting invoice.
[01:36:17] Christopher David: It fails at service dot get invoice.
[01:36:26] Christopher David: Service being this.
[01:36:34] Christopher David: Get invoice is failing.
[01:36:35] Christopher David: Eleanor.
[01:36:39] Christopher David: Eleanor max.
[01:36:40] Christopher David: Eleanor.
[01:36:41] Christopher David: Eleanor.
[01:36:42] Christopher David: Eleanor.
[01:36:43] Christopher David: Eleanor.
[01:36:44] Christopher David: Eleanor.
[01:36:45] Christopher David: Eleanor.
[01:36:46] Christopher David: Eleanor.
[01:36:47] Christopher David: Eleanor.
[01:36:48] Christopher David: Eleanor.
[01:36:49] Christopher David: Eleanor.
[01:36:50] Christopher David: Eleanor.
[01:36:51] Christopher David: Eleanor.
[01:36:52] Christopher David: Eleanor.
[01:36:53] Christopher David: Eleanor.
[01:36:54] Christopher David: Eleanor.
[01:36:55] Christopher David: Eleanor.
[01:36:56] Christopher David: Eleanor.
[01:36:57] Christopher David: Eleanor.
[01:36:58] Christopher David: Eleanor.
[01:36:59] Christopher David: Eleanor.
[01:37:00] Christopher David: Eleanor.
[01:37:01] Christopher David: Eleanor.
[01:37:02] Christopher David: Eleanor.
[01:37:03] Christopher David: Eleanor.
[01:37:04] Christopher David: Eleanor.
[01:37:05] Christopher David: Eleanor.
[01:37:06] Christopher David: Eleanor.
[01:37:07] Christopher David: Eleanor.
[01:37:08] Christopher David: Eleanor.
[01:37:10] Christopher David: Where is that set?
[01:37:26] Christopher David: This repository is code is being in nature right now trying it a few minutes.
[01:37:30] Christopher David: Wow.
[01:37:31] Christopher David: What a better older could be.
[01:37:40] Christopher David: Where is it set?
[01:37:53] Christopher David: Is it like retrieved from the lightning address?
[01:37:59] Christopher David: Where was that code I just had?
[01:38:10] Christopher David: There's a red from it.
[01:38:19] Christopher David: There's trying to read from it.
[01:38:36] Christopher David: There's a red from it.
[01:38:46] Christopher David: There's a red from it.
[01:38:54] Christopher David: Where is Ellen Adder?
[01:39:00] Christopher David: Written two.
[01:39:09] Christopher David: Pastrue.
[01:39:17] Christopher David: OK.
[01:39:20] Christopher David: It's written two in get callback.
[01:39:27] Christopher David: And then you can see the code.
[01:39:50] Christopher David: And then you can see the code.
[01:39:59] Christopher David: It seems to be returning a response that sets 0 to min and max sendable, causing that error and I don't know why.
[01:40:19] Christopher David: And that is in the...
[01:40:30] Christopher David: Ln file.
[01:40:51] Christopher David: Okay, where's the...
[01:40:53] Christopher David: So get call back, I'm just gonna call it's old get call back and I'm just gonna paste in this entire thing here.
[01:41:10] Christopher David: And let's try that again.
[01:41:19] Christopher David: What the fuck?
[01:41:23] Christopher David: So...
[01:42:23] Christopher David: Okay, let's try the pointless.
[01:42:31] Christopher David: It's at least running and I'm just wondering if I'll get a different error and prod them and I'll get a code.
[01:42:34] Christopher David: Okay, so uh... I don't have to play go out for games.
[01:42:40] Christopher David: Foli.io.
[01:42:42] Christopher David: Okay.
[01:42:50] Christopher David: Are you gonna make me learn abstractions or gonna just throw it somewhere?
[01:43:12] Christopher David: All right, I'm gonna get them to try.
[01:43:42] Christopher David: Okay.
[01:44:07] Christopher David: So... let's open it.
[01:44:12] Christopher David: Do I have to do that?
[01:44:26] Christopher David: Apparently adding...
[01:44:29] Christopher David: Okay.
[01:44:42] Christopher David: Okay.
[01:45:12] Christopher David: Okay.
[01:45:42] Christopher David: Okay.
[01:46:12] Christopher David: Okay.
[01:46:14] Christopher David: Okay.
[01:46:38] Christopher David: All right, internal server error. Nice.
[01:46:41] Christopher David: See we've got logs.
[01:46:43] Christopher David: Let's see if it's the same error we were getting locally.
[01:46:57] Christopher David: Okay, yeah.
[01:46:59] Christopher David: Same error.
[01:47:11] Christopher David: Okay.
[01:47:22] Christopher David: So the payment required, that sounds nice.
[01:47:28] Christopher David: Let's see if I can go here.
[01:47:33] Christopher David: Have you finished indexing my code base yet?
[01:47:40] Christopher David: I'm guessing it's using this one.
[01:47:58] Christopher David: Oh, this is the old code I think.
[01:48:00] Christopher David: This is request.
[01:48:10] Christopher David: So the worst to keep it message is that we're on that okay.
[01:48:27] Christopher David: Okay.
[01:48:36] Christopher David: Request.request.info.
[01:48:38] Christopher David: Is that correct?
[01:48:57] Christopher David: Request.
[01:49:03] Christopher David: Yeah.
[01:49:27] Christopher David: Okay.
[01:49:52] Christopher David: Okay. So let's step through what should be happening here.
[01:49:57] Christopher David: Okay.
[01:50:21] Christopher David: Okay, new error.
[01:50:26] Christopher David: Calling request info.
[01:50:56] Christopher David: Okay.
[01:51:08] Christopher David: Okay, this is just making a struct with the path, I think.
[01:51:20] Christopher David: Check authorization header.
[01:51:26] Christopher David: Check authorization header is doing what?
[01:51:56] Christopher David: This is saying no authorization header. That is the error we got.
[01:52:26] Christopher David: That returns no authorization header. That's fine.
[01:52:45] Christopher David: Because this returns an error, it says,
[01:52:47] Christopher David: anotherized payment required.
[01:52:50] Christopher David: Then it calls off dot get L402.
[01:52:59] Christopher David: With the rec info struct with the path.
[01:53:10] Christopher David: Eventually it's going to say error getting L402.
[01:53:14] Christopher David: With the error that bubbles up from this off get L42.
[01:53:38] Christopher David: So
[01:53:40] Christopher David: it says error getting invoice.
[01:53:47] Christopher David: 5,000 ms so that's being passed in.
[01:53:52] Christopher David: So it fails on this call invoice comma error.
[01:53:56] Christopher David: Service dot get invoice.
[01:54:03] Christopher David: Service is defined here.
[01:54:05] Christopher David: Get invoice is failing.
[01:54:23] Christopher David: It's expecting L and order to already be done.
[01:54:25] Christopher David: Okay, I think.
[01:54:29] Christopher David: I think it's because maybe we had previously code.
[01:54:35] Christopher David: In I'm guessing the handler passed through because we were like doing simpler versions of the L402 code in main dot go.
[01:54:44] Christopher David: Because I started with a function duplicate when I was doing the search.
[01:54:47] Christopher David: I'm guessing that at some other point we should have called this get callback from the lightning address,
[01:54:55] Christopher David: which sets the L and address response with those that zero and zero information.
[01:55:05] Christopher David: Let's pop over to pass through and see how this is how it used to be done.
[01:55:11] Christopher David: When we were doing the full proxy.
[01:55:22] Christopher David: We were saying service dot L and order.
[01:55:27] Christopher David: We were doing this first in the init of pastro.
[01:55:31] Christopher David: Let's see.
[01:55:35] Christopher David: Let's see.
[01:55:38] Christopher David: If we can put that, we're sure to go.
[01:55:44] Christopher David: Main.
[01:55:47] Christopher David: Do I have service here?
[01:55:52] Christopher David: Or put it doing that in off.
[01:55:54] Christopher David: Yeah, because this is just not defined at this point.
[01:56:00] Christopher David: Let's just try putting this there.
[01:56:11] Christopher David: So I'm either greatest go developer of all time or the second greatest developer of all time.
[01:56:16] Christopher David: Let's see. Okay, not enough return values.
[01:56:23] Christopher David: I'm just going to add a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit
[01:56:53] Christopher David: little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little
[01:57:23] Christopher David: a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a
[01:57:53] Christopher David: little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little bit of a little
[01:58:23] Christopher David: bar er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er
[01:58:53] Christopher David: er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er
[01:59:23] Christopher David: er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er
[01:59:53] Christopher David: er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er er
[01:59:59] Christopher David: of
[02:00:25] Christopher David: the
[02:01:11] Christopher David: the
[02:01:37] Christopher David: the
[02:02:03] Christopher David: the
[02:02:29] Christopher David: the
[02:02:55] Christopher David: the
[02:03:21] Christopher David: the
[02:03:41] Christopher David: the
[02:04:01] Christopher David: the
[02:04:21] Christopher David: the
[02:04:47] Christopher David: the
[02:05:07] Christopher David: the
[02:05:33] Christopher David: the
[02:05:53] Christopher David: the
[02:06:19] Christopher David: the
[02:06:45] Christopher David: the
[02:07:03] Christopher David: the
[02:07:31] Christopher David: the
[02:07:51] Christopher David: the
[02:08:11] Christopher David: the
[02:08:37] Christopher David: the
[02:08:57] Christopher David: the
[02:09:17] Christopher David: the
[02:09:37] Christopher David: the
[02:10:03] Christopher David: the
[02:10:28] Christopher David: the
[02:10:48] Christopher David: the
[02:11:14] Christopher David: the
[02:11:34] Christopher David: the
[02:12:04] Christopher David: the
[02:12:34] Christopher David: the
[02:12:54] Christopher David: the
[02:13:24] Christopher David: the
[02:13:34] Christopher David: the
[02:13:44] Christopher David: the
[02:14:04] Christopher David: the
[02:14:24] Christopher David: the
[02:14:34] Christopher David: the
[02:14:44] Christopher David: the
[02:14:54] Christopher David: the
[02:15:04] Christopher David: the
[02:15:24] Christopher David: the
[02:15:52] Christopher David: the
[02:16:02] Christopher David: the
[02:16:32] Christopher David: the
[02:16:58] Christopher David: the
[02:17:08] Christopher David: the
[02:17:18] Christopher David: the
[02:17:28] Christopher David: the
[02:17:38] Christopher David: the
[02:17:48] Christopher David: the
[02:17:58] Christopher David: the
[02:18:06] Christopher David: the
[02:18:16] Christopher David: the
[02:18:24] Christopher David: the
[02:18:50] Christopher David: the
[02:19:00] Christopher David: the
[02:19:10] Christopher David: the
[02:19:18] Christopher David: the
[02:19:28] Christopher David: the
[02:19:36] Christopher David: the
[02:19:56] Christopher David: the
[02:19:59] Christopher David: and don't need all that.
[02:20:03] Christopher David: Unless necessary.
[02:20:12] Christopher David: Super unnecessary.
[02:20:27] Christopher David: Quotes something something?
[02:20:30] Christopher David: I don't know. Don't make me think about it.
[02:20:50] Christopher David: Fucking...
[02:20:59] Christopher David: I'm not sure if you can see it.
[02:21:09] Christopher David: Okay, so it looks like we're parsing those things fine now.
[02:21:15] Christopher David: That's nice.
[02:21:19] Christopher David: So don't...
[02:21:20] Christopher David: D-d it.
[02:21:21] Christopher David: Let's make sure we are paying this invoice fine via Albing.
[02:21:37] Christopher David: And let me pop open my...
[02:21:39] Christopher David: Let's see where am I paying this out of?
[02:21:43] Christopher David: Ballon?
[02:21:45] Christopher David: I don't know what my passcode is.
[02:21:51] Christopher David: And I'm paying this out of the...
[02:21:57] Christopher David: Oh, but agents want to think.
[02:21:59] Christopher David: So it should just come out of there.
[02:22:01] Christopher David: Okay.
[02:22:05] Christopher David: Pay it.
[02:22:09] Christopher David: Pay it. I think.
[02:22:11] Christopher David: Can we assemble the token?
[02:22:15] Christopher David: Let's just try the whole thing.
[02:22:17] Christopher David: Let's just try the whole thing.
[02:22:19] Christopher David: Let's just try the whole thing.
[02:22:21] Christopher David: My test is expecting...
[02:22:25] Christopher David: Yeah, the city is not going to be London.
[02:22:29] Christopher David: Just jump the data.
[02:22:31] Christopher David: I want to make expecting.
[02:22:33] Christopher David: I'm expecting the content of the URL that comes again, which is code.
[02:22:39] Christopher David: Give me some code.
[02:22:41] Christopher David: Give me some code.
[02:22:45] Christopher David: Air accessing the API 402.
[02:22:51] Christopher David: Well, yes.
[02:22:55] Christopher David: That's what I want originally.
[02:23:03] Christopher David: It's like Air 402.
[02:23:05] Christopher David: No, yeah, that's what I want.
[02:23:11] Christopher David: Depaction is 144.
[02:23:42] Christopher David: What is this even, too?
[02:23:51] Christopher David: What does that even do?
[02:24:03] Christopher David: Air 402.
[02:24:11] Christopher David: Is that my token?
[02:24:41] Christopher David: Oops.
[02:24:53] Christopher David: That's a request.
[02:24:55] Christopher David: There are spots.
[02:25:05] Christopher David: So...
[02:25:11] Christopher David: This is supposed to handle it and then pay it.
[02:25:15] Christopher David: So it looks like it's just paying it.
[02:25:19] Christopher David: Is it deducting?
[02:25:21] Christopher David: Yeah, I'm paying it.
[02:25:27] Christopher David: That's really good.
[02:25:29] Christopher David: End point that never acknowledges that you actually pay it.
[02:25:31] Christopher David: Just like, yeah, paying.
[02:25:33] Christopher David: No, pay anymore.
[02:25:35] Christopher David: So it assembles the token, then it retries it with the token.
[02:26:01] Christopher David: And then it returns that.
[02:26:05] Christopher David: So yeah, it's looking like it's.
[02:26:11] Christopher David: It's got the request here where it's passing this token in.
[02:26:15] Christopher David: That looks good.
[02:26:17] Christopher David: And then the response it's getting back is.
[02:26:23] Christopher David: Another.
[02:26:27] Christopher David: Requests for payment.
[02:26:29] Christopher David: Okay.
[02:26:31] Christopher David: Let's check the logs.
[02:26:33] Christopher David: So we have no authorization header.
[02:26:43] Christopher David: Another payment required.
[02:26:45] Christopher David: Starting to get called back.
[02:26:47] Christopher David: Constructed it.
[02:26:49] Christopher David: To code it.
[02:26:51] Christopher David: Verify your URL.
[02:26:53] Christopher David: And we don't have any logging after that.
[02:26:57] Christopher David: Let me try this one more time.
[02:27:03] Christopher David: Just see if you get the same thing or what that was.
[02:27:07] Christopher David: And it does it a second time.
[02:27:15] Christopher David: It looks like the.
[02:27:19] Christopher David: Both requests are saying.
[02:27:23] Christopher David: No authorization header.
[02:27:27] Christopher David: So the question here first of all is.
[02:27:33] Christopher David: Now, we do center.
[02:27:41] Christopher David: Questions both times.
[02:27:43] Christopher David: Do center.
[02:27:47] Christopher David: Okay, so first of all, are we assembling the L4 or two token here?
[02:27:55] Christopher David: I can't delete the inside of the question.
[02:27:57] Christopher David: So dd the first time I sent.
[02:28:01] Christopher David: Okay, it assembles a token.
[02:28:07] Christopher David: Then it's supposed to resend it.
[02:28:14] Christopher David: Let's just make sure now we have.
[02:28:17] Christopher David: Authorization header.
[02:28:21] Christopher David: On.
[02:28:23] Christopher David: Oops.
[02:28:25] Christopher David: There.
[02:28:31] Christopher David: So that is the authorization header.
[02:28:39] Christopher David: L4 to with the token looks good to me.
[02:28:43] Christopher David: So there may be a problem with.
[02:28:49] Christopher David: The receiving code.
[02:28:55] Christopher David: Where did say.
[02:29:03] Christopher David: Yeah, saying.
[02:29:05] Christopher David: If.
[02:29:09] Christopher David: If.
[02:29:13] Christopher David: If.
[02:29:15] Christopher David: If.
[02:29:19] Christopher David: If.
[02:29:21] Christopher David: If.
[02:29:23] Christopher David: If.
[02:29:25] Christopher David: If.
[02:29:27] Christopher David: If.
[02:29:29] Christopher David: If.
[02:29:31] Christopher David: If.
[02:29:33] Christopher David: If.
[02:29:35] Christopher David: If.
[02:29:37] Christopher David: If.
[02:29:39] Christopher David: If.
[02:29:41] Christopher David: If.
[02:29:43] Christopher David: If.
[02:29:45] Christopher David: If.
[02:29:47] Christopher David: If.
[02:29:49] Christopher David: If.
[02:29:51] Christopher David: If.
[02:29:53] Christopher David: If.
[02:29:55] Christopher David: If.
[02:29:57] Christopher David: If.
[02:29:59] Christopher David: If.
[02:30:01] Christopher David: If.
[02:30:03] Christopher David: If.
[02:30:05] Christopher David: If.
[02:30:07] Christopher David: If.
[02:30:09] Christopher David: If.
[02:30:11] Christopher David: If.
[02:30:13] Christopher David: If.
[02:30:15] Christopher David: If.
[02:30:17] Christopher David: If.
[02:30:19] Christopher David: If.
[02:30:21] Christopher David: If.
[02:30:23] Christopher David: If.
[02:30:25] Christopher David: If.
[02:30:27] Christopher David: If.
[02:30:29] Christopher David: If.
[02:30:31] Christopher David: If.
[02:30:33] Christopher David: If.
[02:30:35] Christopher David: If.
[02:30:37] Christopher David: If.
[02:30:39] Christopher David: If.
[02:30:41] Christopher David: If.
[02:30:43] Christopher David: If.
[02:30:45] Christopher David: If.
[02:30:47] Christopher David: If.
[02:30:49] Christopher David: If.
[02:30:51] Christopher David: If.
[02:30:53] Christopher David: If.
[02:30:55] Christopher David: If.
[02:30:58] Christopher David: If.
[02:30:59] Christopher David: If.
[02:31:01] Christopher David: If.
[02:31:03] Christopher David: If.
[02:31:05] Christopher David: If.
[02:31:07] Christopher David: If.
[02:31:09] Christopher David: If.
[02:31:11] Christopher David: If.
[02:31:13] Christopher David: If.
[02:31:15] Christopher David: If.
[02:31:17] Christopher David: If.
[02:31:19] Christopher David: If.
[02:31:21] Christopher David: If.
[02:31:23] Christopher David: If.
[02:31:25] Christopher David: If.
[02:31:27] Christopher David: If.
[02:31:29] Christopher David: If.
[02:31:31] Christopher David: If.
[02:31:33] Christopher David: If.
[02:31:35] Christopher David: If.
[02:31:37] Christopher David: If.
[02:31:39] Christopher David: If.
[02:31:41] Christopher David: If.
[02:31:43] Christopher David: If.
[02:31:45] Christopher David: If.
[02:31:47] Christopher David: If.
[02:31:49] Christopher David: If.
[02:31:51] Christopher David: If.
[02:31:53] Christopher David: If.
[02:31:55] Christopher David: If.
[02:31:57] Christopher David: If.
[02:31:59] Christopher David: If.
[02:32:01] Christopher David: If.
[02:32:03] Christopher David: If.
[02:32:05] Christopher David: If.
[02:32:07] Christopher David: If.
[02:32:09] Christopher David: If.
[02:32:11] Christopher David: If.
[02:32:13] Christopher David: If.
[02:32:15] Christopher David: If.
[02:32:17] Christopher David: If.
[02:32:19] Christopher David: If.
[02:32:21] Christopher David: If.
[02:32:23] Christopher David: If.
[02:32:25] Christopher David: If.
[02:32:27] Christopher David: If.
[02:32:29] Christopher David: If.
[02:32:31] Christopher David: If.
[02:32:33] Christopher David: If.
[02:32:35] Christopher David: If.
[02:32:37] Christopher David: If.
[02:32:39] Christopher David: If.
[02:32:41] Christopher David: If.
[02:32:43] Christopher David: If.
[02:32:45] Christopher David: If.
[02:32:47] Christopher David: If.
[02:32:49] Christopher David: If.
[02:32:53] Christopher David: If.
[02:32:55] Christopher David: If.
[02:32:57] Christopher David: If.
[02:32:59] Christopher David: If.
[02:33:01] Christopher David: If.
[02:33:03] Christopher David: If.
[02:33:05] Christopher David: If.
[02:33:07] Christopher David: If.
[02:33:09] Christopher David: If.
[02:33:11] Christopher David: If.
[02:33:13] Christopher David: If.
[02:33:15] Christopher David: If.
[02:33:17] Christopher David: If.
[02:33:19] Christopher David: If.
[02:33:21] Christopher David: If.
[02:33:23] Christopher David: If.
[02:33:25] Christopher David: If.
[02:33:27] Christopher David: If.
[02:33:29] Christopher David: If.
[02:33:31] Christopher David: If.
[02:33:33] Christopher David: If.
[02:33:35] Christopher David: If.
[02:33:37] Christopher David: If.
[02:33:39] Christopher David: If.
[02:33:41] Christopher David: If.
[02:33:43] Christopher David: If.
[02:33:45] Christopher David: If.
[02:33:49] Christopher David: If.
[02:33:53] Christopher David: If.
[02:33:55] Christopher David: If.
[02:33:57] Christopher David: If.
[02:33:59] Christopher David: If.
[02:34:01] Christopher David: If.
[02:34:03] Christopher David: If.
[02:34:05] Christopher David: If.
[02:34:07] Christopher David: If.
[02:34:09] Christopher David: If.
[02:34:11] Christopher David: If.
[02:34:14] Christopher David: If.
[02:34:15] Christopher David: If.
[02:34:17] Christopher David: If.
[02:34:19] Christopher David: If.
[02:34:21] Christopher David: If.
[02:34:23] Christopher David: If.
[02:34:25] Christopher David: If.
[02:34:27] Christopher David: If.
[02:34:29] Christopher David: If.
[02:34:31] Christopher David: If.
[02:34:33] Christopher David: If.
[02:34:35] Christopher David: If.
[02:34:37] Christopher David: If.
[02:34:39] Christopher David: If.
[02:34:41] Christopher David: If.
[02:34:43] Christopher David: If.
[02:34:44] Christopher David: If.
[02:34:46] Christopher David: If.
[02:34:48] Christopher David: If.
[02:34:50] Christopher David: If.
[02:34:52] Christopher David: If.
[02:34:54] Christopher David: If.
[02:34:56] Christopher David: If.
[02:34:58] Christopher David: If.
[02:35:00] Christopher David: If.
[02:35:02] Christopher David: If.
[02:35:04] Christopher David: If.
[02:35:06] Christopher David: If.
[02:35:08] Christopher David: If.
[02:35:10] Christopher David: If.
[02:35:16] Christopher David: If.
[02:35:20] Christopher David: If.
[02:35:22] Christopher David: If.
[02:35:24] Christopher David: If.
[02:35:26] Christopher David: If.
[02:35:28] Christopher David: If.
[02:35:30] Christopher David: If.
[02:35:32] Christopher David: If.
[02:35:34] Christopher David: If.
[02:35:36] Christopher David: If.
[02:35:38] Christopher David: If.
[02:35:40] Christopher David: If.
[02:35:42] Christopher David: If.
[02:35:44] Christopher David: If.
[02:35:46] Christopher David: If.
[02:35:48] Christopher David: If.
[02:35:50] Christopher David: If.
[02:35:52] Christopher David: If.
[02:35:54] Christopher David: If.
[02:35:56] Christopher David: If.
[02:35:58] Christopher David: If.
[02:36:00] Christopher David: If.
[02:36:02] Christopher David: If.
[02:36:04] Christopher David: If.
[02:36:06] Christopher David: If.
[02:36:08] Christopher David: If.
[02:36:10] Christopher David: If.
[02:36:12] Christopher David: If.
[02:36:14] Christopher David: If.
[02:36:16] Christopher David: If.
[02:36:18] Christopher David: If.
[02:36:20] Christopher David: If.
[02:36:22] Christopher David: If.
[02:36:24] Christopher David: If.
[02:36:26] Christopher David: If.
[02:36:28] Christopher David: If.
[02:36:30] Christopher David: If.
[02:36:32] Christopher David: If.
[02:36:34] Christopher David: If.
[02:36:36] Christopher David: If.
[02:36:38] Christopher David: If.
[02:36:40] Christopher David: If.
[02:36:42] Christopher David: If.
[02:36:44] Christopher David: If.
[02:36:46] Christopher David: If.
[02:36:48] Christopher David: If.
[02:36:50] Christopher David: If.
[02:36:52] Christopher David: If.
[02:36:54] Christopher David: If.
[02:36:56] Christopher David: If.
[02:36:58] Christopher David: If.
[02:37:00] Christopher David: If.
[02:37:02] Christopher David: If.
[02:37:08] Christopher David: If.
[02:37:12] Christopher David: If.
[02:37:14] Christopher David: If.
[02:37:16] Christopher David: If.
[02:37:18] Christopher David: If.
[02:37:20] Christopher David: If.
[02:37:22] Christopher David: If.
[02:37:24] Christopher David: If.
[02:37:26] Christopher David: If.
[02:37:28] Christopher David: If.
[02:37:30] Christopher David: If.
[02:37:32] Christopher David: If.
[02:37:34] Christopher David: If.
[02:37:36] Christopher David: If.
[02:37:38] Christopher David: If.
[02:37:40] Christopher David: If.
[02:37:42] Christopher David: If.
[02:37:44] Christopher David: If.
[02:37:46] Christopher David: If.
[02:37:48] Christopher David: If.
[02:37:50] Christopher David: If.
[02:37:52] Christopher David: If.
[02:37:54] Christopher David: If.
[02:37:56] Christopher David: If.
[02:37:58] Christopher David: If.
[02:38:00] Christopher David: If.
[02:38:02] Christopher David: If.
[02:38:04] Christopher David: If.
[02:38:06] Christopher David: If.
[02:38:08] Christopher David: If.
[02:38:10] Christopher David: If.
[02:38:12] Christopher David: If.
[02:38:14] Christopher David: If.
[02:38:16] Christopher David: If.
[02:38:18] Christopher David: If.
[02:38:20] Christopher David: If.
[02:38:22] Christopher David: If.
[02:38:24] Christopher David: If.
[02:38:26] Christopher David: If.
[02:38:28] Christopher David: If.
[02:38:30] Christopher David: If.
[02:38:32] Christopher David: If.
[02:38:34] Christopher David: If.
[02:38:36] Christopher David: If.
[02:38:38] Christopher David: If.
[02:38:40] Christopher David: If.
[02:38:42] Christopher David: If.
[02:38:44] Christopher David: If.
[02:38:46] Christopher David: If.
[02:38:48] Christopher David: If.
[02:38:50] Christopher David: If.
[02:38:52] Christopher David: If.
[02:38:54] Christopher David: If.
[02:38:56] Christopher David: If.
[02:38:58] Christopher David: If.
[02:39:00] Christopher David: If.
[02:39:02] Christopher David: If.
[02:39:04] Christopher David: If.
[02:39:06] Christopher David: If.
[02:39:08] Christopher David: If.
[02:39:10] Christopher David: If.
[02:39:12] Christopher David: If.
[02:39:14] Christopher David: If.
[02:39:16] Christopher David: If.
[02:39:18] Christopher David: If.
[02:39:20] Christopher David: If.
[02:39:22] Christopher David: If.
[02:39:24] Christopher David: If.
[02:39:26] Christopher David: If.
[02:39:28] Christopher David: If.
[02:39:30] Christopher David: If.
[02:39:32] Christopher David: If.
[02:39:34] Christopher David: If.
[02:39:36] Christopher David: If.
[02:39:38] Christopher David: If.
[02:39:40] Christopher David: If.
[02:39:42] Christopher David: If.
[02:39:44] Christopher David: If.
[02:39:46] Christopher David: If.
[02:39:48] Christopher David: If.
[02:39:50] Christopher David: If.
[02:39:52] Christopher David: If.
[02:39:54] Christopher David: If.
[02:39:56] Christopher David: If.
[02:39:58] Christopher David: If.
[02:40:00] Christopher David: If.
[02:40:02] Christopher David: If.
[02:40:04] Christopher David: If.
[02:40:06] Christopher David: If.
[02:40:08] Christopher David: If.
[02:40:10] Christopher David: If.
[02:40:12] Christopher David: If.
[02:40:14] Christopher David: If.
[02:40:16] Christopher David: If.
[02:40:18] Christopher David: If.
[02:40:18] Christopher David: If.
[02:39:59] Christopher David: How I go forward.
[02:40:06] Christopher David: Oops, oops.
[02:40:11] Christopher David: Oh, I didn't say about.
[02:40:34] Christopher David: Maybe?
[02:40:40] Christopher David: Okay.
[02:40:47] Christopher David: Hang on, hang on, hang on, hang on.
[02:40:52] Christopher David: I see the code that I want.
[02:40:56] Christopher David: D-D, give me just the data.
[02:40:59] Christopher David: We're not expecting weather information anymore.
[02:41:04] Christopher David: Do it again.
[02:41:05] Christopher David: Do it again.
[02:41:06] Christopher David: Do it again.
[02:41:07] Christopher David: Let me see it.
[02:41:08] Christopher David: Let me see it.
[02:41:09] Christopher David: Give me my code at that URL, route to web.
[02:41:16] Christopher David: Dang data, that doesn't matter.
[02:41:18] Christopher David: Okay.
[02:41:19] Christopher David: We got it.
[02:41:20] Christopher David: We got it.
[02:41:21] Christopher David: We got it.
[02:41:22] Christopher David: We got it.
[02:41:23] Christopher David: We got it.
[02:41:24] Christopher David: We got it.
[02:41:25] Christopher David: Okay.
[02:41:30] Christopher David: So we are successfully making an L402 call to the endpoint that we just put up.
[02:41:39] Christopher David: Let me do a little bit of data, munging to see why.
[02:41:43] Christopher David: That's happening.
[02:41:49] Christopher David: First of all, let me do this.
[02:41:53] Christopher David: Okay.
[02:41:59] Christopher David: And then, so every time I run this, I think I'm, I'm generating the invoice and paying it from this same account.
[02:42:12] Christopher David: That's why the balance isn't changing.
[02:42:17] Christopher David: So, I think that's the same.
[02:42:22] Christopher David: Invalid text or representation.
[02:42:26] Christopher David: That's because, yeah, it's just returning a massive string of stuff.
[02:42:33] Christopher David: We're not getting JSON back from the.
[02:42:43] Christopher David: So, so this is just because our go server is not returning a JSON object.
[02:42:48] Christopher David: It's just like a giant one is string.
[02:42:54] Christopher David: Which is fine, we don't need JSON.
[02:42:57] Christopher David: Let's do a thing that handles that real quick.
[02:43:03] Christopher David: Let's try this.
[02:43:10] Christopher David: Let's try this.
[02:43:17] Christopher David: Try to parse this as JSON, but if you can't just create a, you know, array with key, you know, output and the string body.
[02:43:29] Christopher David: Does that, is that clear?
[02:43:36] Christopher David: That worked.
[02:43:41] Christopher David: I don't know.
[02:43:42] Christopher David: Let's do it.
[02:43:47] Christopher David: No, no means.
[02:43:49] Christopher David: Let's sum out of chaos with this here at the stage, anything?
[02:43:58] Christopher David: Let's do it.
[02:44:25] Christopher David: The body is something at this point, right?
[02:44:41] Christopher David: It's just a massive string.
[02:44:49] Christopher David: Should I instead of saying parse, should I say encode?
[02:44:53] Christopher David: Try to encode this as JSON.
[02:45:01] Christopher David: I specifically said encode.
[02:45:11] Christopher David: If I'm going directly against copilot, that might get interesting.
[02:45:17] Christopher David: I still, but a string munging, or a string munging.
[02:45:28] Christopher David: Still not.
[02:45:48] Christopher David: Is this string or JSON object?
[02:45:57] Christopher David: Let's do it.
[02:46:07] Christopher David: What do we have before?
[02:46:09] Christopher David: Return, JSON, decode.
[02:46:15] Christopher David: Yes.
[02:46:16] Christopher David: So ideally, this will work with both of the endpoints.
[02:46:20] Christopher David: I'm just kind of like going out of my way to not edit the endpoints again.
[02:46:25] Christopher David: I'm just returning a string, which is probably fun.
[02:46:31] Christopher David: I could put it in an object called output, but I don't really care about that.
[02:46:49] Christopher David: Okay.
[02:47:49] Christopher David: Okay.
[02:47:59] Christopher David: Okay.
[02:48:09] Christopher David: Okay.
[02:48:19] Christopher David: Okay.
[02:48:29] Christopher David: Okay.
[02:48:39] Christopher David: Okay.
[02:48:47] Christopher David: Okay.
[02:48:55] Christopher David: Okay.
[02:49:05] Christopher David: Okay.
[02:49:15] Christopher David: Okay.
[02:49:25] Christopher David: Okay.
[02:49:43] Christopher David: Okay.
[02:49:53] Christopher David: Okay.
[02:49:58] Christopher David: Okay.
[02:50:01] Christopher David: Okay.
[02:50:10] Christopher David: Okay.
[02:50:20] Christopher David: Okay.
[02:50:38] Christopher David: Okay.
[02:50:48] Christopher David: Okay.
[02:50:58] Christopher David: Okay.
[02:51:03] Christopher David: Okay.
[02:51:17] Christopher David: Okay.
[02:51:27] Christopher David: Okay.
[02:51:45] Christopher David: Okay.
[02:51:55] Christopher David: Okay.
[02:52:13] Christopher David: Okay.
[02:52:25] Christopher David: Are we processing the invoice string?
[02:52:29] Christopher David: Oh, yeah, but we got it.
[02:52:32] Christopher David: And the string is returning quotes.
[02:52:42] Christopher David: Okay.
[02:52:52] Christopher David: Okay.
[02:53:02] Christopher David: Okay.
[02:53:10] Christopher David: Okay.
[02:53:20] Christopher David: Okay.
[02:53:25] Christopher David: Okay.
[02:53:34] Christopher David: Fuck.
[02:54:04] Christopher David: Try your own more time.
[02:54:27] Christopher David: Okay.
[02:54:37] Christopher David: Okay.
[02:55:03] Christopher David: Okay.
[02:55:13] Christopher David: Okay.
[02:55:17] Christopher David: Okay.
[02:55:23] Christopher David: Okay.
[02:55:28] Christopher David: Okay.
[02:55:38] Christopher David: Okay.
[02:55:43] Christopher David: Okay.
[02:55:50] Christopher David: Okay.
[02:56:00] Christopher David: Okay.
[02:56:18] Christopher David: Okay.
[02:56:28] Christopher David: Okay.
[02:56:33] Christopher David: Okay.
[02:56:38] Christopher David: Okay.
[02:56:43] Christopher David: Okay.
[02:56:53] Christopher David: Okay.
[02:56:58] Christopher David: Okay.
[02:57:07] Christopher David: Okay.
[02:57:17] Christopher David: Okay.
[02:57:22] Christopher David: Okay.
[02:57:25] Christopher David: Okay.
[02:57:29] Christopher David: Okay.
[02:57:34] Christopher David: Okay.
[02:57:44] Christopher David: Okay.
[02:57:49] Christopher David: Okay.
[02:57:54] Christopher David: Okay.
[02:57:59] Christopher David: Okay.
[02:58:09] Christopher David: Okay.
[02:58:14] Christopher David: Okay.
[02:58:19] Christopher David: Okay.
[02:58:23] Christopher David: Okay.
[02:58:25] Christopher David: Okay.
[02:58:35] Christopher David: Okay.
[02:58:40] Christopher David: Okay.
[02:58:45] Christopher David: Okay.
[02:58:50] Christopher David: Okay.
[02:58:53] Christopher David: Okay.
[02:59:03] Christopher David: Okay.
[02:59:08] Christopher David: Okay.
[02:59:13] Christopher David: Okay.