Import contacts

Revision as of 08:13, 30 October 2015 by Diego.giron (talk | contribs) (Because of security reasons each login variation will reject requests containing the parameter "password" within the URL query (starting with 7.8.0). "SESSION" has been modify to remove "password" from the HTTP call)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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