Skip to content

Commit

Permalink
poracle's internatl Geoc0ding and StaticMap provider
Browse files Browse the repository at this point in the history
  • Loading branch information
KartulUdus committed Nov 12, 2019
1 parent feb08b1 commit 85e1f9b
Show file tree
Hide file tree
Showing 12 changed files with 165 additions and 42 deletions.
10 changes: 7 additions & 3 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -118,19 +118,23 @@


### Geocoding settings
## Geocoding provider and key (google | osm). osm geocoding does not require a key
## Geocoding provider and key (poracle | google | osm). osm geocoding does not require a key
## Optionally a OSM_SERVER endpoint for local geocoding
# GEO_PROVIDER=
# GEO_KEY=
# OSM_SERVER=

## Provider of {{{staticMap}}} dts static map urls. (google | osm | mapbox). Please note 'osm' provider is a key from 'mapquest'
## Provider of {{{staticMap}}} dts static map urls. (poracle | google | osm | mapbox). Please note 'osm' provider is a key from 'mapquest'
# STATIC_PROVIDER=
# STATIC_KEY=

## Static map dimensions
# MAP_WIDTH=
# MAP_HEIGHT=
# MAP_ZOOM=
# MAP_TYPE=

## "MAP_TYPE" should be "klokantech-basic" for static provider "poracle", "roadmap" for google static maps
## You can also customize the sprites width and height added to the image (imgURL source used)
# MAP_TYPE=
# SPRITE_WIDTH=
# SPRITE_HEIGHT=
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,5 @@ build
npm-debug.log
.DS_Store
.idea/*
.nuxt/*
.nuxt/*
.cache/*
8 changes: 8 additions & 0 deletions config/custom-environment-variables.json
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,14 @@
"__name": "MAP_HEIGHT",
"__format": "json"
},
"spriteHeight": {
"__name": "SPRITE_WIDTH",
"__format": "json"
},
"spriteWidth": {
"__name": "SPRITE_HEIGHT",
"__format": "json"
},
"zoom": {
"__name": "MAP_ZOOM",
"__format": "json"
Expand Down
13 changes: 8 additions & 5 deletions config/default.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,15 +29,18 @@
},

"geocoding": {
"provider": "OSM",
"staticProvider": "OSM",
"provider": "poracle",
"staticProvider": "poracle",
"osmServer":"http://nominatim.openstreetmap.org",
"geocodingKey":["Your Google Geocoding Key if you Use google as provider"],
"staticKey":["Your MapQuest or Google Key"],
"width": 250,
"height": 175,
"width": 320,
"height": 200,
"zoom": 15,
"type": "roadmap",
"spriteHeight": 20,
"spriteWidth": 20,
"scale": 2,
"type": "klokantech-basic",
"tileserver": "http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
"geofence": "../../config/geofence.json"
},
Expand Down
18 changes: 18 additions & 0 deletions config/examples/dts.json.example
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@
"description": "IV:{{iv}}%. end: {{time}}, time left: {{tthm}}m {{tths}}s {{flagemoji}} {{lat}}, {{lon}} {{addr}} \n quick: {{move1}}, charge {{move2}} \n{{{emojistring}}} [Google Maps]({{{mapurl}}}) [Apple Maps]({{{applemap}}})",
"thumbnail": {
"url": "{{{imgurl}}}"
},
"image":{
"url": "{{{staticmap}}}"
}
}
},
Expand Down Expand Up @@ -77,6 +80,9 @@
"thumbnail": {
"url": "{{{imgurl}}}"
},
"image":{
"url": "{{{staticmap}}}"
}
"description":"#{{id}} {{name}} end: {{time}}, \ntime left: {{tthm}}m {{tths}}s {{flagemoji}} {{lat}}, {{lon}} {{addr}} \n{{{emojistring}}} [Google Maps]({{{mapurl}}}) [Apple Maps]({{{applemap}}})"

}
Expand Down Expand Up @@ -138,6 +144,9 @@
"thumbnail": {
"url": "{{{imgurl}}}"
},
"image":{
"url": "{{{staticmap}}}"
}
"author": {
"name": "{{name}} lvl{{level}} end: {{time}}, {{tthm}}m {{tths}}s",
"icon_url": "{{{detailsurl}}}"
Expand Down Expand Up @@ -205,6 +214,9 @@
"thumbnail": {
"url": "{{{detailsurl}}}"
},
"image":{
"url": "{{{staticmap}}}"
}
"author": {
"name": "{{name}} lvl{{level}} end: {{time}}, {{tthm}}m {{tths}}s",
"icon_url": "{{{imgurl}}}"
Expand Down Expand Up @@ -296,6 +308,9 @@
"thumbnail": {
"url": "{{{url}}}"
},
"image":{
"url": "{{{staticmap}}}"
}
"image": {
"url": "{{{imgurl}}}"
}
Expand Down Expand Up @@ -329,6 +344,9 @@
"author": {
"name": "end: {{time}} in {{tthm}}m {{tths}}s",
"icon_url": "{{{imgurl}}}"
},
"image":{
"url": "{{{staticmap}}}"
}
}
},
Expand Down
14 changes: 13 additions & 1 deletion config/examples/questdts.json.example
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,9 @@
"22": "Team leader",
"23": "Another player",
"24": "Location",
"25": "Distance"
"25": "Distance",
"26": "Pokemon Alignment(s): {{alignments}}",
"27": "Invasion Category(s): {{categories}}"
},

"throwType": {
Expand All @@ -77,6 +79,16 @@
"12": "Excellent"
},

"alignments": {
"1": "Shadow",
"2": "Purified"
}

"categories": {
"1": "team leader",
"2": "grunt"
}

"rewardItems": {
"1": "Poke Ball",
"2": "Great Ball",
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "poraclejs",
"version": "3.14.25",
"version": "3.15.25",
"description": "Webhook processing and personalised alarms",
"main": "src/app.js",
"repository": {
Expand Down
11 changes: 10 additions & 1 deletion src/controllers/controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,13 @@ class Controller {

getGeocoder() {
switch (config.geocoding.provider.toLowerCase()) {
case 'poracle': {
return NodeGeocoder({
provider: 'openstreetmap',
osmServer: 'https://geocoding.poracle.world/nominatim/',
formatterPattern: config.locale.addressformat,
})
}
case 'google': {
return NodeGeocoder({
provider: 'google',
Expand Down Expand Up @@ -125,7 +132,9 @@ class Controller {
resolve(res)
})
.catch((err) => {
log.error(`GetAddress failed with error: ${err}`)
res.countryCode = 'EE'
log.error('GetAddress failed with error', err)
resolve(res)
})
}
else {
Expand Down
19 changes: 18 additions & 1 deletion src/controllers/invasion.js
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,10 @@ class Incident extends Controller {
data.staticmap = `https://maps.googleapis.com/maps/api/staticmap?center=${data.latitude},${data.longitude}&markers=color:red|${data.latitude},${data.longitude}&maptype=${config.geocoding.type}&zoom=${config.geocoding.zoom}&size=${config.geocoding.width}x${config.geocoding.height}&key=${_.sample(config.geocoding.staticKey)}`
break
}
case 'poracle': {
data.staticmap = `https://tiles.poracle.world/static/${config.geocoding.type}/${+data.latitude.toFixed(5)}/${+data.longitude.toFixed(5)}/${config.geocoding.zoom}/${config.geocoding.width}/${config.geocoding.height}/${config.geocoding.scale}/png`
break
}
case 'osm': {
data.staticmap = `https://www.mapquestapi.com/staticmap/v5/map?locations=${data.latitude},${data.longitude}&size=${config.geocoding.width},${config.geocoding.height}&defaultMarker=marker-md-3B5998-22407F&zoom=${config.geocoding.zoom}&key=${_.sample(config.geocoding.staticKey)}`
break
Expand Down Expand Up @@ -203,7 +207,20 @@ class Incident extends Controller {
}
this.getAddress({ lat: data.latitude.toString().substring(0, 8), lon: data.longitude.toString().substring(0, 8) }).then((geoResult) => {
const jobs = []

data.staticSprite = encodeURI(JSON.stringify([
{
url: data.url,
height: config.geocoding.spriteHeight,
width: config.geocoding.spriteWidth,
x_offset: 0,
y_offset: 0,
latitude: +data.latitude.toFixed(5),
longitude: +data.longitude.toFixed(5),
},
]))
if (config.geocoding.staticProvider === 'poracle') {
data.staticmap = `${data.staticmap}?markers=${data.staticSprite}`
}

whoCares.forEach((cares) => {
const alarmId = this.uuid
Expand Down
25 changes: 22 additions & 3 deletions src/controllers/monster.js
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,10 @@ class Monster extends Controller {
data.staticmap = `https://maps.googleapis.com/maps/api/staticmap?center=${data.latitude},${data.longitude}&markers=color:red|${data.latitude},${data.longitude}&maptype=${config.geocoding.type}&zoom=${config.geocoding.zoom}&size=${config.geocoding.width}x${config.geocoding.height}&key=${_.sample(config.geocoding.staticKey)}`
break
}
case 'poracle': {
data.staticmap = `https://tiles.poracle.world/static/${config.geocoding.type}/${+data.latitude.toFixed(5)}/${+data.longitude.toFixed(5)}/${config.geocoding.zoom}/${config.geocoding.width}/${config.geocoding.height}/${config.geocoding.scale}/png`
break
}
case 'osm': {
data.staticmap = `https://www.mapquestapi.com/staticmap/v5/map?locations=${data.latitude},${data.longitude}&size=${config.geocoding.width},${config.geocoding.height}&defaultMarker=marker-md-3B5998-22407F&zoom=${config.geocoding.zoom}&key=${_.sample(config.geocoding.staticKey)}`
break
Expand Down Expand Up @@ -156,8 +160,9 @@ class Monster extends Controller {
monsterData[data.pokemon_id].types.forEach((type) => {
e.push(emojiData.type[type])
})
} else {
log.warning(`Was unable to pull monster, the data I have is:`, data)
}
else {
log.warning('Was unable to pull monster, the data I have is:', data)
}
data.emoji = e
data.emojiString = e.join('')
Expand Down Expand Up @@ -192,6 +197,20 @@ class Monster extends Controller {
}
this.getAddress({ lat: data.latitude.toString().substring(0, 8), lon: data.longitude.toString().substring(0, 8) }).then((geoResult) => {

data.staticSprite = encodeURI(JSON.stringify([
{
url: data.imgurl,
height: config.geocoding.spriteHeight,
width: config.geocoding.spriteWidth,
x_offset: 0,
y_offset: 0,
latitude: +data.latitude.toFixed(5),
longitude: +data.longitude.toFixed(5),
},
]))
if (config.geocoding.staticProvider === 'poracle') {
data.staticmap = `${data.staticmap}?markers=${data.staticSprite}`
}
const jobs = []
whocares.forEach((cares) => {
const alarmId = this.uuid
Expand All @@ -218,7 +237,7 @@ class Monster extends Controller {
atk: data.individual_attack,
def: data.individual_defense,
sta: data.individual_stamina,
imgurl: data.imgurl.toLowerCase(),
imgurl: data.imgurl,
pokemoji: emojiData.pokemon[data.pokemon_id],
areas: data.matched.map((area) => area.replace(/'/gi, '').replace(/ /gi, '-')).join(', '),

Expand Down
47 changes: 23 additions & 24 deletions src/controllers/quest.js
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,10 @@ class Quest extends Controller {
data.staticmap = `https://maps.googleapis.com/maps/api/staticmap?center=${data.latitude},${data.longitude}&markers=color:red|${data.latitude},${data.longitude}&maptype=${config.geocoding.type}&zoom=${config.geocoding.zoom}&size=${config.geocoding.width}x${config.geocoding.height}&key=${_.sample(config.geocoding.staticKey)}`
break
}
case 'poracle': {
data.staticmap = `https://tiles.poracle.world/static/${config.geocoding.type}/${+data.latitude.toFixed(5)}/${+data.longitude.toFixed(5)}/${config.geocoding.zoom}/${config.geocoding.width}/${config.geocoding.height}/${config.geocoding.scale}/png`
break
}
case 'osm': {
data.staticmap = `https://www.mapquestapi.com/staticmap/v5/map?locations=${data.latitude},${data.longitude}&size=${config.geocoding.width},${config.geocoding.height}&defaultMarker=marker-md-3B5998-22407F&zoom=${config.geocoding.zoom}&key=${_.sample(config.geocoding.staticKey)}`
break
Expand Down Expand Up @@ -133,6 +137,22 @@ class Quest extends Controller {
if (data.rewardData.items[1]) data.rewardemoji = emojiData.items[data.rewardData.items[1]]
if (data.rewardData.monsters[1]) data.rewardemoji = emojiData.pokemon[data.rewardData.monsters[1]]
this.getAddress({ lat: data.latitude.toString().substring(0, 8), lon: data.longitude.toString().substring(0, 8) }).then((geoResult) => {

data.staticSprite = encodeURI(JSON.stringify([
{
url: data.imgurl,
height: config.geocoding.spriteHeight,
width: config.geocoding.spriteWidth,
x_offset: 0,
y_offset: 0,
latitude: +data.latitude.toFixed(5),
longitude: +data.longitude.toFixed(5),
},
]))
if (config.geocoding.staticProvider === 'poracle') {
data.staticmap = `${data.staticmap}?markers=${data.staticSprite}`
}

const view = _.extend(data, {
now: new Date(),
questType: data.questType,
Expand All @@ -142,7 +162,7 @@ class Quest extends Controller {
itemNames: itemnames.join(', '),
stardust: data.type === 3 ? 'stardust' : '',
rewardemoji: data.rewardemoji,
imgurl: data.imgurl.toLowerCase(),
imgurl: data.imgurl,
name: data.pokestop_name.replace(/\n/g, ' '),
url: data.pokestop_url,
minCp: data.rewardData.monsters[1] ? this.getCp(data.rewardData.monsters[1], 15, 10, 10, 10) : '',
Expand Down Expand Up @@ -283,16 +303,6 @@ class Quest extends Controller {
conditionString = conditionString.concat(cond)
break
}
case 3: {
const cond = this.qdts.questConditions['3']
conditionString = conditionString.concat(cond)
break
}
case 6: {
const cond = this.qdts.questConditions['6']
conditionString = conditionString.concat(cond)
break
}
case 7: {
const template = this.qdts.questConditions['7']
const cond = mustache.render(template, { levels: condition.info.raid_levels.join(', ') })
Expand All @@ -305,16 +315,6 @@ class Quest extends Controller {
conditionString = conditionString.concat(cond)
break
}
case 9: {
const cond = this.qdts.questConditions['9']
conditionString = conditionString.concat(cond)
break
}
case 10: {
const cond = this.qdts.questConditions['10']
conditionString = conditionString.concat(cond)
break
}
case 11: {
const template = this.qdts.questConditions['11']
const item = condition.info ? this.qdts.rewardItems[condition.info.item_id] : ''
Expand All @@ -328,12 +328,11 @@ class Quest extends Controller {
conditionString = conditionString.concat(cond)
break
}
case 15: {
const cond = this.qdts.questConditions['15']
default: {
const cond = this.qdts.questConditions[condition.type]
conditionString = conditionString.concat(cond)
break
}
default:
}
})
resolve(conditionString)
Expand Down
Loading

0 comments on commit 85e1f9b

Please sign in to comment.