add images table, organize time and weather namespace
This commit is contained in:
parent
0e17e9e357
commit
dec0423a99
|
@ -0,0 +1,20 @@
|
||||||
|
using Discord.Commands;
|
||||||
|
using dotbot.Core;
|
||||||
|
using Microsoft.Extensions.Configuration;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace dotbot.Commands
|
||||||
|
{
|
||||||
|
[Group("img")]
|
||||||
|
public class Images : ModuleBase<SocketCommandContext>
|
||||||
|
{
|
||||||
|
[Command]
|
||||||
|
[Alias("image", "pic")]
|
||||||
|
[Summary("get a saved image")]
|
||||||
|
public async Task GetImage([Summary("image name")] string name)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -9,15 +9,13 @@ namespace dotbot.Commands
|
||||||
{
|
{
|
||||||
public class Location : ModuleBase<SocketCommandContext>
|
public class Location : ModuleBase<SocketCommandContext>
|
||||||
{
|
{
|
||||||
private readonly IConfigurationRoot _config;
|
private string OwmUrl;
|
||||||
private string OwmApiUrl = "http://api.openweathermap.org/data/2.5/weather";
|
private string GeoNamesUrl;
|
||||||
private string GeoNamesUrl = "http://api.geonames.org/timezoneJSON";
|
|
||||||
|
|
||||||
public Location(IConfigurationRoot config)
|
public Location(IConfigurationRoot config)
|
||||||
{
|
{
|
||||||
_config = config;
|
OwmUrl = $"{config["endpoints:owm"]}?APPID={config["tokens:owm"]}&units=metric";
|
||||||
OwmApiUrl += $"?APPID={_config["tokens:owm"]}&units=metric";
|
GeoNamesUrl = $"{config["endpoints:geonames"]}?username={config["tokens:geonames"]}";
|
||||||
GeoNamesUrl += $"?username={_config["tokens:geonames"]}";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -25,8 +23,8 @@ namespace dotbot.Commands
|
||||||
[Summary("save your location so benbot can look up your weather and timezone")]
|
[Summary("save your location so benbot can look up your weather and timezone")]
|
||||||
public async Task SaveUserLocation([Remainder] [Summary("location")] string location)
|
public async Task SaveUserLocation([Remainder] [Summary("location")] string location)
|
||||||
{
|
{
|
||||||
var owm = Utils.GetJson<Weather.OwmApiResult>($"{OwmApiUrl}&q={HttpUtility.UrlEncode(location)}");
|
var owm = Utils.GetJson<OwmApiResult>($"{OwmUrl}&q={HttpUtility.UrlEncode(location)}");
|
||||||
var geo = Utils.GetJson<Time.GeonamesApiResult>($"{GeoNamesUrl}&lat={owm.coord.lat}&lng={owm.coord.lon}");
|
var geo = Utils.GetJson<GeonamesApiResult>($"{GeoNamesUrl}&lat={owm.coord.lat}&lng={owm.coord.lon}");
|
||||||
using (var db = new DotbotDbContext())
|
using (var db = new DotbotDbContext())
|
||||||
{
|
{
|
||||||
if (db.UserLocations.Any(u => u.Id == Context.User.Id))
|
if (db.UserLocations.Any(u => u.Id == Context.User.Id))
|
||||||
|
|
|
@ -14,16 +14,17 @@ namespace dotbot.Commands
|
||||||
public class Time : ModuleBase<SocketCommandContext>
|
public class Time : ModuleBase<SocketCommandContext>
|
||||||
{
|
{
|
||||||
private readonly IConfigurationRoot _config;
|
private readonly IConfigurationRoot _config;
|
||||||
private string OwmApiUrl = "http://api.openweathermap.org/data/2.5/weather";
|
private string OwmUrl;
|
||||||
private string GeoNamesUrl = "http://api.geonames.org/timezoneJSON";
|
private string GeoNamesUrl;
|
||||||
|
|
||||||
public Time(IConfigurationRoot config)
|
public Time(IConfigurationRoot config)
|
||||||
{
|
{
|
||||||
_config = config;
|
_config = config;
|
||||||
OwmApiUrl += $"?APPID={_config["tokens:owm"]}&units=metric";
|
OwmUrl = $"{_config["endpoints:owm"]}?APPID={_config["tokens:owm"]}&units=metric";
|
||||||
GeoNamesUrl += $"?username={_config["tokens:geonames"]}";
|
GeoNamesUrl = $"{_config["endpoints:geonames"]}?username={_config["tokens:geonames"]}";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
[Command]
|
[Command]
|
||||||
[Summary("get the time at your location (or bot's location if you don't have one saved)")]
|
[Summary("get the time at your location (or bot's location if you don't have one saved)")]
|
||||||
public async Task GetTime()
|
public async Task GetTime()
|
||||||
|
@ -33,7 +34,7 @@ namespace dotbot.Commands
|
||||||
if (db.UserLocations.Any(u => u.Id == Context.User.Id))
|
if (db.UserLocations.Any(u => u.Id == Context.User.Id))
|
||||||
{
|
{
|
||||||
var ul = db.UserLocations.Find(Context.User.Id);
|
var ul = db.UserLocations.Find(Context.User.Id);
|
||||||
await ReplyAsync($"it's {GetTimeFromIanaId(ul.TimeZone):g} in {ul.City}");
|
await ReplyAsync($"it's {Utils.IanaIdToDateTime(ul.TimeZone):g} in {ul.City}");
|
||||||
}
|
}
|
||||||
else await ReplyAsync($"it's {DateTime.Now:g} Eastern Time (where the bot is hosted)\n\nyou can save your location/timezone with `{_config["prefix"]}savelocation <city>`");
|
else await ReplyAsync($"it's {DateTime.Now:g} Eastern Time (where the bot is hosted)\n\nyou can save your location/timezone with `{_config["prefix"]}savelocation <city>`");
|
||||||
}
|
}
|
||||||
|
@ -49,12 +50,9 @@ namespace dotbot.Commands
|
||||||
if (db.UserLocations.Any(u => u.Id == user.Id))
|
if (db.UserLocations.Any(u => u.Id == user.Id))
|
||||||
{
|
{
|
||||||
var ul = db.UserLocations.Find(user.Id);
|
var ul = db.UserLocations.Find(user.Id);
|
||||||
await ReplyAsync($"the time for {user.Mention} in {ul.City} is {GetTimeFromIanaId(ul.TimeZone):g}");
|
await ReplyAsync($"the time for {user.Mention} in {ul.City} is {Utils.IanaIdToDateTime(ul.TimeZone):g}");
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
await ReplyAsync($"{user.Mention} does not have a saved location\nit's {DateTime.Now:g} Eastern Time (US)");
|
|
||||||
}
|
}
|
||||||
|
else await ReplyAsync($"{user.Mention} does not have a saved location\nit's {DateTime.Now:g} Eastern Time (US)");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -64,17 +62,17 @@ namespace dotbot.Commands
|
||||||
public async Task LookupTime([Remainder] [Summary("location")] string location)
|
public async Task LookupTime([Remainder] [Summary("location")] string location)
|
||||||
{
|
{
|
||||||
await Context.Channel.TriggerTypingAsync();
|
await Context.Channel.TriggerTypingAsync();
|
||||||
var owm = Utils.GetJson<Weather.OwmApiResult>($"{OwmApiUrl}&q={HttpUtility.UrlEncode(location)}");
|
var owm = Utils.GetJson<OwmApiResult>($"{OwmUrl}&q={HttpUtility.UrlEncode(location)}");
|
||||||
var geo = Utils.GetJson<GeonamesApiResult>($"{GeoNamesUrl}&lat={owm.coord.lat}&lng={owm.coord.lon}");
|
var geo = Utils.GetJson<GeonamesApiResult>($"{GeoNamesUrl}&lat={owm.coord.lat}&lng={owm.coord.lon}");
|
||||||
await ReplyAsync($"it is {GetTimeFromIanaId(geo.timezoneId)} in {owm.name}");
|
await ReplyAsync($"it is {Utils.IanaIdToDateTime(geo.timezoneId)} in {owm.name}");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public class GeonamesApiResult
|
|
||||||
{
|
|
||||||
public string timezoneId { get; set; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public static DateTime GetTimeFromIanaId(string tzId) => SystemClock.Instance.GetCurrentInstant().InZone(DateTimeZoneProviders.Tzdb[tzId]).ToDateTimeUnspecified();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public class GeonamesApiResult
|
||||||
|
{
|
||||||
|
public string timezoneId { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,14 +13,12 @@ namespace dotbot.Commands
|
||||||
public class Weather : ModuleBase<SocketCommandContext>
|
public class Weather : ModuleBase<SocketCommandContext>
|
||||||
{
|
{
|
||||||
private IConfigurationRoot _config;
|
private IConfigurationRoot _config;
|
||||||
private string OwmApiUrl = "http://api.openweathermap.org/data/2.5/weather";
|
private string OwmUrl;
|
||||||
private string GeoNamesUrl = "http://api.geonames.org/timezoneJSON";
|
|
||||||
|
|
||||||
public Weather(IConfigurationRoot config)
|
public Weather(IConfigurationRoot config)
|
||||||
{
|
{
|
||||||
_config = config;
|
_config = config;
|
||||||
OwmApiUrl += $"?APPID={_config["tokens:owm"]}&units=metric";
|
OwmUrl = $"{_config["endpoints:owm"]}?APPID={_config["tokens:owm"]}&units=metric";
|
||||||
GeoNamesUrl += $"?username={_config["tokens:geonames"]}";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -32,7 +30,7 @@ namespace dotbot.Commands
|
||||||
{
|
{
|
||||||
if (db.UserLocations.Any(u => u.Id == Context.User.Id))
|
if (db.UserLocations.Any(u => u.Id == Context.User.Id))
|
||||||
{
|
{
|
||||||
var url = $"{OwmApiUrl}&id={db.UserLocations.Find(Context.User.Id).CityId}";
|
var url = $"{OwmUrl}&id={db.UserLocations.Find(Context.User.Id).CityId}";
|
||||||
await ReplyAsync("", embed: WeatherEmbed(Utils.GetJson<OwmApiResult>(url)));
|
await ReplyAsync("", embed: WeatherEmbed(Utils.GetJson<OwmApiResult>(url)));
|
||||||
}
|
}
|
||||||
else await ReplyAsync($"you don't have a location saved. look one up with `{_config["prefix"]}weather <search term>` or save a location for yourself with `{_config["prefix"]}savelocation <city>`");
|
else await ReplyAsync($"you don't have a location saved. look one up with `{_config["prefix"]}weather <search term>` or save a location for yourself with `{_config["prefix"]}savelocation <city>`");
|
||||||
|
@ -48,7 +46,7 @@ namespace dotbot.Commands
|
||||||
{
|
{
|
||||||
if (db.UserLocations.Any(u => u.Id == user.Id))
|
if (db.UserLocations.Any(u => u.Id == user.Id))
|
||||||
{
|
{
|
||||||
var url = $"{OwmApiUrl}&id={db.UserLocations.Find(user.Id).CityId}";
|
var url = $"{OwmUrl}&id={db.UserLocations.Find(user.Id).CityId}";
|
||||||
await ReplyAsync("", embed: WeatherEmbed(Utils.GetJson<OwmApiResult>(url)));
|
await ReplyAsync("", embed: WeatherEmbed(Utils.GetJson<OwmApiResult>(url)));
|
||||||
}
|
}
|
||||||
else await ReplyAsync($"{user.Mention} doesn't have a location saved. look one up with `{_config["prefix"]}weather <search term>` or save a location for yourself with `{_config["prefix"]}savelocation <city>`");
|
else await ReplyAsync($"{user.Mention} doesn't have a location saved. look one up with `{_config["prefix"]}weather <search term>` or save a location for yourself with `{_config["prefix"]}savelocation <city>`");
|
||||||
|
@ -60,53 +58,11 @@ namespace dotbot.Commands
|
||||||
[Summary("look up the weather at a specified location")]
|
[Summary("look up the weather at a specified location")]
|
||||||
public async Task LookupWeather([Remainder] [Summary("location")] string location)
|
public async Task LookupWeather([Remainder] [Summary("location")] string location)
|
||||||
{
|
{
|
||||||
var url = $"{OwmApiUrl}&q={HttpUtility.UrlEncode(location)}";
|
var url = $"{OwmUrl}&q={HttpUtility.UrlEncode(location)}";
|
||||||
await ReplyAsync("", embed: WeatherEmbed(Utils.GetJson<OwmApiResult>(url)));
|
await ReplyAsync("", embed: WeatherEmbed(Utils.GetJson<OwmApiResult>(url)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public class OwmApiResult
|
|
||||||
{
|
|
||||||
public int id { get; set; }
|
|
||||||
public string name { get; set; }
|
|
||||||
public class Coord
|
|
||||||
{
|
|
||||||
public double lon { get; set; }
|
|
||||||
public double lat { get; set; }
|
|
||||||
}
|
|
||||||
public Coord coord { get; set; }
|
|
||||||
public class Weather
|
|
||||||
{
|
|
||||||
public int id { get; set; }
|
|
||||||
public string main { get; set; }
|
|
||||||
public string description { get; set; }
|
|
||||||
public string icon { get; set; }
|
|
||||||
}
|
|
||||||
public Weather[] weather { get; set; }
|
|
||||||
public class WeatherMain
|
|
||||||
{
|
|
||||||
public double temp { get; set; }
|
|
||||||
public double pressure { get; set; }
|
|
||||||
public double humidity { get; set; }
|
|
||||||
public double temp_min { get; set; }
|
|
||||||
public double temp_max { get; set; }
|
|
||||||
}
|
|
||||||
public WeatherMain main { get; set; }
|
|
||||||
public class Wind
|
|
||||||
{
|
|
||||||
public double speed { get; set; }
|
|
||||||
public int deg { get; set; }
|
|
||||||
}
|
|
||||||
public Wind wind { get; set; }
|
|
||||||
public class Sys
|
|
||||||
{
|
|
||||||
public string country { get; set; }
|
|
||||||
public double sunrise { get; set; }
|
|
||||||
public double sunset { get; set; }
|
|
||||||
}
|
|
||||||
public Sys sys { get; set; }
|
|
||||||
}
|
|
||||||
|
|
||||||
private Embed WeatherEmbed(OwmApiResult result)
|
private Embed WeatherEmbed(OwmApiResult result)
|
||||||
{
|
{
|
||||||
var embed = new EmbedBuilder
|
var embed = new EmbedBuilder
|
||||||
|
@ -128,4 +84,47 @@ namespace dotbot.Commands
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class OwmApiResult
|
||||||
|
{
|
||||||
|
public int id { get; set; }
|
||||||
|
public string name { get; set; }
|
||||||
|
public class Coord
|
||||||
|
{
|
||||||
|
public double lon { get; set; }
|
||||||
|
public double lat { get; set; }
|
||||||
|
}
|
||||||
|
public Coord coord { get; set; }
|
||||||
|
public class Weather
|
||||||
|
{
|
||||||
|
public int id { get; set; }
|
||||||
|
public string main { get; set; }
|
||||||
|
public string description { get; set; }
|
||||||
|
public string icon { get; set; }
|
||||||
|
}
|
||||||
|
public Weather[] weather { get; set; }
|
||||||
|
public class WeatherMain
|
||||||
|
{
|
||||||
|
public double temp { get; set; }
|
||||||
|
public double pressure { get; set; }
|
||||||
|
public double humidity { get; set; }
|
||||||
|
public double temp_min { get; set; }
|
||||||
|
public double temp_max { get; set; }
|
||||||
|
}
|
||||||
|
public WeatherMain main { get; set; }
|
||||||
|
public class Wind
|
||||||
|
{
|
||||||
|
public double speed { get; set; }
|
||||||
|
public int deg { get; set; }
|
||||||
|
}
|
||||||
|
public Wind wind { get; set; }
|
||||||
|
public class Sys
|
||||||
|
{
|
||||||
|
public string country { get; set; }
|
||||||
|
public double sunrise { get; set; }
|
||||||
|
public double sunset { get; set; }
|
||||||
|
}
|
||||||
|
public Sys sys { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,6 +7,7 @@ namespace dotbot.Core
|
||||||
public DbSet<Definition> Defs { get; set; }
|
public DbSet<Definition> Defs { get; set; }
|
||||||
public DbSet<Email> Emails { get; set; }
|
public DbSet<Email> Emails { get; set; }
|
||||||
public DbSet<UserLocation> UserLocations { get; set; }
|
public DbSet<UserLocation> UserLocations { get; set; }
|
||||||
|
public DbSet<Image> Images { get; set; }
|
||||||
|
|
||||||
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
|
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
|
||||||
{
|
{
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
namespace dotbot.Core
|
||||||
|
{
|
||||||
|
public class Image
|
||||||
|
{
|
||||||
|
public string Id { get; set; }
|
||||||
|
public string FilePath { get; set; }
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,4 +1,6 @@
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
|
using NodaTime;
|
||||||
|
using System;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
|
|
||||||
namespace dotbot.Core
|
namespace dotbot.Core
|
||||||
|
@ -13,5 +15,7 @@ namespace dotbot.Core
|
||||||
|
|
||||||
public static double ConvertCToF(double c) => ((9.0 / 5.0) * c) + 32;
|
public static double ConvertCToF(double c) => ((9.0 / 5.0) * c) + 32;
|
||||||
|
|
||||||
|
public static DateTime IanaIdToDateTime(string tzId) => SystemClock.Instance.GetCurrentInstant().InZone(DateTimeZoneProviders.Tzdb[tzId]).ToDateTimeUnspecified();
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,80 @@
|
||||||
|
// <auto-generated />
|
||||||
|
using dotbot.Core;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||||
|
using Microsoft.EntityFrameworkCore.Metadata;
|
||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
using Microsoft.EntityFrameworkCore.Storage;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace dotbot.Migrations
|
||||||
|
{
|
||||||
|
[DbContext(typeof(DotbotDbContext))]
|
||||||
|
[Migration("20171209043817_AddImageTable")]
|
||||||
|
partial class AddImageTable
|
||||||
|
{
|
||||||
|
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
||||||
|
{
|
||||||
|
#pragma warning disable 612, 618
|
||||||
|
modelBuilder
|
||||||
|
.HasAnnotation("ProductVersion", "2.0.1-rtm-125");
|
||||||
|
|
||||||
|
modelBuilder.Entity("dotbot.Core.Definition", b =>
|
||||||
|
{
|
||||||
|
b.Property<string>("Id")
|
||||||
|
.ValueGeneratedOnAdd();
|
||||||
|
|
||||||
|
b.Property<string>("Def");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.ToTable("Defs");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("dotbot.Core.Email", b =>
|
||||||
|
{
|
||||||
|
b.Property<ulong>("Id")
|
||||||
|
.ValueGeneratedOnAdd();
|
||||||
|
|
||||||
|
b.Property<string>("EmailAddress");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.ToTable("Emails");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("dotbot.Core.Image", b =>
|
||||||
|
{
|
||||||
|
b.Property<string>("Id")
|
||||||
|
.ValueGeneratedOnAdd();
|
||||||
|
|
||||||
|
b.Property<string>("FilePath");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.ToTable("Images");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("dotbot.Core.UserLocation", b =>
|
||||||
|
{
|
||||||
|
b.Property<ulong>("Id")
|
||||||
|
.ValueGeneratedOnAdd();
|
||||||
|
|
||||||
|
b.Property<string>("City");
|
||||||
|
|
||||||
|
b.Property<int>("CityId");
|
||||||
|
|
||||||
|
b.Property<double>("Lat");
|
||||||
|
|
||||||
|
b.Property<double>("Lng");
|
||||||
|
|
||||||
|
b.Property<string>("TimeZone");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.ToTable("UserLocations");
|
||||||
|
});
|
||||||
|
#pragma warning restore 612, 618
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,30 @@
|
||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace dotbot.Migrations
|
||||||
|
{
|
||||||
|
public partial class AddImageTable : Migration
|
||||||
|
{
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "Images",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
Id = table.Column<string>(nullable: false),
|
||||||
|
FilePath = table.Column<string>(nullable: true)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_Images", x => x.Id);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "Images");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -42,6 +42,18 @@ namespace dotbot.Migrations
|
||||||
b.ToTable("Emails");
|
b.ToTable("Emails");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("dotbot.Core.Image", b =>
|
||||||
|
{
|
||||||
|
b.Property<string>("Id")
|
||||||
|
.ValueGeneratedOnAdd();
|
||||||
|
|
||||||
|
b.Property<string>("FilePath");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.ToTable("Images");
|
||||||
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("dotbot.Core.UserLocation", b =>
|
modelBuilder.Entity("dotbot.Core.UserLocation", b =>
|
||||||
{
|
{
|
||||||
b.Property<ulong>("Id")
|
b.Property<ulong>("Id")
|
||||||
|
@ -51,9 +63,9 @@ namespace dotbot.Migrations
|
||||||
|
|
||||||
b.Property<int>("CityId");
|
b.Property<int>("CityId");
|
||||||
|
|
||||||
b.Property<float>("Lat");
|
b.Property<double>("Lat");
|
||||||
|
|
||||||
b.Property<float>("Lng");
|
b.Property<double>("Lng");
|
||||||
|
|
||||||
b.Property<string>("TimeZone");
|
b.Property<string>("TimeZone");
|
||||||
|
|
||||||
|
|
|
@ -7,5 +7,9 @@
|
||||||
"gmail": "", // password here
|
"gmail": "", // password here
|
||||||
"owm": "",
|
"owm": "",
|
||||||
"geonames": ""
|
"geonames": ""
|
||||||
|
},
|
||||||
|
"endpoints": {
|
||||||
|
"owm": "http://api.openweathermap.org/data/2.5/weather",
|
||||||
|
"geonames": "http://api.geonames.org/timezoneJSON"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue