2010-11-30 13 views
1

現在、古い$ .get()を許可していないFoursquare APIを非同期で照会したいとします。JSON用Railsプロキシの作成

def foursquare_info_for(venue_id) 
    res = Net::HTTP.get_response("api.foursquare.com", "/v1/venue.json?vid=#{venue_id}") 
    data = JSON.parse(res.body) 
    info = Hash.new 
    info["mayor_name"] = "#{data['venue']['stats']['mayor']['user']['firstname']} #{data['venue']['stats']['mayor']['user']['lastname']}" 
    info["mayor_photo_src"] = "#{data['venue']['stats']['mayor']['user']['photo']}" 
    info["checkins"] = "#{data['venue']['stats']['checkins']}" 
    info 
end 

動作することを、私はむしろ、この私がページをロードした後にjQueryのAJAX要求でに取得することができ、プロキシ作ると思います。私の短期的な解決策は、ちょうどそうのようなデータを取得するヘルパーを作ることです物事を少し速くする。私はこのヘルパーがプロキシを動作させるために必要なものに近いと確信していますが、私はjQueryで取得できるように、私の側にプロキシJSONを置く必要があるかどうかはわかりません。

net/httpを使用してプロキシを作成するための適切な道はありますか?

jQuery GETを使用してアクセスできるように、私の側にプロキシを置くのはどこですか?

答えて

5

Net :: HTTPを使用するとこれで十分だと思います。

私はそのクラスを作成します。以下のような何か:

class FoursquareInfo < Struct.new(:venue_id) 

    def info 
    { :mayor_name => mayour_name, :mayor_photo_src => mayor_photo_src, :checkins => checkins } 
    end 

    def mayor_name 
    "#{mayor_firstname} #{mayor_lastname}" 
    end 

    def mayor_firstname 
    mayor["firstname"] 
    end 

    def mayor 
    stats["mayor"]["user"] 
    end 

    def stats 
    data["venue"]["stats"] 
    end 

    def data 
    @data ||= JSON.parse(response.body) 
    end 

    def response 
    Net::HTTP.get_response("api.foursquare.com", "/v1/venue.json?vid=#{venue_id}") 
    end 

    # etc... 

end 

とコントローラから:

class FoursquareInfosController < ApplicationController 
    def show 
    render :json => FoursquareInfo.new(params[:id]).info 
    end 
end 
+0

ありがとう!これは魅力的に機能しました。 – mcmaloney

+0

ありがとうも同様のものを探していた –

関連する問題