commit b0dfe1194fadf7cd376eb8d032518ecb3aa7a544
parent 19a37ef0a182db03fa86d6def174f661ae097964
Author: Nikolay Korotkiy <sikmir@gmail.com>
Date: Sun, 24 Mar 2019 01:45:49 +0300
[tracks] load tracks from etomesto url (#238)
Diffstat:
3 files changed, 41 insertions(+), 1 deletion(-)
diff --git a/src/lib/leaflet.control.track-list/lib/services/etomesto.js b/src/lib/leaflet.control.track-list/lib/services/etomesto.js
@@ -0,0 +1,38 @@
+import urlViaCorsProxy from 'lib/CORSProxy';
+import BaseService from './baseService';
+import parseGpx from '../parsers/gpx';
+
+class Etomesto extends BaseService {
+ urlRe = /^https?:\/\/www\.etomesto\.ru\/track([a-z0-9]+)/;
+
+ getTrackId() {
+ const m = this.urlRe.exec(this.origUrl);
+ return m[1];
+ }
+
+ isOurUrl() {
+ return this.urlRe.test(this.origUrl);
+ }
+
+ requestOptions() {
+ const trackId = this.getTrackId();
+ return [{
+ url: urlViaCorsProxy(`http://www.etomesto.ru/save/${trackId}.gpx`),
+ options: {
+ responseType: 'binarystring',
+ isResponseSuccess: (xhr) => (
+ xhr.status === 200 &&
+ !xhr.responseBinaryText.startsWith('ERROR'))
+ }
+ }]
+ }
+
+ parseResponse(responses) {
+ const trackId = this.getTrackId();
+ const response = responses[0];
+ const name = `Etomesto track ${trackId}`;
+ return parseGpx(response.responseBinaryText, name, true) || [{name: name, error: 'UNSUPPORTED'}];
+ }
+}
+
+export default Etomesto;
diff --git a/src/lib/leaflet.control.track-list/lib/services/index.js b/src/lib/leaflet.control.track-list/lib/services/index.js
@@ -1,5 +1,6 @@
import SimpleService from './simpleService'
import Endomondo from './endomondo';
+import Etomesto from './etomesto';
import Gpsies from './gpsies';
import Gpslib from './gpslib';
import Osm from './osm';
@@ -14,6 +15,7 @@ export default [
NakarteTrack,
NakarteUrl,
Endomondo,
+ Etomesto,
Gpsies,
Gpslib,
Osm,
diff --git a/src/lib/leaflet.control.track-list/track-list.js b/src/lib/leaflet.control.track-list/track-list.js
@@ -74,7 +74,7 @@ L.Control.TrackList = L.Control.extend({
<div class="leaflet-control-content">
<div class="header">
<div class="hint"
- title="gpx kml Ozi zip YandexMaps GPSies Strava GPSLib Endomondo Movescount OSM Tracedetrail">
+ title="gpx kml Ozi zip YandexMaps GPSies Strava GPSLib Endomondo Etomesto Movescount OSM Tracedetrail">
gpx kml Ozi zip YandexMaps GPSies Strava
<span class="formats-hint-more">…</span>
</div>