/// <summary>
    /// Lookups the book by ISBN.
    /// </summary>
    /// <param name="isbnToLookup">The ISBN to lookup.</param>
    public static AmazonSearchBookResult LookupBook(string isbnToLookup)
    {
        // Find from cache at first.
        var cacheKey = "5ce243f60066497792b56a77476a8f70/" + isbnToLookup;
        var context  = HttpContext.Current;
        var cache    = context != null ? context.Cache : default(Cache);

        if (cache != null)
        {
            var cachedResult = cache[cacheKey] as AmazonSearchBookResult;
            if (cachedResult != null)
            {
                return(cachedResult);
            }
        }

        // Build serach parameters.
        var searchParam = new AmazonSearchParam(AccessKeyId, isbnToLookup);
        var queryStr    = searchParam.ToQueryString();
        var signature   = searchParam.GetSignature(SecretAccessKey, Host, Path);
        var uri         = string.Format("http://{0}{1}?{2}&Signature={3}",
                                        Host, Path, queryStr, signature);

        // Call AWS.
        var lookupResult = new AmazonSearchBookResult(XDocument.Load(uri));

        // Insert into cache, and return.
        if (cache != null)
        {
            cache.Insert(cacheKey, lookupResult);
        }
        return(lookupResult);
    }
    /// <summary>
    /// Lookups the book by ISBN.
    /// </summary>
    /// <param name="isbnToLookup">The ISBN to lookup.</param>
    public static AmazonSearchBookResult LookupBook(string isbnToLookup)
    {
        // Find from cache at first.
        var cacheKey = "5ce243f60066497792b56a77476a8f70/" + isbnToLookup;
        var context = HttpContext.Current;
        var cache = context != null ? context.Cache : default(Cache);
        if (cache != null)
        {
            var cachedResult = cache[cacheKey] as AmazonSearchBookResult;
            if (cachedResult != null) return cachedResult;
        }

        // Build serach parameters.
        var searchParam = new AmazonSearchParam(AccessKeyId, isbnToLookup);
        var queryStr = searchParam.ToQueryString();
        var signature = searchParam.GetSignature(SecretAccessKey, Host, Path);
        var uri = string.Format("http://{0}{1}?{2}&Signature={3}",
            Host, Path, queryStr, signature);

        // Call AWS.
        var lookupResult = new AmazonSearchBookResult(XDocument.Load(uri));

        // Insert into cache, and return.
        if (cache != null) cache.Insert(cacheKey, lookupResult);
        return lookupResult;
    }