[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/osm 8436c4b4c3 1/2: Add osm--get-json, specify process
From: |
ELPA Syncer |
Subject: |
[elpa] externals/osm 8436c4b4c3 1/2: Add osm--get-json, specify process encoding (Fix #6) |
Date: |
Sat, 19 Mar 2022 16:57:38 -0400 (EDT) |
branch: externals/osm
commit 8436c4b4c3e0e0a2bcd3d395687a286890cedb14
Author: Daniel Mendler <mail@daniel-mendler.de>
Commit: Daniel Mendler <mail@daniel-mendler.de>
Add osm--get-json, specify process encoding (Fix #6)
---
osm.el | 35 +++++++++++++++++------------------
1 file changed, 17 insertions(+), 18 deletions(-)
diff --git a/osm.el b/osm.el
index 8731fbd8eb..fc5eb6098a 100644
--- a/osm.el
+++ b/osm.el
@@ -1304,15 +1304,20 @@ Optionally specify a SERVER and a COMMENT."
(ignore-errors
(alist-get
'display_name
- (json-parse-string
- (shell-command-to-string
- (concat
- "curl " osm-curl-options " "
- (shell-quote-argument
- (format
"https://nominatim.openstreetmap.org/reverse?format=json&zoom=%s&lat=%s&lon=%s";
- (min 18 (max 3 osm--zoom)) lat lon))))
- :array-type 'list
- :object-type 'alist))))))
+ (osm--get-json
+ (format
"https://nominatim.openstreetmap.org/reverse?format=json&zoom=%s&lat=%s&lon=%s";
+ (min 18 (max 3 osm--zoom)) lat lon)))))))
+
+(defun osm--get-json (url)
+ "Get json from URL."
+ (json-parse-string
+ (let ((default-process-coding-system '(utf-8-unix . utf-8-unix)))
+ (shell-command-to-string
+ (concat
+ "curl " osm-curl-options " "
+ (shell-quote-argument url))))
+ :array-type 'list
+ :object-type 'alist))
;;;###autoload
(defun osm-search (search &optional lucky)
@@ -1324,15 +1329,9 @@ If the prefix argument LUCKY is non-nil take the first
result and jump there."
nil nil nil 'osm--search-history)
current-prefix-arg))
;; TODO add search bounded to current viewbox, bounded=1, viewbox=x1,y1,x2,y2
- (let* ((json (json-parse-string
- (shell-command-to-string
- (concat
- "curl " osm-curl-options " "
- (shell-quote-argument
- (concat
"https://nominatim.openstreetmap.org/search?format=json&q=";
- (url-encode-url search)))))
- :array-type 'list
- :object-type 'alist))
+ (let* ((json (osm--get-json
+ (concat
"https://nominatim.openstreetmap.org/search?format=json&q=";
+ (url-encode-url search))))
(results (mapcar
(lambda (x)
(let ((lat (string-to-number (alist-get 'lat x)))