Skip to content

Instantly share code, notes, and snippets.

@jweisman
jweisman / GetUser.java
Created April 30, 2020 11:57
Alma User API with a Swagger CodeGen Java client SDK
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 / invoices.py
Last active May 25, 2020 11:42
Alma Invoice Attachments API
import os, sys, requests, base64, re
import xml.etree.ElementTree as ET
NS = {'exl': 'http://com/exlibris/repository/acq/invoice/xmlbeans'}
URL = 'https://api-na.hosted.exlibrisgroup.com'
def process_invoice( invoice ):
id = invoice.find('exl:unique_identifier', NS).text
number_of_attachments = invoice.find('exl:number_of_attachments', NS)
if (number_of_attachments is None or int(number_of_attachments.text) > 0):
@jweisman
jweisman / Dockerfile
Last active March 29, 2020 19:29
Dockerfile to build dependencies for serverless-iiif in AWS Lambda
FROM lambci/lambda:build-nodejs12.x
RUN yum install -y \
https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm \
https://rpms.remirepo.net/enterprise/remi-release-7.rpm
RUN yum install -y \
ImageMagick-devel openjpeg-devel jasper-devel glib2-devel \
expat-devel libtiff-devel openslide-devel giflib-devel libpng-devel \
libjpeg-turbo-devel libgsf-devel poppler-glib librsvg2-devel libimagequant \
libgsf-devel libexif-devel wget nodejs python3 && \
@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 / ValidateSignature.java
Last active July 14, 2019 18:17
Validate Alma webhook signature in Java
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Base64;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
public class ValidateSignature {
public static String encode(String key, byte[] data) throws Exception {
@jweisman
jweisman / add_file.sh
Created May 2, 2019 17:39
Automating fulltext extraction in the Alma Digital Repository
#!/bin/sh
AWS_BUCKET="na-st01.ext.exlibrisgroup.com"
FILENAME=`basename "$1"`
FOLDER=$((1 + RANDOM % 32767))
if [ $# -lt 2 ]; then
echo "Usage: `basename $0` file-name representation-id institution [file-label]"
exit 0
@jweisman
jweisman / finance.sh
Created May 2, 2019 17:33
Automating Alma API-based integration with ERP
#!/bin/sh
IFS=$'\n' # break on newline only
echo "Getting invoices ready for payment"
invoices=`curl -s --fail -H "Authorization: apikey $ALMA_APIKEY" -H "Accept: application/json" "https://api-na.hosted.exlibrisgroup.com/almaws/v1/acq/invoices?invoice_workflow_status=Waiting%20to%20be%20Sent&view=brief" | jq -c '.invoice | .[]'`;
for id in $invoices; do
echo "Marking invoice $(echo $id | jq -r '.number') as sent to ERP"
curl -s -o /dev/null -X POST -H "Authorization: apikey $ALMA_APIKEY" -H 'Content-Type: application/json' -H 'Accept: application/json' -d '{}' "https://api-na.hosted.exlibrisgroup.com/almaws/v1/acq/invoices/$(echo $id | jq -r '.id')?op=mark_in_erp"
@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 / parallel.js
Last active January 16, 2019 15:21
Ex Libris Alma - Parallel API Calls
const { PerformanceObserver, performance } = require('perf_hooks');
const alma = require('almarestapi-lib');
const records = 10000;
const limit = 25;
const url = '/users?view=brief';
const arrayName = 'user';
var offset = 0, total = 0, processed = 0;
@jweisman
jweisman / Program.cs
Last active May 1, 2018 17:04
Refit for Alma APIs
using Newtonsoft.Json;
using Refit;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace refitalma
{
[Headers("Accept: application/json")]
public interface IAlmaApi