Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Haskell wrapper for the XING API
Haskell Makefile
Branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
demos
lib/Web
tests
.ghci
.gitignore
.project-settings.yml
.travis.yml
Dockerfile
LICENSE
Makefile
README.markdown
Setup.hs
xing-api.cabal

README.markdown

xing-api

Build Status

This Haskell library is a wrapper for the XING API.

It's currently under development and is not considered stable. This library is a private project and isn't associated with XING AG.

Usage

To use this minimal working example you'll need to get a consumer key and secret from the XING developer site.

{-# LANGUAGE OverloadedStrings #-}

import Web.XING
import qualified Data.ByteString.Char8 as BS

oauthConfig :: OAuth
oauthConfig = consumer "YOUR_CONSUMER_KEY" "YOUR_CONSUMER_SECRET"

main :: IO ()
main = withManager $ \manager -> do
  (accessToken, _) <- handshake manager
  idCard <- getIdCard oauthConfig manager accessToken
  liftIO $ putStrLn $ show idCard
  where
    handshake manager = do
      (requestToken, url) <- getRequestToken oauthConfig manager
      verifier <- liftIO $ do
        BS.putStrLn url
        BS.putStr "PIN: "
        BS.getLine
      getAccessToken requestToken verifier oauthConfig manager

GHCI session

If you want to test this library using GHCI, you can use this snippet as a starting point.

$ ghci -XOverloadedStrings
:module +Network.HTTP.Conduit
manager <- newManager def

:module +Web.XING
let oauth = consumer "CONSUMER_KEY" "CONSUMER_SECRET"

:module +Control.Monad.Trans.Resource
(requestToken, url) <- runResourceT (getRequestToken oauth manager)
url

(accessToken, userId) <- runResourceT (getAccessToken requestToken "THE_PIN_YOU_GOT_FROM_XING" oauth manager)
userId

Development environment

The simplest way to setup a development environment is to use Docker.

docker build -t xing-api-haskell .

You can then bind your local git repository as a volume in Docker:

docker run -i -t --rm -v /etc/ssl/certs:/etc/ssl/certs -v $PWD:/opt/app xing-api-haskell ghci

I might be useful to reuse the CA store from your local maschine, because the container does not contain any CAs.

To test a simple interaction with the API, you can copy and paste the following snippet into the ghci session:

withManager $ \manager -> getRequestToken (consumer "YOUR_CONSUMER_KEY" "YOUR_CONSUMER_SECRET") manager

This repository includes several demo programs. To use them, you have to obtain an API consumer key by registering your application at the XING developer portal. Put the consumer key and secret in the demos/Config.hs file (the test consumer key is enough). The Config.hs.template file is recommended to be used as a template.

cp Config.hs.template Config.hs
Something went wrong with that request. Please try again.