<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://developer.nirvanix.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Developer Blog</title><link>http://developer.nirvanix.com/blogs/developer_blog/default.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2007 SP2 (Build: 20611.960)</generator><item><title>Silverlight Support</title><link>http://developer.nirvanix.com/blogs/developer_blog/archive/2008/09/16/silverlight-support.aspx</link><pubDate>Tue, 16 Sep 2008 17:44:00 GMT</pubDate><guid isPermaLink="false">40a1f22b-b3c4-4855-9640-186c593af682:1546</guid><dc:creator>BarryR</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://developer.nirvanix.com/blogs/developer_blog/rsscomments.aspx?PostID=1546</wfw:commentRss><comments>http://developer.nirvanix.com/blogs/developer_blog/archive/2008/09/16/silverlight-support.aspx#comments</comments><description>&lt;p&gt;We are happy to announce we have added the ability to access your content from Silverlight.&amp;nbsp; The latest release added a file at the root of both servies and the nodes that is a security file allowing Silverlight to connect to and download from both API calls as well as files.&amp;nbsp; Part of the release was to add the Microsoft suggested Mime-types for hosting Silverlight files as well.&amp;nbsp; Some restrictions on hosting the Silverlight application may be having to call the node directly to avoid the redirect.&lt;/p&gt;&lt;p&gt;The security file can be accessed at: &lt;a href="http://services.nirvanix.com/clientaccesspolicy.xml"&gt;http://services.nirvanix.com/clientaccesspolicy.xml&lt;/a&gt; and at the root of each node as well.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;I look forward to our Silverlight developers showing off the latest interfaces to access both API calls and file downloads in the future.&amp;nbsp; Please post a comment if you have a questions or concerns.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://developer.nirvanix.com/aggbug.aspx?PostID=1546" width="1" height="1"&gt;</description><category domain="http://developer.nirvanix.com/blogs/developer_blog/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>Callbacks and communicating with processing</title><link>http://developer.nirvanix.com/blogs/developer_blog/archive/2008/08/14/callbacks-and-communicating-with-processing.aspx</link><pubDate>Thu, 14 Aug 2008 07:50:00 GMT</pubDate><guid isPermaLink="false">40a1f22b-b3c4-4855-9640-186c593af682:1450</guid><dc:creator>BarryR</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://developer.nirvanix.com/blogs/developer_blog/rsscomments.aspx?PostID=1450</wfw:commentRss><comments>http://developer.nirvanix.com/blogs/developer_blog/archive/2008/08/14/callbacks-and-communicating-with-processing.aspx#comments</comments><description>&lt;p&gt;&amp;nbsp;I have received a number of direct questions from Nirvanix users regarding callbacks and thought that I would share the information I sent to them with the entire community. Our processing servers allow you to work on requests that may take a significant amount of time.&amp;nbsp; This means you can transcode videos that are &amp;gt; 200gb or any number of other supported large file operations.&amp;nbsp; When processing a large file it&amp;#39;s necessary to move these calls to an asynchronous process to avoid keeping an active connection open.&amp;nbsp; Web interfaces aren&amp;#39;t the best mechanism for long running connections and it can take quite a while to transcode a 200gb video depending on the CODEC. This setup requires a way to let you know when we are finished with the operation, this is where callbacks are used.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;When something is added to our queue it will be picked up by our processing servers and when they are done with the request they will make a call to the URL presented in the initial request.&amp;nbsp; The data returned depends on what operation you were performing.&amp;nbsp; There will always be a response code passed which if 0 means the command succeeded as expected.&amp;nbsp; If it is non-zero there will also be an error message. This is necessary because the initial call to the method only adds the request to the queue and does not actually perform the operation. You should receive two separate callbacks, the first is a notification that the file has been added to the queue successfully (or un successfully) and the second is notification that the file has been processed successfully (or unsuccessfully).&amp;nbsp; Cases where the initial notification would not be 0 include paths already existing, users reaching their set limits or other problems.&lt;/p&gt;
&lt;p&gt;The callback URL you submit to us is in the following format http://www.mysite.com/mycallback.php which would reside on your site.&lt;/p&gt;&lt;p&gt;Once a file has completed processing you will receive the following information:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;NVX.returnCode&lt;/b&gt; an integer representing the status of the upload. Did it fail? Succedd? For valid response codes: see standard return codes; return code 0 means no error.&lt;br /&gt;&lt;b&gt;NVX.errorMessage&lt;/b&gt; a string describing the error message associated with any error being returned.&lt;br /&gt;&lt;b&gt;NVX.absolutePath&lt;/b&gt; a string describing the absolute path of the file that was uploaded.&lt;br /&gt;&lt;b&gt;NVX.sizeBytes&lt;/b&gt; a long describing the size in bytes of the file that was uploaded. &lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Transcoding Audio / Video&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;The transcode calls can take some time to convert the files depending on the input and output formats as well as the quality settings.&amp;nbsp; For this callback the operation will only return if the call was successful as well as any errors that have occurred during processing.&amp;nbsp; If you are converting to FLV / MP3 formats you can use this callback to determine when you should make the files visible to the users of your system.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Image Resize / Rotate&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;The image calls usually occur very quickly and will return if the call
was successful as well as any errors that have occurred during
processing.&amp;nbsp; Possible reasons for failure would be that the submitted format is unknown to us.&amp;nbsp; Often this call is used to swap a preview image with a generated thumbnail.&amp;nbsp; This can be a good queue for your system to present a resized image instead of a stock icon if you have a way to show previews of image files on your system.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Sideload&lt;/b&gt; &lt;/p&gt;
&lt;p&gt;For sideloads we are actually going out on the web and making requests of external sites which can have significant overhead if the site we are contacting should be slow or unresponsive.&amp;nbsp; It is critical that you capture sideload errors since this is calling to an external system which can often behave in unexpected ways.&amp;nbsp; The sideload call is a great way to save external data into your account without having to proxy the files through your own system.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Upload&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Uploads are different in what they return so you can do post processing on a file after it has been uploaded.&amp;nbsp; Often systems using our web services allow users to upload directly to our servers which allows you to avoid proxying files and letting your customers upload the files directly to us.&amp;nbsp; The challenge is having a way to update your system or local database with the files those users have uploaded.&amp;nbsp; The callback can be used as a convenient way to keep your local system informed of when a user uploads their own file.&amp;nbsp; Another use of this callback is to execute a secondary action when the upload is complete.&amp;nbsp; You can check the file for the extension to see if its allowed, generate a thumbnail on an image or any number of operations. &lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;b&gt;Sample Callback Handler in PHP&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;pre&gt;&amp;lt;?php &lt;br /&gt;&lt;br /&gt;$myFile = &amp;quot;requestlog.txt&amp;quot;;&lt;br /&gt;$fh = fopen($myFile, &amp;#39;a&amp;#39;) or die(&amp;quot;can&amp;#39;t open file&amp;quot;);&lt;br /&gt;fwrite($fh, &amp;#39;Requesting URI: &amp;#39; . $_SERVER[&amp;#39;REQUEST_URI&amp;#39;] . &amp;quot;\r\n&amp;quot;);&lt;br /&gt;fwrite($fh, &amp;#39;Request Time: &amp;#39; . date(&amp;quot;D M j G:i:s T Y&amp;quot;) . &amp;quot;\r\n&amp;quot;);&lt;br /&gt;fwrite($fh, &amp;#39;Query String: &amp;#39; . $_SERVER[&amp;#39;QUERY_STRING&amp;#39;] . &amp;quot;\r\n\r\n&amp;quot;);&lt;br /&gt;&lt;br /&gt;fclose($fh);&lt;br /&gt;&lt;br /&gt;?&amp;gt; &lt;/pre&gt;The handler will append the results of each callback to a file called requestlog.txt.&amp;nbsp; Make sure your web server (PHP) has write privileges to that file.&lt;br /&gt;
&lt;img src="http://developer.nirvanix.com/aggbug.aspx?PostID=1450" width="1" height="1"&gt;</description><category domain="http://developer.nirvanix.com/blogs/developer_blog/archive/tags/transcode/default.aspx">transcode</category><category domain="http://developer.nirvanix.com/blogs/developer_blog/archive/tags/sideload/default.aspx">sideload</category><category domain="http://developer.nirvanix.com/blogs/developer_blog/archive/tags/image/default.aspx">image</category><category domain="http://developer.nirvanix.com/blogs/developer_blog/archive/tags/upload/default.aspx">upload</category><category domain="http://developer.nirvanix.com/blogs/developer_blog/archive/tags/resize/default.aspx">resize</category><category domain="http://developer.nirvanix.com/blogs/developer_blog/archive/tags/callbacks/default.aspx">callbacks</category></item><item><title>ItemID Changes</title><link>http://developer.nirvanix.com/blogs/developer_blog/archive/2008/07/02/itemid-changes.aspx</link><pubDate>Wed, 02 Jul 2008 15:35:00 GMT</pubDate><guid isPermaLink="false">40a1f22b-b3c4-4855-9640-186c593af682:1292</guid><dc:creator>BarryR</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://developer.nirvanix.com/blogs/developer_blog/rsscomments.aspx?PostID=1292</wfw:commentRss><comments>http://developer.nirvanix.com/blogs/developer_blog/archive/2008/07/02/itemid-changes.aspx#comments</comments><description>&lt;p&gt;We wanted to let everyone know of a change to the ItemID structure.&amp;nbsp; This is significant if you are storing the ItemID along with your file information.&amp;nbsp; This ID was improved to make sure it will always be Unique across an application.&amp;nbsp; Since the change will affect existing item ID&amp;#39;s we suggest that if you are already storing the Item ID you update your database with the new value returned from &lt;a href="http://developer.nirvanix.com/sitefiles/1000/API.html#_TocGetPathInfo"&gt;GetPathInfo&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Please let us know if you have a large number of Item IDs stored or if you will have any trouble with this change.&amp;nbsp; We will work with you through the transition.&amp;nbsp; We will be making the change on the next release date that is targeted for next week.&lt;br /&gt;&lt;/p&gt;&lt;img src="http://developer.nirvanix.com/aggbug.aspx?PostID=1292" width="1" height="1"&gt;</description></item><item><title>Base Storage </title><link>http://developer.nirvanix.com/blogs/developer_blog/archive/2008/06/21/base-storage.aspx</link><pubDate>Sat, 21 Jun 2008 20:15:00 GMT</pubDate><guid isPermaLink="false">40a1f22b-b3c4-4855-9640-186c593af682:1228</guid><dc:creator>adrian</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://developer.nirvanix.com/blogs/developer_blog/rsscomments.aspx?PostID=1228</wfw:commentRss><comments>http://developer.nirvanix.com/blogs/developer_blog/archive/2008/06/21/base-storage.aspx#comments</comments><description>&lt;p&gt;All,&lt;/p&gt;&lt;p&gt;We have removed the option to sign up for base storage from our sign up process. This will not affect those of you who are currently signed up for Base storage and your service activity will continue to be locked to the node you specified. We did this because of the benefits our SDN customers have experienced allowing the intelligent uploading, downloading, and movement of files throughout the global Storage Delivery Network. We continue to work hard to provide you with the highest quality Cloud Storage service possible. If you have any questions feel free to contact us at info@nirvanix.com and as always thank you for your continued support.&lt;/p&gt;&lt;p&gt;Aj &lt;br /&gt;&lt;/p&gt;&lt;img src="http://developer.nirvanix.com/aggbug.aspx?PostID=1228" width="1" height="1"&gt;</description></item><item><title>Staying Secure, Security Best Practices</title><link>http://developer.nirvanix.com/blogs/developer_blog/archive/2008/05/29/staying-secure.aspx</link><pubDate>Thu, 29 May 2008 15:34:00 GMT</pubDate><guid isPermaLink="false">40a1f22b-b3c4-4855-9640-186c593af682:835</guid><dc:creator>BarryR</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://developer.nirvanix.com/blogs/developer_blog/rsscomments.aspx?PostID=835</wfw:commentRss><comments>http://developer.nirvanix.com/blogs/developer_blog/archive/2008/05/29/staying-secure.aspx#comments</comments><description>&lt;p&gt;The security model we have designed allows for a few options when deciding how to stay secure.&amp;nbsp; Today&amp;#39;s topic will be to explore security and how you can be sure you know all of the primary methods for keeping data and your credentials secure.&amp;nbsp; &lt;/p&gt;&lt;p&gt;&lt;b&gt;Authentication&lt;/b&gt; &lt;/p&gt;&lt;p&gt;A session token is generated using an
application key, username and password.&amp;nbsp; With these three credentials
you authenticate to a specific application.&amp;nbsp; Its important that you
secure the Application Key because like your username it is also part
of the total authentication into the system.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Passwords&lt;/b&gt; &lt;br /&gt;&lt;/p&gt;&lt;p&gt;Each of the password change methods
require a full re-authentication by the user.&amp;nbsp; This is to prevent
someone from stealing a session token and taking over an account.&amp;nbsp; If
you use SSL there should be no way for an external party to take over
your account. &lt;/p&gt;&lt;p&gt;&lt;b&gt;Session Tokens&lt;/b&gt; &lt;/p&gt;&lt;p&gt;The session token was designed to give you a sliding window in which you can operate on the APIs from a single external location.&amp;nbsp; A session token is in essence the key to our web services after you have proven you are who you say you are.&amp;nbsp; This token is locked to a single IP Address always.&amp;nbsp; This is because a session token is something that is very specific to a user and should never be given to anyone else.&amp;nbsp; &lt;/p&gt;&lt;p&gt;The session token not only will let you get access to the web services but it will also let you download your files.&amp;nbsp; Below is a URL that has been built based on a session token that will access the file file.txt in &amp;quot;application1&amp;quot; and childuser1 which in this example is a child account.&lt;/p&gt;&lt;p&gt;http://services.nirvanix.com/SESSIONTOKEN/application1/childuser1/path/file.txt&lt;/p&gt;&lt;p&gt;Session tokens stay active for 20 minutes unless they are used.&amp;nbsp; Whenever a session token is used it will be updated to be active for another 20 minutes.&amp;nbsp; This means if your session token stays active it could be available indefinately.&amp;nbsp; Because of this its a good idea to call logout which destroys a session token.&amp;nbsp; The reason this is important is to prevent anyone who may be watching your http traffic.&lt;/p&gt;&lt;p&gt;The best use case for a session token is to login, do a single operation using HTTPS and then logout.&amp;nbsp; However, there are a number of reasons this isn&amp;#39;t always possible.&amp;nbsp; If you have large amounts of data to pass or are extremely time sensitive the addition of SSL could be too much overhead.&amp;nbsp; If you find yourself in such a situation be aware that if someone is able to get a session token they will still have to try to spoof your IP Address to use the token.&amp;nbsp; This is why its always a best practice to call logout at any time you have completed your operation because that will instantly invalidate the session token assuring you that no-one else may use that token either. &lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Upload Tokens&lt;/b&gt;&lt;/p&gt;&lt;p&gt;The upload token is another form of validation that can be created to allow users to interact with the system.&amp;nbsp; The reason the upload token is separate from session tokens is to allow the ability to pass to the end client in a web site scenario this token to do an upload.&amp;nbsp; If a session token were used the end client could use that token to call any method under their account.&amp;nbsp; With the addition of the GetStorageNodeExtended method you can now also lock an upload token to a specific IP and allow them to only upload to a specific directory.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Download Tokens&lt;/b&gt;&lt;/p&gt;&lt;p&gt;A token can be generated with GetOptimalURLs which lets you access a file for a specified period of time.&amp;nbsp; The token can be created in a way that is similar to upload tokens that allows you to only allow a specific IP Address.&amp;nbsp; The download tokens will timeout after a specified period of time.&amp;nbsp; The suggestion is always to keep the timeout as short as possible since this token cannot be destroyed later.&amp;nbsp; If you distribute the link and it is not locked to a specific IP Address anyone can download that file until it expires.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Password Locking&lt;/b&gt;&lt;/p&gt;&lt;p&gt;If the login system is called and fails 5 times your login will be locked.&amp;nbsp; This is a temporary lock that will be released after 15 minutes.&amp;nbsp; This is necessary to prevent attempts at guessing passwords.&amp;nbsp; You can unlock your account at the Nirvanix Management Portal (NMP) (&lt;a href="http://nmp.nirvanix.com/"&gt;http://nmp.nirvanix.com/&lt;/a&gt;) using the security question answer.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Re-setting Application Key&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;The application key should be considered a secure item since it identifies your application.&amp;nbsp; Should someone get your application key and you are concerned that you have been compromised you can regenerate it using the NMP.&amp;nbsp; Any applications using the old key will not be able to login again until the new application key is used.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Additional Security Information&lt;/b&gt;&lt;/p&gt;&lt;p&gt;A whitepaper is available that details eavesdropping, impersonation and database attacks. You can find this and other important whitepapers at: &lt;a href="http://www.nirvanix.com/resources.aspx#wp"&gt;Nirvanix Whitepapers&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;img src="http://developer.nirvanix.com/aggbug.aspx?PostID=835" width="1" height="1"&gt;</description><category domain="http://developer.nirvanix.com/blogs/developer_blog/archive/tags/upload+token/default.aspx">upload token</category><category domain="http://developer.nirvanix.com/blogs/developer_blog/archive/tags/login/default.aspx">login</category><category domain="http://developer.nirvanix.com/blogs/developer_blog/archive/tags/Security/default.aspx">Security</category><category domain="http://developer.nirvanix.com/blogs/developer_blog/archive/tags/authentication/default.aspx">authentication</category><category domain="http://developer.nirvanix.com/blogs/developer_blog/archive/tags/passwords/default.aspx">passwords</category></item><item><title>Java SDK 1.3 Released</title><link>http://developer.nirvanix.com/blogs/developer_blog/archive/2008/05/01/java-sdk-1-3-released.aspx</link><pubDate>Thu, 01 May 2008 23:06:00 GMT</pubDate><guid isPermaLink="false">40a1f22b-b3c4-4855-9640-186c593af682:1005</guid><dc:creator>BarryR</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://developer.nirvanix.com/blogs/developer_blog/rsscomments.aspx?PostID=1005</wfw:commentRss><comments>http://developer.nirvanix.com/blogs/developer_blog/archive/2008/05/01/java-sdk-1-3-released.aspx#comments</comments><description>&lt;p&gt;The new Java SDK has been released.&amp;nbsp; This version includes the following changes:&lt;/p&gt;&lt;p&gt;1. Content-Range was added to support any size files through partial file upload.&lt;br /&gt;2. Added File object array in UploadSummary event after an upload is completed.&lt;br /&gt;3. Added single file uploads through path or java.io.File objects.&lt;br /&gt;4. Fixed thread bug in uploader.&lt;br /&gt;5.
Added file overwrite through GetStorageNodeExtended.&amp;nbsp; This can be
accessed through an overloaded method in the FileUploader constructor.&lt;br /&gt;6. PresetTranscode has been added.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The Java SDK has been receiving a good amount of attention lately.&amp;nbsp;
We just stopped in on the San Diego Java Users Group to discuss
integration with Nirvanix using Java.&amp;nbsp; The advantages are clear when
you look at the simplicity when porting across platforms.&amp;nbsp; We have
compiled the Jar using the 1.5 JDK since the majority of the
users are still using 1.5.&amp;nbsp; Later we can compile to multiple versions
if requested, the source code is available in the same distribution as well.&amp;nbsp; &lt;/p&gt;&lt;p&gt;We appreciate all suggestions you wish to give us with
our SDKs or sample applications.&amp;nbsp; Please leave a note in the forums if
you have any questions or comments.&lt;/p&gt;&lt;p&gt;You can find the SDK at: &lt;a href="http://developer.nirvanix.com/files/folders/j2ee_java/entry57.aspx"&gt;http://developer.nirvanix.com/files/folders/j2ee_java/entry57.aspx&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://developer.nirvanix.com/aggbug.aspx?PostID=1005" width="1" height="1"&gt;</description><category domain="http://developer.nirvanix.com/blogs/developer_blog/archive/tags/jdk/default.aspx">jdk</category><category domain="http://developer.nirvanix.com/blogs/developer_blog/archive/tags/java+sdk/default.aspx">java sdk</category></item><item><title>New features in depth</title><link>http://developer.nirvanix.com/blogs/developer_blog/archive/2008/04/08/new-features-in-depth.aspx</link><pubDate>Tue, 08 Apr 2008 17:08:00 GMT</pubDate><guid isPermaLink="false">40a1f22b-b3c4-4855-9640-186c593af682:850</guid><dc:creator>BarryR</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://developer.nirvanix.com/blogs/developer_blog/rsscomments.aspx?PostID=850</wfw:commentRss><comments>http://developer.nirvanix.com/blogs/developer_blog/archive/2008/04/08/new-features-in-depth.aspx#comments</comments><description>&lt;p&gt;Our latest release adds useful tools for your applications. The API now has two new additions in the form of GetPathInfo and Upload callbacks to give you more details about your files and notification when an upload completes.&amp;nbsp; &lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;GetPathInfo&lt;/b&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;There were many requests for this API call that will give detailed information about a specific path.&amp;nbsp; We have thrown in the kitchen sink with this call; it&amp;#39;s fast and has the ability to return every bit of information about a single file or folder.&amp;nbsp; The call returns the following information:&lt;/p&gt;&lt;p&gt;ItemName, IsFile, CreatedDate, SizeBytes, FileType, MetaData, Tags, IsShared, ModifiedDate and ItemID&lt;/p&gt;&lt;p&gt;The ItemID is a new value that is returned in this call.&amp;nbsp; It is an ID that is unique across a single application.&amp;nbsp; This does not tie to the filename but to the file itself.&amp;nbsp;&lt;/p&gt;&lt;p&gt;In REST the xml response looks like this:&amp;nbsp;&lt;/p&gt;&lt;pre&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;&amp;lt;Response&amp;gt;&lt;br /&gt;   &amp;lt;ResponseCode&amp;gt;0&amp;lt;/ResponseCode&amp;gt;&lt;br /&gt;   &amp;lt;GetPathInfo&amp;gt;&lt;br /&gt;      &amp;lt;ItemName&amp;gt;F8.jpg&amp;lt;/ItemName&amp;gt;&lt;br /&gt;      &amp;lt;IsFile&amp;gt;true&amp;lt;/IsFile&amp;gt;&lt;br /&gt;      &amp;lt;CreatedDate&amp;gt;Wed, 02 May 2007 13:36:41 GMT&amp;lt;/CreatedDate&amp;gt;&lt;br /&gt;      &amp;lt;SizeBytes&amp;gt;1000000&amp;lt;/SizeBytes&amp;gt;&lt;br /&gt;      &amp;lt;FileType&amp;gt;Image&amp;lt;/FileType&amp;gt;&lt;br /&gt;      &amp;lt;Metadata&amp;gt;&lt;br /&gt;      	&amp;lt;MetaData FileName=&amp;quot;F8.jpg&amp;quot;&amp;gt;&lt;br /&gt;              &amp;lt;Data Key=&amp;quot;Height&amp;quot;&amp;gt;480&amp;lt;/Data&amp;gt;&lt;br /&gt;	      &amp;lt;Data Key=&amp;quot;MD5&amp;quot;&amp;gt;JCiPH3sH4S3f/Ad93uWk+w==&amp;lt;/Data&amp;gt;&lt;br /&gt;              &amp;lt;Data Key=&amp;quot;Width&amp;quot;&amp;gt;640&amp;lt;/Data&amp;gt;&lt;br /&gt;        &amp;lt;/MetaData&amp;gt;&lt;br /&gt;      &amp;lt;/Metadata&amp;gt;&lt;br /&gt;      &amp;lt;Tags&amp;gt;&amp;lt;/Tags&amp;gt;&lt;br /&gt;      &amp;lt;IsShared&amp;gt;false&amp;lt;/IsShared&amp;gt;&lt;br /&gt;      &amp;lt;ModifiedDate&amp;gt;Wed, 02 May 2007 13:36:41 GMT&amp;lt;/ModifiedDate&amp;gt;&lt;br /&gt;      &amp;lt;ItemID&amp;gt;1045632&amp;lt;/ItemID&amp;gt;&lt;br /&gt;   &amp;lt;/GetPathInfo&amp;gt;&lt;br /&gt;&amp;lt;/response&amp;gt;&lt;/pre&gt;&lt;p&gt;&lt;b&gt;Upload Callback&lt;/b&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The ability to receive a callback after an upload is a critical step when letting a client perform uploads directly to the Nirvanix servers.&amp;nbsp; The primary use for this is when you use a browser to do an HTTP Upload.&amp;nbsp; It gives you an option to receive an update telling your system that a file has been updated.&amp;nbsp; Usually this is used in concert with a database that keeps information on the files and mirrors which appear on the Nirvanix file system.&lt;/p&gt;&lt;p&gt;&amp;nbsp;The parameter is quite simple to add: you will need a new HTTP parameter called callbackURL.&amp;nbsp; The callbackURL parameter takes a fully qualified URI including the server you wish to call.&amp;nbsp; You will need a web server accepting requests to handle this as well.&amp;nbsp; This functionality works the same as all of the rest of our callback operations.&amp;nbsp; The callback is initiated as soon as the upload is complete but the processing to get the MD5 and other metadata may still continue after the callback is returned &lt;/p&gt;&lt;img src="http://developer.nirvanix.com/aggbug.aspx?PostID=850" width="1" height="1"&gt;</description></item><item><title>Transcoding</title><link>http://developer.nirvanix.com/blogs/developer_blog/archive/2008/03/21/transcoding.aspx</link><pubDate>Fri, 21 Mar 2008 14:14:00 GMT</pubDate><guid isPermaLink="false">40a1f22b-b3c4-4855-9640-186c593af682:767</guid><dc:creator>BarryR</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://developer.nirvanix.com/blogs/developer_blog/rsscomments.aspx?PostID=767</wfw:commentRss><comments>http://developer.nirvanix.com/blogs/developer_blog/archive/2008/03/21/transcoding.aspx#comments</comments><description>&lt;p&gt;&amp;nbsp; What is transcoding and how does this help my business? We hear this question quite often.  Transcoding is the conversion of one format to another, for example, conversion of windows media video to Flash or .avi to h.264.  Since the launch of the beta functionality, we have been gathering feedback and monitoring usage to get the engine to a point where we can quickly add output formats and at the same time simplify the input format.&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;Codecs tend to be complex which often makes the parameters coming in quite difficult to manage.  Adding to that complexity each codec has its own &amp;quot;best&amp;quot; settings which will vary largely between each.  The goal of any good API is always to strip away complexity and leave you with a simple interface that does everything you want it to which is what PresetTranscode attempts to do.  The goal from the outset was to provide a simple way to convert video from one format to another eliminating the need for the user to know every nuance of the codec and automatically use the “best” settings.  At the same time we introduced a new more robust transcoding engine under the hood to achieve this and support new features we will be adding in coming releases.&lt;/p&gt;

&lt;p&gt;While our old engine and API are still available through the Transcode call we will be migrating all of the functionality over to the new engine and  PresetTranscode over time. We will continue to provide updates and work with customers as we phase the Transcode call out.  &lt;/p&gt;
&lt;p&gt;You may be asking what the advantage of using the new engine over the old is for you other than the simplified interface.  With the new call we have introduced three levels of quality which were not previously available and made the engine easier to configure.  What this translates to is a fast and easy way to introduce more presets allowing for a large number of new options and quality levels.&lt;/p&gt;

&lt;p&gt;Using the PresetTranscode call is simplifies the task since the majority of the parameters are wrapped up in the preset.  To further simplify our example I am using the Nirvanix SDK in the Zend framework to do the sample below. This sample assumes you already uploaded a file called vacation01.mpg to your /video directory under the account you wish to access.&lt;br /&gt;&lt;/p&gt;

&lt;div style="margin-left:40px;"&gt;&lt;span style="font-weight:bold;"&gt;PHP Zend Code Example:&lt;/span&gt;&lt;/div&gt;
&lt;blockquote style="overflow:scroll;height:400px;"&gt;
&lt;pre style="margin:0px;"&gt;&amp;lt;?php&lt;br /&gt;set_include_path(get_include_path() . PATH_SEPARATOR .&amp;#39;C:/Zend/incubator/library&amp;#39; . PATH_SEPARATOR .&amp;#39;C:/Zend/library&amp;#39;);&lt;br /&gt;require_once &amp;#39;Zend/Service/Nirvanix.php&amp;#39;;&lt;br /&gt;&lt;div class="comment"&gt;// First create the Zend object and get a Session&lt;/div&gt;&lt;br /&gt;$appkey = &amp;#39;APPKEY&amp;#39;;&lt;br /&gt;$username = &amp;#39;USERNAME&amp;#39;;&lt;br /&gt;$password = &amp;#39;PASSWORD&amp;#39;;&lt;br /&gt;$auth = array(&amp;#39;username&amp;#39; =&amp;gt; $username,&amp;#39;password&amp;#39; =&amp;gt; $password,&amp;#39;appKey&amp;#39;   =&amp;gt; $appkey);&lt;br /&gt;try {&lt;br /&gt;   &lt;div class="comment"&gt;&lt;br /&gt;   // This authenticates the user and retrieves session&lt;/div&gt;&lt;br /&gt;   $nirvanix = new Zend_Service_Nirvanix($auth);&lt;br /&gt;   &lt;div class="comment"&gt;&lt;br /&gt;   // This retrieves the Video Namespace object&lt;/div&gt;&lt;br /&gt;   $video = $nirvanix-&amp;gt;getService(&amp;#39;Video&amp;#39;);&lt;br /&gt;   $params = array(&amp;#39;srcFilePath&amp;#39; =&amp;gt; &amp;#39;/videos/vacation01.mpg&amp;#39;,&lt;br /&gt;                   &amp;#39;destFilePath&amp;#39; =&amp;gt; &amp;#39;/videos/vacation01.flv&amp;#39;,&lt;br /&gt;                   &amp;#39;preset&amp;#39; =&amp;gt; &amp;#39;H263 FLV Medium&amp;#39;,&lt;br /&gt;                   &amp;#39;scaleWidth&amp;#39; =&amp;gt; &amp;#39;320&amp;#39;,&lt;br /&gt;                   &amp;#39;scaleHeight&amp;#39; =&amp;gt; &amp;#39;200&amp;#39;);&lt;br /&gt;   &lt;div class="comment"&gt;&lt;br /&gt;   // We won&amp;#39;t wait for the response code to come back since the&lt;br /&gt;   // Zend SDK will thrown an exception if the reponse code is not 0&lt;/div&gt;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;   $video-&amp;gt;PresetTranscode($params);&lt;br /&gt;}&lt;br /&gt;   &lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;This will output a flash video file to /videos/vacation01.flv.  This file can then be embedded in a flash player and streamed back to the user.&amp;nbsp; You can read more about transcoding in the SDK document at:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://developer.nirvanix.com/sitefiles/1000/API.html#_TocPresetTranscode"&gt;http://developer.nirvanix.com/sitefiles/1000/API.html#_TocPresetTranscode&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;img src="http://developer.nirvanix.com/aggbug.aspx?PostID=767" width="1" height="1"&gt;</description><category domain="http://developer.nirvanix.com/blogs/developer_blog/archive/tags/transcode/default.aspx">transcode</category><category domain="http://developer.nirvanix.com/blogs/developer_blog/archive/tags/playback/default.aspx">playback</category><category domain="http://developer.nirvanix.com/blogs/developer_blog/archive/tags/presettranscode/default.aspx">presettranscode</category><category domain="http://developer.nirvanix.com/blogs/developer_blog/archive/tags/flash/default.aspx">flash</category></item><item><title>Welcome to the Zend/PHP community</title><link>http://developer.nirvanix.com/blogs/developer_blog/archive/2008/03/17/welcome-to-the-zend-php-community.aspx</link><pubDate>Mon, 17 Mar 2008 17:17:00 GMT</pubDate><guid isPermaLink="false">40a1f22b-b3c4-4855-9640-186c593af682:732</guid><dc:creator>adrian</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://developer.nirvanix.com/blogs/developer_blog/rsscomments.aspx?PostID=732</wfw:commentRss><comments>http://developer.nirvanix.com/blogs/developer_blog/archive/2008/03/17/welcome-to-the-zend-php-community.aspx#comments</comments><description>&lt;p&gt;In case you haven&amp;#39;t heard yet Zend 1.5 is now available and includes integrated Nirvanix support! This means that when you download and install the Zend 1.5 framework all you need to do is call the Nirvanix library, input your Nirvanix credentials and you have access to all of the Nirvanix functionality via the Zend/Nirvanix wrappers. This will significantly reduce the development time of any PHP/Nirvanix application by providing access to all of the Nirvanix WSDLs and integrated error handling. Combine this with support from both Nirvanix and Zend and PHP developers now have an easy and fully supported way to integrate scalable storage and media processing into any PHP app!&lt;br /&gt; &lt;/p&gt;&lt;p&gt;You can access a version of the PHP hosted file manager built via Zend here - &lt;a href="http://developer.nirvanix.com/files/folders/php_zend/default.aspx" title="Nirvanix Zend/PHP"&gt;Nirvanix PHP Zend hosted file manager&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can get more info and downlaod the Zend 1.5 framework here - &lt;a href="http://devzone.zend.com/article/3270-Zend-Technologies-Releases-Zend-Framework-1.5" title="Zend 1.5 Framework" target="_blank"&gt;Zend 1.5 Framework &lt;/a&gt;&lt;/p&gt;&lt;p&gt;We will post a version of the more robust PHP file manager built via
Zend in
the coming weeks. Subscribe to this blog or to the Nirvanix PHP/Zend download section&amp;nbsp;
to receive notification &lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://developer.nirvanix.com/aggbug.aspx?PostID=732" width="1" height="1"&gt;</description><category domain="http://developer.nirvanix.com/blogs/developer_blog/archive/tags/Zend+PHP/default.aspx">Zend PHP</category></item><item><title>Stay Connected</title><link>http://developer.nirvanix.com/blogs/developer_blog/archive/2008/02/05/test.aspx</link><pubDate>Tue, 05 Feb 2008 01:48:00 GMT</pubDate><guid isPermaLink="false">40a1f22b-b3c4-4855-9640-186c593af682:512</guid><dc:creator>adrian</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://developer.nirvanix.com/blogs/developer_blog/rsscomments.aspx?PostID=512</wfw:commentRss><comments>http://developer.nirvanix.com/blogs/developer_blog/archive/2008/02/05/test.aspx#comments</comments><description>We are replacing our Developer News &amp;amp; Events section with the Developer Blog in order to seamlessly communicate with all Nirvanix developers. You can now subscribe to this blog for product updates, developer news, notification of sample app/code snippet posting and anything else we think would interest developers. We hope this help you get to the info you need more quickly. Let us know if we can do anything else to make your development efforts easier!&lt;br /&gt;&lt;img src="http://developer.nirvanix.com/aggbug.aspx?PostID=512" width="1" height="1"&gt;</description><category domain="http://developer.nirvanix.com/blogs/developer_blog/archive/tags/developer+blog+rss/default.aspx">developer blog rss</category></item></channel></rss>