Skip to content

Instantly share code, notes, and snippets.

@dtzitz
Created January 4, 2018 17:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dtzitz/1d749928cf30ab666df2c19b3e78d78b to your computer and use it in GitHub Desktop.
Save dtzitz/1d749928cf30ab666df2c19b3e78d78b to your computer and use it in GitHub Desktop.
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.ApplicationModel.Background;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Media.Imaging;
using Windows.UI.Xaml.Navigation;
using static isItFreezing.OpenWeatherProxy;
// The Blank Page item template is documented at https://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409
namespace isItFreezing
{
/// <summary>
/// An empty page that can be used on its own or navigated to within a Frame.
/// </summary>
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
}
private async void Florida_Loaded(object sender, RoutedEventArgs e)
{
int zipcode = 33709;
RootObject myWeather = await OpenWeatherMapProxy.GetWeatherAsync(zipcode);
//make the background
string flWeatherIcon = String.Format("ms-appx:///Assets/Florida/{0}.png", myWeather.weather[0].icon);
ImageBrush ib = new ImageBrush();
ib.ImageSource = new BitmapImage(new Uri(flWeatherIcon, UriKind.Absolute));
ib.Stretch = Stretch.UniformToFill;
Florida.Background = ib;
//weather info
flName.Text = myWeather.name;
flTemp.Text = "Temp: " + ((int)myWeather.main.temp).ToString()+ " F";
flHumidity.Text = "Humidity: " + (myWeather.main.humidity).ToString();
flCondition.Text = myWeather.weather[0].description;
//polling
var builder = new BackgroundTaskBuilder();
builder.Name = "My background trigger";
builder.SetTrigger(new TimeTrigger(30, false));
}
private async void Colorado_Loaded(object sender, RoutedEventArgs e)
{
int zipcode = 80918;
RootObject coWeather = await OpenWeatherMapProxy.GetWeatherAsync(zipcode);
//make the background
string coWeatherIcon = String.Format("ms-appx:///Assets/Colorado/{0}.png", coWeather.weather[0].icon);
ImageBrush ib = new ImageBrush();
ib.ImageSource = new BitmapImage(new Uri(coWeatherIcon, UriKind.Absolute));
ib.Stretch = Stretch.UniformToFill;
Colorado.Background = ib;
coName.Text = coWeather.name;
coTemp.Text = "Temp: " + ((int)coWeather.main.temp).ToString() + " F";
coHumidity.Text = "Humidity: " + (coWeather.main.humidity).ToString();
coCondition.Text = coWeather.weather[0].description;
}
}
}
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net.Http;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;
using System.Text;
using System.Threading.Tasks;
namespace isItFreezing
{
class OpenWeatherProxy
{
public class OpenWeatherMapProxy
{
public static async Task<RootObject> GetWeatherAsync(int zipcode)
{
var http = new HttpClient();
string weatherUrl = String.Format("http://api.openweathermap.org/data/2.5/weather?zip={0},us&appid=nope&units=imperial", zipcode);
var response = await http.GetAsync(weatherUrl);
var result = await response.Content.ReadAsStringAsync();
var seralizer = new DataContractJsonSerializer(typeof(RootObject));
var ms = new MemoryStream(Encoding.UTF8.GetBytes(result));
var data = (RootObject)seralizer.ReadObject(ms);
return data;
}
}
[DataContract]
public class Coord
{
[DataMember]
public double lon { get; set; }
[DataMember]
public double lat { get; set; }
}
[DataContract]
public class Weather
{
[DataMember]
public int id { get; set; }
[DataMember]
public string main { get; set; }
[DataMember]
public string description { get; set; }
[DataMember]
public string icon { get; set; }
}
[DataContract]
public class Main
{
[DataMember]
public double temp { get; set; }
[DataMember]
public int pressure { get; set; }
[DataMember]
public int humidity { get; set; }
[DataMember]
public double temp_min { get; set; }
[DataMember]
public double temp_max { get; set; }
}
[DataContract]
public class Wind
{
[DataMember]
public double speed { get; set; }
[DataMember]
public double deg { get; set; }
}
[DataContract]
public class Clouds
{
[DataMember]
public int all { get; set; }
}
[DataContract]
public class Sys
{
[DataMember]
public int type { get; set; }
[DataMember]
public int id { get; set; }
[DataMember]
public double message { get; set; }
[DataMember]
public string country { get; set; }
[DataMember]
public int sunrise { get; set; }
[DataMember]
public int sunset { get; set; }
}
[DataContract]
public class RootObject
{
[DataMember]
public Coord coord { get; set; }
[DataMember]
public List<Weather> weather { get; set; }
[DataMember]
public string @base { get; set; }
[DataMember]
public Main main { get; set; }
[DataMember]
public int visibility { get; set; }
[DataMember]
public Wind wind { get; set; }
[DataMember]
public Clouds clouds { get; set; }
[DataMember]
public int dt { get; set; }
[DataMember]
public Sys sys { get; set; }
[DataMember]
public int id { get; set; }
[DataMember]
public string name { get; set; }
[DataMember]
public int cod { get; set; }
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment