renvoie un tuple (str, str, str, rs)
            un siren
            une categorie d'entreprise
            une annee
            une raison sociale
        param: un siren (str)

        :Example:

        >>> get('444465736')
        (u'2013', u'444465736', u'entreprise de taille interm\xe9diaire', u'NOVACAP')
        >>> get('this intended to fail')

def get(siren):
    '''
        renvoie un tuple (str, str, str, rs)
            un siren
            une categorie d'entreprise
            une annee
            une raison sociale
        param: un siren (str)

        :Example:

        >>> get('444465736')
        (u'2013', u'444465736', u'entreprise de taille interm\xe9diaire', u'NOVACAP')
        >>> get('this intended to fail')

    '''

    # format siren
    siren = addinterval(siren, ' ', 3)
    # send request
    res = requests.get(api.format(siren))

    try:
        # if request is ok
        assert res.status_code == 200
        # check if ok
        soup = BeautifulSoup(res.text, 'html.parser')
        colcentre = soup.find_all('div', id='col-centre')[0]
        l1, l2, l3 = colcentre.find_all('p')[1:4]

        if 'existe plus' in l1.text:
            return parse_obsolete(l1, l3)

        elif 'existe pas' in l1.text:
            return parse_invalid()

        elif 'hors champ' in l2.text:
            return parse_nocat()
        
        elif 'pas pu attribuer' in l1.text:
            return parse_new(l1, l2, l3)
        
        else:
            return parse_ok(l1, l3)

    except AssertionError:
        print 'site inaccessible !'