class Dagjeweg::Tip

Attributes

accessible[RW]
accessible_comment[RW]
activities[RW]
address[RW]
bevrijdingsdag[RW]
city[RW]
description[RW]
di[RW]
distance[RW]
do[RW]
dw_id[RW]
dwurl[RW]
eerste_kerstdag[RW]
eerste_paasdag[RW]
eerste_pinksterdag[RW]
email[RW]
from_time[RW]
genre[RW]
goede_vrijdag[RW]
google_name[RW]
hemelvaartsdag[RW]
image[RW]
image10[RW]
image11[RW]
image12[RW]
image13[RW]
image2[RW]
image3[RW]
image4[RW]
image5[RW]
image6[RW]
image8[RW]
image9[RW]
koningsdag[RW]
latitude[RW]
long_description[RW]
longitude[RW]
ma[RW]
name[RW]
nieuwjaarsdag[RW]
number_of_reviews[RW]
open_comment[RW]
oudejaarsdag[RW]
periode[RW]
phone[RW]
postal_code[RW]
price[RW]
price_comment[RW]
price_kids[RW]
price_seniors[RW]
price_toddlers[RW]
rounded_cijfer[RW]
show_image[RW]
show_name[RW]
show_price[RW]
show_reviews[RW]
tweede_kerstdag[RW]
tweede_paasdag[RW]
tweede_pinksterdag[RW]
until_time[RW]
url[RW]
vr[RW]
weer[RW]
wheelchair[RW]
wheelchair_toilet[RW]
wo[RW]
za[RW]
zo[RW]

Public Class Methods

find(dw_id="") click to toggle source
# File lib/dagjeweg/tip.rb, line 31
def self.find(dw_id="")
  uri = Dagjeweg::Tip.api_url("tips.json?id=#{dw_id.to_s}")
  json = Dagjeweg::Tip.get_json(uri)
  puts "JSON: #{json}"
  if json && json.any?
    tip = new(json.first)
    return tip
  else
    raise DagjewegError.new("Tip met deze ID werd niet gevonden.")
  end
end
near(lat, lon, per_page) click to toggle source

return a list of tips near location. Takes 3 params:

  • lat

  • lon

  • number of tips

# File lib/dagjeweg/tip.rb, line 47
def self.near(lat, lon, per_page)
  uri = Dagjeweg::Tip.api_url("tips.json?lat=#{lat}&lon=#{lon}&per_page=#{per_page}")
  json = Dagjeweg::Tip.get_json(uri)
  Dagjeweg::Tip.parse_json(json)
end
new(args=nil) click to toggle source

Initializer to transform a Hash into an Tip object

@param [Hash] args

# File lib/dagjeweg/tip.rb, line 9
def initialize(args=nil)
  return if args.nil?
  args.each do |k,v|
    instance_variable_set("@#{k}", v) unless v.nil?
  end
  typecast_attrs
end

Private Class Methods

api_url(ext='') click to toggle source
# File lib/dagjeweg/tip.rb, line 120
def self.api_url(ext='')
  self.base_url + ext
end
base_url() click to toggle source
# File lib/dagjeweg/tip.rb, line 124
def self.base_url
  "http://m.dagjeweg.nl/api/#{Config.api_key}/"
end
get_json(uri) click to toggle source

Get the JSON object and return proper errors in scenarios where response code != 200 OK

# File lib/dagjeweg/tip.rb, line 106
def self.get_json(uri)
  resp = Net::HTTP.get_response(URI.parse(uri))
  case resp.code.to_i
  when 200
    return JSON.parse(resp.body)
  when 404
    raise DagjewegError.new(self), "Tip met deze ID werd niet gevonden. (#{resp.code})"
  when 403
    raise DagjewegError.new(self), "Ongeldige API Key (#{resp.code})"
  else
    raise DagjewegError.new(self), "Onbekende fout (#{resp.code})"
  end
end
parse_json(json) click to toggle source

Transform the json object in an Array of Tip instances

# File lib/dagjeweg/tip.rb, line 97
def self.parse_json(json)
  a = []
  for object in json
    a << Dagjeweg::Tip.new(object)
  end
  return a
end

Public Instance Methods

id() click to toggle source

returns the DagjeWeg ID

# File lib/dagjeweg/tip.rb, line 81
def id
  dw_id
end
nearby(range=10) click to toggle source

returns a list of tips in the range of x kilometers of this instance

# File lib/dagjeweg/tip.rb, line 54
def nearby(range=10)
  uri = Dagjeweg::Tip.api_url("nearby.json?id=#{id.to_s}")
  json = Dagjeweg::Tip.get_json(uri)
  Dagjeweg::Tip.parse_json(json)
end
period() click to toggle source
# File lib/dagjeweg/tip.rb, line 89
def period
  periode
end
reviews() click to toggle source

returns a list of review objects

# File lib/dagjeweg/tip.rb, line 61
def reviews
  reviews = []
  unless reviews.any?
    for object in show_reviews
      reviews << Dagjeweg::Review.new(
        tip_id: id, 
        reviewer: object["reviewer"], 
        title: object["titel"],
        body: object["body"], 
        duration: object["duur"], 
        rating: object["cijfer"].to_i, 
        review_date: object["review_date"], 
        visit_date: object["visit_date"]
      )
    end
  end
  return reviews
end
weather() click to toggle source
# File lib/dagjeweg/tip.rb, line 85
def weather
  weer
end

Private Instance Methods

typecast_attrs() click to toggle source
# File lib/dagjeweg/tip.rb, line 128
def typecast_attrs
  self.distance = distance.to_f unless distance == ''
  self.price = price.to_i unless price == ''
  self.price_kids = price_kids.to_i unless price_kids == ''
  self.price_toddlers = price_toddlers.to_i unless price_toddlers == ''
  self.price_seniors = price_seniors.to_i unless price_seniors == ''
end