Skip to content

Instantly share code, notes, and snippets.

@jweisman
jweisman / webhook-listener.js
Created July 14, 2019 18:31
Node.js listener for Alma webhooks
const express = require('express')
const bodyParser = require('body-parser');
const crypto = require('crypto');
const app = express()
const port = 8000
const webhook_secret = process.env.WEBHOOK_SECRET || '1234'
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
@jweisman
jweisman / AlmaValidateFields.groovy
Last active January 19, 2023 07:20
Script to validate the existence of several custom fields on transition using the ScriptRunner plugin for Jira.
import com.opensymphony.workflow.InvalidInputException
import com.atlassian.jira.ComponentManager
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.CustomFieldManager
import com.atlassian.jira.issue.fields.CustomField
def customFieldManager = ComponentManager.getInstance().getCustomFieldManager()
def fields = []
// For Alma issues, if issue is fixed, make all sorts of validations
@jweisman
jweisman / 1.xml
Created April 7, 2022 12:16
MARCXML Records
This file has been truncated, but you can view the full file.
<?xml version="1.0" encoding="UTF-8"?>
<collection>
<record>
<leader>
12288cam 22006611i 4500
</leader>
<controlfield tag="001">
9983540000561
</controlfield>
<controlfield tag="005">
@jweisman
jweisman / curl.sh
Last active March 10, 2022 19:43
Alma API Error Handling
#!/bin/bash
URL=https://api-na.hosted.exlibrisgroup.com/almaws/v1/users/fdsa
curl ${URL} -vs -H 'accept: application/json' -H "authorization: apikey $ALMA_APIKEY" | jq
@jweisman
jweisman / cloud-app-testing.ts
Last active November 16, 2021 13:19
Tests for Ex Libris Cloud App Scaffolding
import { ComponentFixture } from "@angular/core/testing";
import { CloudAppRestService, EntityType, PageInfo } from "@exlibris/exl-cloudapp-angular-lib";
import { of, Subject } from "rxjs";
import { map } from "rxjs/operators";
const PAGE_INFO: PageInfo = {
entities: [{
"id": "23140519980000561",
"type": EntityType.ITEM,
"description": "AUT1469",
@jweisman
jweisman / chart.html
Last active September 2, 2021 05:08
Google Chart from Analytics API
<html>
<head>
<script type="text/javascript" src="https://www.google.com/jsapi?autoload={'modules':[{'name':'visualization','version':'1.1','packages':['corechart']}]}"></script>
<script>
google.setOnLoadCallback(drawChart);
function drawChart() {
xmlhttp=new XMLHttpRequest();
xmlhttp.open("GET","https://api-na.hosted.exlibrisgroup.com/almaws/v1/analytics/reports?path=%2Fshared%2FAlma%2FFulfillment%2FReports%2FGeneral%20Circulation%20Statistics&apikey=[[APIKEY]]",false);
xmlhttp.send();
@jweisman
jweisman / index.php
Last active August 10, 2021 12:18
Ingest Form for Alma Digital
<?php
function alma_get($url) {
$opts = [
"http" => [
"header" => "Accept: application/json\r\n" .
"Authorization: apikey " . getenv('ALMA_APIKEY') . "\r\n"
]
];
$context = stream_context_create($opts);
$json = file_get_contents($url, false, $context);
@jweisman
jweisman / custom.js
Last active August 4, 2021 20:20
Primo Customization - Graph DB
var app = angular.module('viewCustom', ['angularLoad']);
/* Other Works */
app.controller('OtherWorksComponentController', ['$http', function ($http) {
var vm = this;
const mms_id = vm.parentCtrl.item.pnx.control.sourcerecordid && vm.parentCtrl.item.pnx.control.sourcerecordid[0] || '';
if (mms_id) {
const data = {
"statements": [{
"statement": `MATCH
@jweisman
jweisman / SwaggerClientTest.java
Last active July 21, 2021 15:51
Swagger Codegen with Alma APIs
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
@jweisman
jweisman / index.js
Created May 3, 2021 09:49
Alma BIB API - Working with XML
var alma = require ('almarestapi-lib');
var xpath = require('xpath');
var dom = require('xmldom').DOMParser
const XPATH_TITLE = '/record/datafield[@tag="245"]/subfield[@code="a"]';
const XPATH_AUTHOR = '/record/datafield[@tag="100"]/subfield[@code="a"]';
const MMS_ID = '99469654400561';
let title, author, bib, doc;
( async () => {