Lab 5: Web Services with REST

Due March 7 30 points.

To turn in: place a copy of your new-and-improved codebase in the submit directory. Also include a README giving the URL of your app.

In this lab, you'll get some experience using Web Services to gather additional information for our movie database. You'll be interacting with Amazon's Web Services platform, which has the advantage of being both easy to use and relatively well documented. You should use the REST intreface, which means that you can use whatever language you want; you'll just be constructing URLs and parsing XML.

  1. Register here to get an Amazon developer ID.
  2. 10 points Working directly with strings and URLs is not very pleasant. Build an object wrapper for the Amazon API that provides an interface for the ItemSearch, ItemLookup, SimilaritySearch, BrowseNodeLookup, ListSearch, and ListLookup operations. (I'm sure there are plenty of examples of this on the Web - please write your own.)
    For example, if you had a Python class called AWS, you might have an interface something like this:
    class AWS :
      def ItemSearch(SearchIndex, keywords=None, responseGroup=Large, title=None, ...)
    or perhaps you might choose to put all the optional arguments in a dictionary. You might also find it helpful to have a Movie class.
  3. 5 points Use Amazon to get images for all of the movies in your database. Modify your front-end display to show the images alongside the movie titles (If a movie is not in Amazon's DB, show a deault image instead).
  4. 5 points Use Amazon to find other things that a user of your database might like. For each movie, get a list of similar items. Recommend movies that are found more than once. in other words, if a user has Superman and Spider-Man in their movie database, Amazon might say that both of these movies are similar to Batman, and so your tool should display Batman as a possible recommendation.
  5. 10 points Use Amazon to 'do something else cool'. For example, display reviews of movies in your database, or bring up associated lists, or open a browser and web page that would allow the user to buy the movie. Creativity is encouraged here! You'll be graded on both execution and creativity.