mirror of
https://github.com/iritmaximus/brewery.git
synced 2026-10-12 19:13:49 +03:00
added weather to places
This commit is contained in:
@@ -4,6 +4,8 @@ class PlacesController < ApplicationController
|
|||||||
|
|
||||||
def search
|
def search
|
||||||
@places = BeermappingApi.places_in(params[:city])
|
@places = BeermappingApi.places_in(params[:city])
|
||||||
|
@weather = Place.weather params[:city]
|
||||||
|
@city = params[:city]
|
||||||
if @places.empty?
|
if @places.empty?
|
||||||
redirect_to places_path, notice: "No locations in #{params[:city]}"
|
redirect_to places_path, notice: "No locations in #{params[:city]}"
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -2,4 +2,41 @@ class Place < OpenStruct
|
|||||||
def self.rendered_fields
|
def self.rendered_fields
|
||||||
[:id, :name, :status, :street, :city, :zip, :country, :overall]
|
[:id, :name, :status, :street, :city, :zip, :country, :overall]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def self.weather location
|
||||||
|
weather_api_key = self.api_key
|
||||||
|
weather_api_url = "http://api.weatherstack.com/current"
|
||||||
|
|
||||||
|
response = HTTParty.get "#{weather_api_url}?access_key=#{weather_api_key}&query=#{location}"
|
||||||
|
|
||||||
|
#if response["success"]
|
||||||
|
puts "#{weather_api_url}?access_key=#{weather_api_key}&query=#{location}"
|
||||||
|
puts response.parsed_response
|
||||||
|
data = response.parsed_response["current"]
|
||||||
|
if data.nil?
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
weather = self.parse_weather_data data
|
||||||
|
return weather
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.parse_weather_data data
|
||||||
|
temperature = data["temperature"]
|
||||||
|
weather_icon = data["weather_icons"][0]
|
||||||
|
weather_descriptions = data["weather_descriptions"][0]
|
||||||
|
weather_icon = { image: weather_icon, description: weather_descriptions}
|
||||||
|
wind_direction = data["wind_dir"]
|
||||||
|
wind_speed = data["wind_speed"]
|
||||||
|
wind = { direction: wind_direction, speed: wind_speed }
|
||||||
|
weather = { temperature: temperature, wind: wind, weather_icon: weather_icon}
|
||||||
|
return weather
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.api_key
|
||||||
|
return nil if Rails.env.test?
|
||||||
|
key = Rails.application.credentials.weatherstack_api_key
|
||||||
|
raise 'WEATHERSTACK_API_KEY env variable not defined in credentials' if key.nil?
|
||||||
|
return key
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -7,6 +7,16 @@
|
|||||||
|
|
||||||
|
|
||||||
<%= notice %>
|
<%= notice %>
|
||||||
|
<% if @weather %>
|
||||||
|
<div>
|
||||||
|
<strong>
|
||||||
|
The current beer weather in <%= @city%>
|
||||||
|
</strong>
|
||||||
|
<p><%= @weather[:temperature] %> Celcius</p>
|
||||||
|
<img src=<%= @weather[:weather_icon][:image] %> alt=<%= @weather[:weather_icon][:description] %>>
|
||||||
|
<p><strong>Wind: </strong><%= @weather[:wind][:speed] %>, direction <%= @weather[:wind][:direction]%></p>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
<% if @places %>
|
<% if @places %>
|
||||||
<table>
|
<table>
|
||||||
<thead>
|
<thead>
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
Gc10IM4hcI/b0NKtz5TTTCTVHrY0qLbRMMoJ0Bki0YGJ01VIFfIIXvX11fBV216+FbmKzxyQNw7qsK561O0EM4LCrAseiX2kdzWp8pQOUiKGAL2X9FKHYQ3anVhVkXtFjFnV+nSB1Hj8ALyP4xiApkNTdGxVO7bsLpDAi+EmkE1gUKoNcNZG4ADYFC5RG8ScH4CZudjTqT4SddGavTCVVZY/Tk6EipJtFGSt0GZIZw4GFfuetN7fXtl9BKgtRwEaUoiTcpE+bek5QMtQfG2F+FCv7IjOsTpgEXSXquyxBeIikNxbGlB/xYDPPEQJJ+AZMbJ8Ek5SWpXsWs7Z+5yEWmC8A507Lq4ogiwaLCO17kR0clOGUbJBYm5CmhuQS1I3OfW8RvE8FHF3UC0k49rorIf3cJsAD/SsZkzV3IrrGSv7aWod9317gWnPRQJPIAKWjXLsSGtKQuIuuogjKJs70tXhFJGroVQ=--07F7ribi1AB1d2T1--tY87Ixbc99OLfqYM9J0Ndg==
|
tJ0X+G0ED1Nvie5fvlyo4X51kqNyukq/tLd6fXh5alSRrq4E5G0PxGy/X2CRZYau1EPxIFQB07jFDST9gby/NKRmxzFxeyISrDb7bdMOh74zSi38q/bk4IqVHgvJgsMwwp2QusgwKY6TLwworJ3tKhgZuJUTMgmYRLdon+Hqk9z10BitGCMQ/5RUt8TuVHd+ydiEhj7S+30SYQRhoqqfd0wM0OJLNQcaeI1UeXwfySbBlJmo1SY4ThgbEShgNlRZj0LWONCMaxm9lHkeuMzDWH3lTOx6rhhhSTFhui0BmRHh/T3tyFhuRDvrTCgjHKFQ2U2NdATEtNCBrsVyxtF3obum7zCBC1AYnfVCwSmSqWuqhMwtm10dvJr71Zk5UMpqNaS9I0mf5oncTQ+rO3Dl2nGoBUaw9WfCg95Q1e3Rn1itwkULRwup+ckrkp0+wnLY4zi8NZYlG5gUnyBqCL956UcuMPrP5MESYqpiGK+KqxY+IjysYWjUOGBFO0YU644HFh5WDvMYLgTUJOgJTGDGEMnFZwzji/LAAi63iczLE7+Tjw==--bNGVobWtteua3hyN--xHVdPigQVBB/6vxV7q3TRw==
|
||||||
Reference in New Issue
Block a user