How to make an API call using meteor

Ok here is the twitter API,

http://search.twitter.com/search.atom?q=perkytweets

Can any one give me any hint about how to go about calling this API or link using Meteor

Update::

Here is the code that i tried but its not showing any response

if (Meteor.isClient) {
    Template.hello.greeting = function () {
        return "Welcome to HelloWorld";
    };

    Template.hello.events({
        'click input' : function () {
            checkTwitter();
        }
    });

    Meteor.methods({checkTwitter: function () {
        this.unblock();
        var result = Meteor.http.call("GET", "http://search.twitter.com/search.atom?q=perkytweets");
        alert(result.statusCode);
    }});
}

if (Meteor.isServer) {
    Meteor.startup(function () {
    });
}

Answers:

Answer

You are defining your checkTwitter Meteor.method inside a client-scoped block. Because you cannot call cross domain from the client (unless using jsonp), you have to put this block in a Meteor.isServer block.

As an aside, per the documentation, the client side Meteor.method of your checkTwitter function is merely a stub of a server-side method. You'll want to check out the docs for a full explanation of how server-side and client-side Meteor.methods work together.

Here is a working example of the http call:

if (Meteor.isServer) {
    Meteor.methods({
        checkTwitter: function () {
            this.unblock();
            return Meteor.http.call("GET", "http://search.twitter.com/search.json?q=perkytweets");
        }
    });
}

//invoke the server method
if (Meteor.isClient) {
    Meteor.call("checkTwitter", function(error, results) {
        console.log(results.content); //results.data should be a JSON object
    });
}
Answer

This might seem rudimentary - but the HTTP package does not come by default in your Meteor project and requires that you install it a la carte.

On the command line either:

  1. Just Meteor:
    meteor add http

  2. Meteorite:
    mrt add http

Meteor HTTP Docs

Answer

Meteor.http.get on the client is async, so you will need to provide a callback function :

Meteor.http.call("GET",url,function(error,result){
     console.log(result.statusCode);
});
Answer

Use Meteor.http.get. Per the docs:

Meteor.http.get(url, [options], [asyncCallback]) Anywhere
Send an HTTP GET request. Equivalent to Meteor.http.call("GET", ...).

The docs actually include some examples of using Twitter, so you should be able to get started with them.

Answer

on server side if you provide the call back to http.get it will be asynch call so my solutions to that undefined return on client was

var result = HTTP.get(iurl); return result.data.response;

as i did not pass a call back to HTTP.get so it waited until i got response. hope it helps

Tags

Recent Questions

Top Questions

Home Tags Terms of Service Privacy Policy DMCA Contact Us

©2020 All rights reserved.