Angular.JS: HTTP-GET for YAHOO.Finance.SymbolSuggest

Uses a HTTP-GET call to Yahoo YQL API for auto-completion of traded stocks. Does not work because if HTTS problems. HTTP-JSONP should be used instead.

by Matthias Heise

HTML

<div ng-app='MyModule' ng-controller='DefaultCtrl'>
    {{ test }}
</div>

JavaScript

function DefaultCtrl($log, $scope, $http, myService) {
    
    var promise = myService.getSuggestions('yahoo');

    promise.then(
          function(payload) { 
              $scope.test = payload;
              $log.info('received data', payload);
          },
          function(errorPayload) {
              $log.error('failure loading suggestions', errorPayload);
          });    
}
    
angular.module('MyModule', [])
.factory('myService', function ($http, $log, $q) {
    return {
        getSuggestions: function (symbol) {            
            
            var deferred = $q.defer();

            $http.get('http://d.yimg.com/autoc.finance.yahoo.com/autoc', {
                cache: true,
                params: { 
                    query: symbol,
                    callback: 'YAHOO.Finance.SymbolSuggest.ssCallback'
                }
            })
            .success(function(data) {
                deferred.resolve(data);
            })
            .error(function(msg, code) {
                deferred.reject(msg);
                $log.error(msg, code);
            });
            
            return deferred.promise;
        }
    }
});