Pando can be integrated into Windows or Mac OS X applications. Ths is an index of all of the documents related to integrating Pando into desktop applications.
A good starting point is adding a "Send using Pando" button to your application, using one-click Pando sending.
The pando:forward can be used to allow Pando users to easily forward Pando packages.
Opening a pando:forward link causes Pando to open the Send Window, with the package information pre-populated. This is the same window that the user would see if they selected the package in the Pando GUI and clicked the "share" button.
The user can then select the recipient of the package, using all of the mechanisms supported by Pando, including email, web embed, etc.
Pando forward URLs have the following format, where url is the URL to the Pando package:
pando:forward?url
For example, the forward link for a sample package would be:
pando:forward?http://cache.pando.com/soapservices/Package/package.pando?
id=5A4A7B2AE83E0AA3DAF066C28703C6F3132B0633
&key=3557F2AAD6CEAEC0FB6B1F1E19C7531A116A1C2B209554FC9343F2A6ED9DAC94
When clicked, this link tells Pando to offer to forward the package.
Supported Versions
pando:download links are supported in Pando version 0.9.5 and newer.
Pando provides a stream delivery mechanism that can be used to play files using a media player while it is being downloaded.
This mechanism is deprecated in favor of the Pando REST API, but is supported for compatibility.
There are two versions of this mechanism.
For example of pando:stream and pando:streamL:
pando:stream?http://cache.pando.com/soapservices/Package/package.pando?
id=5A4A7B2AE83E0AA3DAF066C28703C6F3132B0633&
key=3557F2AAD6CEAEC0FB6B1F1E19C7531A116A1C2B209554FC9343F2A6ED9DAC94
and
pando:streamL?http://cache.pando.com/soapservices/Package/package.pando?
id=5A4A7B2AE83E0AA3DAF066C28703C6F3132B0633&
key=3557F2AAD6CEAEC0FB6B1F1E19C7531A116A1C2B209554FC9343F2A6ED9DAC94
The behavior when opening a stream is:
Supported Versions
pando:stream links are supported in Pando version 1.7.0 and newer.
Pando is pleased to be able to announce the release of the Pando Command Line (pcl, pronounced "pickle"). This tool allows you to integrate Pando into web sites and other automated processes.
The Pando Command Line allows you to automate:
One PCL user has already provided a Ruby script to automatically receive Pando packages via email!
We are very excited about all of the possibilities that this presents, and look forward to seeing all of the amazing things that you guys will come up with!
To request a copy of PCL, fill out the request form, and tell us whether you want the version for Windows, Mac OS X, or Linux.
If you are certain that your users have Pando installed (such as if your application integrates Pando into its installation process), or users have been instructed to install Pando, opening a pando:download link allows your users to one-click download a package using Pando.
Note that if the user does not have Pando installed, either nothing will happen, or an error message will be displayed, depending on the user's operating system and browser settings. Thus, Pando recommends using Pando Package URL's for web links.
Pando one-click download URLs have the following format, where url is the URL to the Pando package:
pando:download?url
For example, the download link for the above package would be:
pando:download?http://cache.pando.com/soapservices/Package/package.pando? id=5A4A7B2AE83E0AA3DAF066C28703C6F3132B0633 &key=3557F2AAD6CEAEC0FB6B1F1E19C7531A116A1C2B209554FC9343F2A6ED9DAC94
When clicked, this link tells Pando to download a package indicated by the Pando Package URL.
For the above Package URL, a one-click download link would look like:
<a href="pando:download?http://cache.pando.com/soapservices/Package/package.pando?
id=5A4A7B2AE83E0AA3DAF066C28703C6F3132B0633
&key=3557F2AAD6CEAEC0FB6B1F1E19C7531A116A1C2B209554FC9343F2A6ED9DAC94">
CNN: In Case you Missed It for February 12, 2007</a>.
This looks like: CNN: In Case you Missed It for February 12, 2007.
If you like, you can use this download button:
CNN: In Case you Missed It for February 12, 2007<br />
<a href="pando:download?http://cache.pando.com/soapservices/Package/package.pando?
id=5A4A7B2AE83E0AA3DAF066C28703C6F3132B0633
&key=3557F2AAD6CEAEC0FB6B1F1E19C7531A116A1C2B209554FC9343F2A6ED9DAC94">
<img src="http://rss.pando.com/themes/rssvideo/pando_dl_button2.png">
</a>.
This looks like:
CNN: In Case you Missed It for February 12, 2007 
You can also use the Package Thumbnail URL to make an image link:
<a href="pando:download?http://cache.pando.com/soapservices/Package/package.pando?
id=5A4A7B2AE83E0AA3DAF066C28703C6F3132B0633
&key=3557F2AAD6CEAEC0FB6B1F1E19C7531A116A1C2B209554FC9343F2A6ED9DAC94">
<img src="http://cache.pando.com/soapservices/SendToWeb?action=thumbnail
&id=5A4A7B2AE83E0AA3DAF066C28703C6F3132B0633"></a>
pando:download links are supported in Pando version 0.9.1 and newer.
In many cases, using the default "Send-to-IM"-style package URL will provide a better user experience than using the pando:download links. When a user without Pando installed clicks on a pando:download link, nothing happens. When a user without Pando installed clicks on a "Send-to-IM"-style URL, they are sent to a web page explaining that they need Pando to download the package they clicked on and, in some cases, the package will begin downloading automatically upon a successful installation. In either case, users with Pando installed will be able to download the package.
For generating or processing Pando packages from within scripts, Pando provides the Pando Command Line (PCL).
To access this tool, you will need to log in with your partner account.
If you would like access to this tool, and the documentation linked below, please register for an account on this web site, and fill out our Server Integration Toolkit request form or email me.
In the first section of this guide, we'll describe how to install PCL. This is where you can download the latest PCL binaries for Linux, Windows and Mac OS X.
Next we'll talk about how to run the PCL, allowing you to automate publishing and downloading content using Pando.
Finally, we provide an example script that uses pcl to automatically download packages from a given email address.
I just wrote up a short bit about our Pando "installed" cookie checking service, that allows web developers to discover whether their web visitors have Pando installed or not. Let us know what you think, and I'll write up an example implementation or two in the near future.
Update: In most cases, the PandoAPI javascript method for detecting Pando's installed status would be preferable to this approach. Here is a detailed example using javascript.
In many cases, it's helpful to know whether a user has Pando installed or not, to determine what to display on a particular web page containing Pando downloads or channel subscriptions, for example; and to better explain to your sites visitors how to acquire Pando if they don't already have it.
For our own web sites, we use a browser cookie to track whether a user has Pando installed or not. This cookie gets set in a user's default browser when they install Pando, and is set to never expire. The cookie's key/name is "installed" and value is set to "yes"). Because this cookie is accessible to any pando.com URL, we can make use of it in many places. For example, when a user clicks a package URL, we look for the cookie and, if it's set, we send the user the Pando file. If it's not set, we redirect them to a page explaining how to installed Pando (example).
Unfortunately, because cookies can only be read by the domain that sets them (a good thing for security purposes), other web sites cannot tell if a user has Pando installed.
To get around this limitation, we've implemented a simple "installed" cookie checking service you may use to discover if your users have Pando installed. To use this service, you must redirect your users (using javascript or, preferably, a server side script) to the following URL: http://www.pando.com/installcheck/?returnURL=http://example.com/ where http://example.com is an URL on your server that can handle the resultant response.
When a user visits the above URL, the pando web server looks for the Pando "installed" cookie and redirects the user back to the specified returnURL with hasPando=yes or hasPando=no appended to the URL parameters. It is up to you to receive this response and handle it in a useful way. We recommend setting your own cookie to remember the result of this check, to minimize these redirect-heavy requests.
It's important to note that this is an imperfect solution. If a privacy-minded user frequently clears her cookies or uses a browser other than her default, the "installed" cookie might not be set even when she has Pando installed. It is important to allow users a way around a cookie check and force the cookie to be set to cover these cases.
The PDEmailInterface COM Object provides an interface allowing Windows applications to detect the presence of Pando and integrate Pando file sending.
The PDEmailInterface COM object provides the following functions:
SendLink is used to have Pando package and upload a set of files. It returns the Pando Package URL, which can be sent by the application to recipients. For example, it can be sent via an instant messaging network. The call returns when Pando packaging is complete, which typically takes several seconds. Uploading will continue asynchronously until complete.
virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE SendLink(
/* [in] */ ULONG hWndParent,
/* [in] */ VARIANT *filePaths,
/* [out] */ BSTR *url) = 0;
The arguments are:
SetPluginVersion is called in order to identify the calling application.
virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE SetPluginVersion(
/* [in] */ BSTR name,
/* [in] */ BSTR version) = 0;
The arguments are:
Here are examples of using the PDEmailInterface COM object from C++ and Visual Basic. Note that the SendLink method is provided only by pando.PDEmailInterface version 2 or newer. Thus, if "pando.PDEmailInterface.2" cannot be created, either Pando is not installed or it must be upgraded.
{
try {
CComPtr pando;
//the create object will fail if Pando is not installed
if(SUCCEEDED(pando.CoCreateInstance(L"pando.PDEmailInterface.2")) && pando)
{
// use this to initialize the dialog with a set of files
// Create a SAFEARRAY to hold the list of files //
SAFEARRAY *pArray;
SAFEARRAYBOUND bounds;
bounds.cElements = arrayFilenames.GetSize();
bounds.lLbound = 0;
pArray = SafeArrayCreate(VT_BSTR, 1, &bounds);
// Initialize the SAFEARRAY with the filenames //
if(!pArray)
break;
for(long ii = 0; ii < arrayFilenames.GetSize(); ii++)
//arrayFilenames is your array of filenames
SafeArrayPutElement(pArray, &ii, CComBSTR(arrayFilenames[ii]));
VARIANT var;
VariantInit(&var);
var.vt = VT_ARRAY | VT_BYREF | VT_BSTR;
var.pparray = &pArray;
// You MUST set this to a unique value for Your Application
pando->SetPluginVersion(CComBSTR("MyAppName"), CComBSTR(""));
CComBSTR url;
if (SUCCEEDED(pando->SendLink(m_hWnd, &var, &url)) SendLink(m_hWnd, NULL, &url)
{
//use the http:// url to the pando file
//prepend pando:download? to make it a Pando URL
}
VariantClear(&var);// for the file list
}
}catch(...){}
} {
Dim strPaths(1 To 3) As String
Dim pandoPath As String
strPaths(1) = "C:\Documents and Settings\Paul\My Documents\My Pictures\dumbo\pod-006.jpg"
strPaths(2) = "C:\Documents and Settings\Paul\My Documents\My Pictures\dumbo\pod-011.jpg"
strPaths(3) = "C:\Documents and Settings\Paul\My Documents\My Pictures\dumbo\pod-018.jpg"
Dim pds As Object
Set pds = CreateObject("pando.PDEmailInterface.2")
Dim strUrl As String
'You MUST set this to a unique value for Your Application
pds.SetPluginVersion "MyApplicationName", ""
pds.SendLink MyForm.hWnd, strPaths, strUrl
'strUrl is the http path to the .pando file
'prepend pando:download? to create a Pando URL
MsgBox strUrl
}
PDEmailInterface pandoAPI = new PDEmailInterfaceClass();
object strPaths = new string[] {
@"C:\Documents and Settings\Paul\My Documents\My Pictures\dumbo\pod-006.jpg",
@"C:\Documents and Settings\Paul\My Documents\My Pictures\dumbo\pod-011.jpg",
@"C:\Documents and Settings\Paul\My Documents\My Pictures\dumbo\pod-018.jpg" };
// You MUST set this to a unique value for Your Application
pandoAPI.SetPluginVersion("MyApplicationName", "");
string strUrl;
pandoAPI.SendLink((uint)this.Handle, ref strPaths, out strUrl);
// strUrl is the http path to the .pando file
// prepend pando:download? to create a Pando URL
MessageBox.Show(strUrl);
Every Pando package has a unique Package URL. The file at the URL is the Pando file for the package.
The pando:send URL tells Pando to open a Send window. If provided, it will auto-fill the email address and local files so that the user can review the information and send it. It can be used by either web sites or applications.
pando:send?email_address=submissions@videosite.com&files_to_send=c:\Cover.JPG,c:\Video.avi
Both email_address and files_to_send are optional. If they are not provided, they are left blank for the user to fill in. This provides you with the flexibility for many uses:
The pando:send URL's can be used from either a web site or an application.
For example, a web site may want users to send video files to the site using Pando. It could do so by giving a single 'submissions' email address, like this:
pando:send?email_address=submissions@videosite.com
This would open Pando's Send New window, pre-filled to send a package to submissions@videosite.com. The user would simply add the video, and click send. This is much simpler for users than launching Pando, clicking "Send Now", and copying and pasting the email address.
To provide a link on a web page to allow people to send using Pando, here is a sample HTML:
<a href="pando:send?email_address=submissions@videosite.example.com"><img src="http://www.pando.com/files/Pando-Me-Button.png"></a>
We recommend that web sites use the above graphic, so that Pando users will be able to tell that you support Pando more easily.
The web site could choose to generate a unique email address for each sender to use, and to implement an automated email processing facility. This is a technique commonly used on photo hosting web sites to allow people to send photo's securely from camera-phones (so that other people can't post photos to your web site). Similarly, this technique would allow people to use Pando to send files into their personal web sites. In this case, the URL would be similar to the above, but with a unique user ID, like this:
pando:send?email_address=12345678@submissions.videosite.com
If you are interested in integrating Pando deliveries into your workflow, you should contact us to discuss the Pando Server Integration Toolkit.
An application that is used to create or organize rich media files (such as a photo organizer, a video editor, etc.) may want to make it easy for users to send the result of their work using Pando. This can be done by adding a button to the application to "Send using Pando" that opens a pando:send URL. This will cause Pando to launch (if it is not already running), and to prepare the sending.
For example, if a video editing application added a "send using Pando" command to its GUI, it could attach the files to Pando by opening an URL like:
pando:send?files_to_send=c:\Cover.JPG,c:\Video.avi
This would bring up a Send New window in Pando, with the cover art and video file pre-attached, so the user could enter the recipient's email address, name the package, and send it.
We recommend using this button:
for sending using Pando, so that Pando users can easily recognize that your application supports Pando.
The following is an example of how a Windows application can open a URL. The application should construct the URL as defined above, and then execute the following with the desired URL replacing the italicized example URL:
ShellExecute(m_hWnd, NULL, "pando:send?files_to_send=c:\Cover.JPG,c:\Video.avi", NULL, NULL, SW_SHOWDEFAULT);
If the application wants to use Pando to package and upload the files, but manage the delivery of the Pando Package URL itself, it can do so using the Pando Client Automation Toolkit.
pando:send links are supported in Pando version 1.4 and newer, Mac OS X and Windows. The files_to_send parameter may work on Mac 1.4, but the email_address parameter does not work in the current Mac version. This will be addressed in a future version of Pando.
Recent comments
2 days 3 hours ago
4 days 37 min ago
4 days 39 min ago
1 week 2 days ago
2 weeks 6 hours ago
3 weeks 1 day ago
3 weeks 6 days ago
3 weeks 6 days ago
3 weeks 6 days ago
3 weeks 6 days ago