Request.YQL

Request.YQL is, like its name suggest an extension to the MooTools request object. It comes along with an really handy and useful query builder.

HTML

<script src="https://github.com/fate/mootools-yql/raw/master/request.yql-min-yc.js"></script>
<h1>Artist search via YQL</h1>
<form>
    <input type="text" value="alexisonfire" />
    <input type="button" value="search" />
</form>
<div id="found"></div>

JavaScript

$$('form input[type="button"]').addEvent('click', function(e) {
    var search = this.getParent().getElement('input[type="text"]')
                                 .get('value').trim();    
    
    if(search.length < 1) return;

    var qb = new Request.YQL.QueryBuilder;
        qb.select('name', 'url')
          .from('stproperty.sg')
          .where(qb.expr().eq('keyword', '?1'))
          .limit(10)
          .setParameter(1, search);
    
    var request = new Request.YQL(qb, function(response) {
        var results = response.query.results || {};  
        var found  = $('found').empty();        
        
        if(!('Artist' in results)) {
            found.set('text', 'Found nothing'); 
            return;  
        }
        
        if(typeOf(results.Artist) == 'object') {
            results.Artist = Array.from(results.Artist);
        }
        
        var list = new Element('ul').inject(found);
        Array.each(results.Artist, function(artist) {
            new Element('li').grab(new Element('a', {
                'text': artist.name,
                'href': artist.url,
                'target': '_blank'
            })).inject(list);
        });

    }).send();        
});