Import contacts

This is an example shell script which allows importing contacts from a local file into a certain Open-Xchange contacts folder.

The folderid is a bit tricky to find out. One way is to discover the HTTP API requests from the UI for example by using Firebug.

#!/bin/bash

SERVER=http://your.ox.server
USER=user@context
PASSWORD=userspw

USAGE () {
        echo "usage $0 filename folderid"
        exit 1
}

test "$1" = "--help" && USAGE
test "$#" = "2" || USAGE

IMP_FILE="$1"
FOLDER="$2"

CURL='curl -b cookies -c cookies -H Expect: -s -L --location-trusted -k'

SESSION=`$CURL --data "name=$USER&password=$PASSWORD" "$SERVER/ajax/login?action=login" \
        |sed 's/^.*session\":\"\([0-9A-Fa-f]*\)\".*$/\1/'`
echo $SESSION | grep "error" && echo "got no session, login failed" && exit 1

echo
FOLDER_NAME=`$CURL "$SERVER/ajax/folders?action=get&session=$SESSION&id=$FOLDER" | sed ' s/^.*title":"//' | sed 's/".*$//'`
echo "going to clear Folder $FOLDER name: $FOLDER_NAME. Proceed (y/n)?"

read a
if [ "$a" = y -o "$a" = Y ]
then
        echo clearing Folder: $FOLDER
        DELETEREQ=$($CURL -X PUT  --data-binary "[\"$FOLDER\"]" --header "Content-Type: text/javascript" "$SERVER/ajax/folders?action=clear&session=$SESSION")
        if [ ! "$DELETEREQ" = '{"data":[]}' ]
        then
                echo "could not clear folder, error:"
                echo $DELETEREQ
                echo aborted
                exit 1
        else
                echo
                echo importing file $IMP_FILE to Folder $FOLDER
                $CURL -X POST --form cs_import_type=CSV -F "file=@$IMP_FILE;type=text/csv;name=file" "$SERVER/ajax/import?action=CSV&session=$SESSION&folder=$FOLDER"
                echo
                echo done
        fi
else
        echo "aborted"
        exit 1
fi
exit 0