aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOscar Najera <hi@oscarnajera.com>2025-03-21 16:34:29 +0100
committerOscar Najera <hi@oscarnajera.com>2025-03-21 16:34:29 +0100
commit5c671a56a6c766b9647e8d1c81a666f2da64230e (patch)
tree07c07fd2cb1418d95bb186a1da96adf925013525
parentd66c6f6ed10c9d3c3fdb9e4ca2c5d9e974a9d8ff (diff)
downloaddotfiles-5c671a56a6c766b9647e8d1c81a666f2da64230e.tar.gz
dotfiles-5c671a56a6c766b9647e8d1c81a666f2da64230e.tar.bz2
dotfiles-5c671a56a6c766b9647e8d1c81a666f2da64230e.zip
delivery track refactor for dhlHEADmaster
-rw-r--r--elisp/delivery-track.el70
1 files changed, 33 insertions, 37 deletions
diff --git a/elisp/delivery-track.el b/elisp/delivery-track.el
index 809e1f2..e38c285 100644
--- a/elisp/delivery-track.el
+++ b/elisp/delivery-track.el
@@ -58,17 +58,25 @@
buffer
(funcall provider-parser (json-parse-buffer))))
-(defun delivery-track--dhl-de (track-id buffer callback)
- "Async request to API using TRACK-ID and process with CALLBACK.
-It writes into the org-node in BUFFER."
- (let* ((url-request-method "GET")
- (params `((piececode ,track-id)
- ("noRedirect" true)
- (language "en"))))
- (thread-first
- "https://www.dhl.de/int-verfolgen/data/search?"
- (concat (url-build-query-string params))
- (url-retrieve callback (list buffer)))))
+(defun delivery-track-entry--dhl (response)
+ "Parse DHL RESPONSE into standard delivery-track info for writer."
+ (let* ((shipment-info (seq-find
+ (lambda (item)
+ (eq t (gethash "hasCompleteDetails" item)))
+ (gethash "sendungen" response)))
+ (history (thread-last
+ shipment-info
+ (gethash "sendungsdetails")
+ (gethash "sendungsverlauf"))))
+ (list
+ (gethash "id" shipment-info)
+ (gethash "kurzStatus" history)
+ (thread-last
+ (gethash "events" history)
+ (seq-keep (lambda (event)
+ (when-let ((time (gethash "datum" event)))
+ (list time (gethash "status" event)))))
+ (reverse)))))
(defun delivery-track-entry--hermes (response)
"Parse hermes RESPONSE into standard delivery-track info for writer."
@@ -82,6 +90,19 @@ It writes into the org-node in BUFFER."
(list time (gethash "statusHistoryText" event)))))
(reverse))))
+(defun delivery-track--dhl-de (track-id)
+ "Async request to dhl API using TRACK-ID.
+Write update on the org-node in current buffer."
+ (let* ((url-request-method "GET")
+ (params `((piececode ,track-id)
+ ("noRedirect" true)
+ (language "en"))))
+ (thread-first
+ "https://www.dhl.de/int-verfolgen/data/search?"
+ (concat (url-build-query-string params))
+ (url-retrieve #'delivery-track--process-response
+ (list (current-buffer) #'delivery-track-entry--dhl)))))
+
(defun delivery-track--hermes-de (track-id)
"Async request to hermes API using TRACK-ID.
Write update on the org-node in current buffer."
@@ -94,31 +115,6 @@ Write update on the org-node in current buffer."
(url-retrieve #'delivery-track--process-response
(list (current-buffer) #'delivery-track-entry--hermes)))))
-
-(defun delivery-track-entry--dhl (_request-status buffer)
- "Parse response from DHL and write in in BUFFER."
- (goto-char url-http-end-of-headers)
- (let* ((shipment-info (thread-last
- (json-parse-buffer)
- (gethash "sendungen")
- (seq-find
- (lambda (item)
- (eq t (gethash "hasCompleteDetails" item))))))
- (history (thread-last
- shipment-info
- (gethash "sendungsdetails")
- (gethash "sendungsverlauf"))))
- (delivery-track-org-entry
- buffer
- (gethash "id" shipment-info)
- (gethash "kurzStatus" history)
- (thread-last
- (gethash "events" history)
- (seq-keep (lambda (event)
- (when-let ((time (gethash "datum" event)))
- (list time (gethash "status" event)))))
- (reverse)))))
-
(defun delivery-track-update (track-id provider)
"Update tracking information for TRACK-ID under PROVIDER.
Interactive defaults to current buffer's org-node id and provider properties."
@@ -126,7 +122,7 @@ Interactive defaults to current buffer's org-node id and provider properties."
(completing-read "Which service provider? "
'(dhl hermes) nil t (org-entry-get nil "provider"))))
(pcase provider
- ("dhl" (delivery-track--dhl-de track-id (current-buffer) #'delivery-track-entry--dhl))
+ ("dhl" (delivery-track--dhl-de track-id ))
("hermes" (delivery-track--hermes-de track-id))))