At 11:45 PM +0000 31/10/14, Justin Clark-Casey wrote:

You may want to look at OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveModule.UpdateClientWithLoadedNodes().

That's the method I need, although it is not exposed externally. I can call it from inside the simulator, not via HTTP. Correct me if I am wrong.


In fact, you might be able to do this with less work by actually uploading an IAR, though you will have to be careful about security. Assuming that your picture shows media on
a prim here are my naive thoughts.

Yes, the picture shows media on a prim. It's pure PHP+SQL+jQuery. It gots the .jp2. There should be no difficulty building an IAR (except headache).


1) Extend RemoteAdmin [RADMIN] with an "admin_load_iar" command

My ability to code in C# is low and I never had a look to the sources, so this one will be tough. Let's suppose I succeed.


2) Encode the region UUID in the MOAP url. Getting the user UUID is more complicated with no scripting. Immediate thought is require them to have an account in the web application.

ATM, the delivery is trigerred by JavaScript inside the web page. It can be replaced by a script doing HTTP. I get the region name (X-SecondLife-Region) which I should be able to translate to UUID using the database or calling GridService. The user UUID is trivial.


3) Either only allow them to pick individual folders or items with pre-created IARs, or create an IAR on the fly from an arbitrary selection (much more involved). Either way the IAR has to end up in a location that all regions can access (e.g. a shared filesystem or an url).

The selection goes as low as a single texture. On-the-fly is mandatory. Create the folder structure, generate the XML and tar.


4) Get the user's current region via the PresenceService getagents call [PRESENCE].

Ah! I see you have documented a new batch of services. More API to play with :))


5) Use the GridService get_region_by_uuid call [GRID] to retrieve the server URI.

I already get the serverURI from the 'regions' table.


6) Use the URL to invoke admin_load_iar with the user uuid and iar location.

You made my roadmap. However, if I manage to call UpdateClientWithLoadedNodes, I can skip the IAR step.


If you do end up simply adding inventory items directly, I recommend invoking service calls [SERVICES] rather than editing the database directly.

Yes, using InventoryService is cleaner than inserting a row in the table. However, the items will not be available until relog.


 I have some working example PHP for invoking services at [INTEGRATION]

You just saved me a lot of work.

Thanks so much.


-- Jeff
_______________________________________________
Opensim-users mailing list
[email protected]
http://opensimulator.org/cgi-bin/mailman/listinfo/opensim-users

Reply via email to