require 'json' require 'blabla_client/attribute_helper' class Trip include AttributeHelper WHITELISTED_ATTRS = [:departure_date, :departure_place, :arrival_place, :price, :seats_left, :duration, :distance, :car, :links] attr_reader *WHITELISTED_ATTRS def initialize(hash) self.attributes = hash.keep_if {|k,v| WHITELISTED_ATTRS.include?(k)} end def self.parse_response(json_response) response = {} response_hash = JSON.parse json_response, :symbolize_names => true unless response_hash[:trips].nil? response[:trips] = response_hash[:trips].collect {|t| Trip.new(t)} end unless response_hash[:pager].nil? response[:page] = response_hash[:pager][:page] response[:pages] = response_hash[:pager][:pages] response[:count] = response_hash[:pager][:total] end response end def get_url links[:_front] end def get_price {:value => price[:value], :currency => price[:symbol], :color => price[:price_color].downcase} end def get_departure_date departure_fields = departure_date.split(' ') date_fields = departure_fields[0].split('/') time_fields = departure_fields[1].split(':') Time.new(date_fields[2].to_i, date_fields[1].to_i, date_fields[0].to_i, time_fields[0].to_i, time_fields[1].to_i, time_fields[2].to_i) end def get_departure_place full_address = departure_place[:address] full_address += ", #{departure_place[:city_name]}" unless departure_place[:address].include?(departure_place[:city_name]) full_address end def get_arrival_place full_address = arrival_place[:address] full_address += ", #{arrival_place[:city_name]}" unless arrival_place[:address].include?(arrival_place[:city_name]) full_address end def get_duration duration_hash = {} unless duration.nil? || duration.empty? if duration[:unity] == 's' duration_hash[:hours] = (duration[:value].to_f/3600).floor duration_hash[:minutes] = ((duration[:value] - duration_hash[:hours]*3600).to_f/60).floor end end duration_hash end def get_distance distance[:value] unless distance.nil? end def get_car car_hash = {} unless car.nil? || car.empty? car_hash[:model] = car[:make] car_hash[:model] += " #{car[:model]}" unless car[:model].nil? car_hash[:comfort] = car[:comfort_nb_star] end car_hash end end