Package Exports
- sip2-async
- sip2-async/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (sip2-async) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
SIP2 Async
Promise-based SIP2 client for Node.
This is based on the node-sip2 package.
Installation
npm install sip2-async
or
yarn add sip2-async
Example Usage
Example usage for getting Item Information:
import SIP2 from 'sip2-async' // set "type": "module" in the package.json
const sipUser = ''
const sipPass = ''
const sipInst = ''
const itemId = ''
// Default options
const options = {
host: 'localhost',
port: 6001,
timezoneOffset: '+0000', // set to server timezone, useful if logs need to be saved
dueDateFormat: 'YYYYMMDD', // format returned by the server
terminator: 'CR', // response is empty if set incorrectly, use 'CRLF' for Koha
verbose: false, // set to true to get all the fields in response
debug: false // set to true to get request and response messages in 'debugData{}'
}
const socket = new SIP2.Client(options)
await socket.connect()
// Login
const loginRequest = new SIP2.LoginRequest(sipUser, sipPass, sipInst)
loginRequest.sequence = 1 // optional, default: 1
const loginResponse = await socket.send(loginRequest.getMessage())
// Item Information
if (!loginResponse.ok) {
console.log('SIP2 login failed')
} else {
const itemRequest = new SIP2.ItemInformationRequest(itemId)
itemRequest.sequence = 2 // optional, default: 2
itemRequest.institutionId = sipInst
const itemResponse = await socket.send(itemRequest.getMessage())
console.log(itemResponse)
}
socket.close()
Motivation
Initial attempts to modify the node-sip2
package was just to Promisify the responses.
However, there was a need to allow ESM import so that it could be easily modified
within the same project. Then many other changes were necessitated by the editor/linter
for syntax and code re-use.
Features
- Promise (async/await) responses instead of callbacks.
- Response data structure simplified (titleIdentifier -> title, patronIdentifier -> patronId, etc.).
- Some fields are grouped such as
summaryCount{}
andblocks[]
in PatronInformation. - More often than not the empty fields are ignored in response payload.
- Choose suitable terminator (CR|CRLF) as per server implementation. Koha defaults to CRLF.
- Parse transaction date as per the timezone offset in the Client options.
- Use the
verbose
option to get all the fields in response payload. Default:false
. - Replaced
dateformat
withdate-and-time
since it can do both parsing and formatting. - Convert the dueDate to Date object using the
date-and-time
package. Koha responds in YYYYMMDD...
Tests
yarn install
yarn test