@dotrino/geo 0.9.0 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/src/index.js +14 -18
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dotrino/geo",
3
- "version": "0.9.0",
3
+ "version": "0.9.1",
4
4
  "description": "Dotrino geo index client (geo.dotrino.com): vault-signed georeferenced pins, radius queries (PostGIS)",
5
5
  "type": "module",
6
6
  "main": "src/index.js",
package/src/index.js CHANGED
@@ -83,18 +83,7 @@ export function createGeoClient ({ signData, getPublicKeyJwk, baseUrl = DEFAULT_
83
83
  }
84
84
  const cleanTags = normalizeTags(tags)
85
85
  if (cleanTags.length) data.tags = cleanTags
86
- const firma = await signData(data)
87
- // Un vault viejo devuelve solo la firma; uno nuevo, el paquete con quién firmó y la
88
- // cadena que prueba que ese firmante habla por esta identidad.
89
- const sobre = typeof firma === 'string'
90
- ? { data, signature: firma }
91
- : { data, signature: firma.signature, ...(firma.publickey ? { signer: firma.publickey } : {}), ...(firma.chain?.length ? { chain: firma.chain } : {}) }
92
- const res = await doFetch(`${base}/pins`, {
93
- method: 'PUT',
94
- headers: { 'content-type': 'application/json' },
95
- body: JSON.stringify(sobre)
96
- })
97
- return handle(res)
86
+ return sendSigned('PUT', data)
98
87
  }
99
88
 
100
89
  /**
@@ -133,14 +122,21 @@ export function createGeoClient ({ signData, getPublicKeyJwk, baseUrl = DEFAULT_
133
122
  // chain}` desde hace versiones, y aquí se metía ese objeto donde el servidor espera la
134
123
  // firma en base64: retirar un pin antes de que expirara respondía 401 siempre. Y sin la
135
124
  // cadena tampoco se podía retirar el pin desde un aparato que no fuera el de la llave.
136
- const firma = await signData(data)
137
- const sobre = typeof firma === 'string'
138
- ? { data, signature: firma }
139
- : { data, signature: firma.signature, ...(firma.publickey ? { signer: firma.publickey } : {}), ...(firma.chain?.length ? { chain: firma.chain } : {}) }
125
+ return sendSigned('DELETE', data)
126
+ }
127
+
128
+ /** Firma `data` y lo manda a /pins: el mismo sobre para publicar y para retirar. */
129
+ async function sendSigned (method, data) {
130
+ const sig = await signData(data)
131
+ // Un vault viejo devuelve solo la firma; uno nuevo, el paquete con quién firmó y la
132
+ // cadena que prueba que ese firmante habla por esta identidad.
133
+ const envelope = typeof sig === 'string'
134
+ ? { data, signature: sig }
135
+ : { data, signature: sig.signature, ...(sig.publickey ? { signer: sig.publickey } : {}), ...(sig.chain?.length ? { chain: sig.chain } : {}) }
140
136
  const res = await doFetch(`${base}/pins`, {
141
- method: 'DELETE',
137
+ method,
142
138
  headers: { 'content-type': 'application/json' },
143
- body: JSON.stringify(sobre)
139
+ body: JSON.stringify(envelope)
144
140
  })
145
141
  return handle(res)
146
142
  }