Sha256: 6227c1da5ff3b7c578714e5cbb3d86aa1e3193a286de99884354378a8faf3436
Contents?: true
Size: 1.62 KB
Versions: 2
Compression:
Stored size: 1.62 KB
Contents
module Sched class Client attr_accessor :conference, :api_key def initialize(conference, api_key) @conference, @api_key = conference, api_key end def event(session_key) event = Sched::Event.new(session_key, self) if event.exists? event = self.events.select{|e| e.session_key == session_key}.first end event end def events unless @events results = FasterCSV.parse(request('session/list', nil, :get)) attributes = results.shift.map{|a| a.strip.to_sym} @events = results.map do |row| row_hash = {} attributes.each_with_index do |a, i| a = a.to_s.gsub(/^event_/, "session_").to_sym row_hash[a] = row[i] end event = Sched::Event.new(row_hash[:session_key], self).configure(row_hash) end end @events end def api_url "http://#{@conference}.sched.org/api" end def request(sub_url, data={}, method = :post) data ||= {} data.merge!({:api_key => @api_key}) url = "#{api_url}/#{sub_url}" output = nil if method == :post post_fields = data.map{|key, value| Curl::PostField.content(key.to_s, value)} c = Curl::Easy.new(url) c.headers["User-Agent"] = "sched-gem" c.http_post(post_fields) output = c.body_str elsif method == :get get_attributes = data.map{|key, value| "#{key}=#{value}" }.join("&") c = Curl::Easy.new("#{url}?#{get_attributes}") c.headers["User-Agent"] = "sched-gem" c.perform output = c.body_str end output end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
sched-0.1.4 | lib/sched/client.rb |
sched-0.1.3 | lib/sched/client.rb |