2010-11-01 1 views
0

Как я могу получить доступ к 37 сигналам API Highrise API с Python? Найденные обертки для PHP/Ruby, но не Python. Теперь я пишу свое собственное, у кого-нибудь есть советы по преодолению первого барьера аутентификации с помощью Python?Доступ к API Highrise API с Python?

ответ

4

Я написал (я пишу, действительно) оболочку API Highrise для Python. Он использует объекты Python для каждого из классов высотных и работать много, как Django ORM:

>>> from pyrise import * 
>>> Highrise.server('my-server') 
>>> Highrise.auth('api-key-goes-here') 
>>> p = Person() 
>>> p.first_name = 'Joe' 
>>> p.last_name = 'Schmoe' 
>>> p.save() 

Вы можете получить источник из GitHub: https://github.com/feedmagnet/pyrise

Или установить его с PyPI:

$ sudo pip install pyrise 
+0

pyrise - отличная оболочка API, хотя он полагается на httplib2, который использует устаревшие SSL-сертификаты * now * и по умолчанию будет ошибкой - вам нужно будет обновить файл httplib2 cacerts.txt с geotrust по адресу http://www.geotrust.com/resources/root_certificates/certificates/GeoTrust_Global_CA.c эр – Alvin

0

Я просто смотрел на php-код одного из php API wrappers, и я вижу, что они используют завиток; так вы посмотрели на pycurl ??

о проверке подлинности здесь пример, который вы можете начать с (это не проверено) ...

import pycurl 

    def on_receive(data): 
     # process your data here 
     pass 

    def connetion(url, token) 

     conn = pycurl.Curl() 

     # Set Token. 
     conn.setopt(pycurl.USERPWD, "%s:x" % (token,)) 
     # the format TOKEN:x i get it from the PHP wrapper because usually the 
     # format should be USER:PASSWD so here i think they just use a token as 
     # a USERname and they set the password to 'x'. 

     conn.setopt(pycurl.URL, url) 

     # Set the XML data to POST data. 
     conn.setopt(pycurl.POSTFIELDS, XML_DATA) 

     # Add SSL. 
     conn.setopt(pycurl.SSL_VERIFYPEER, 0) 
     conn.setopt(pycurl.SSL_VERIFYHOST, 0) 

     # Set function that will be called as soon as the data is received. 
     conn.setopt(pycurl.WRITEFUNCTION, on_receive) 

     # Perform the data transfer. 
     conn.perform() 

    if __name__ == '__main__': 
     connection("http://yourcompany.highrisehq.com", your_token) 
0

here Смотрите, как сделать обычную проверку подлинности. Также IIRC urllib поддерживает http://user:[email protected] URL.

1

Я просто занимался этой проблемой, когда я наткнулся на ваш вопрос. Вот что я взломал до сих пор. Его не очень (пока), но он работает. Я не знаю Pycurl, и, посмотрев на него некоторое время, я вернулся к urllib2. Highrise использует базовую аутентификацию, поэтому вам не нужно использовать CURL, вы можете использовать urllib2. Вам просто нужно пройти все шаги Pword Manager. Результатом является длинный XML-файл либо всех компаний, либо людей в зависимости от того, какой URL-адрес вы вставляете. Если вам нужен только один человек, вы можете сделать что-то вроде «http ....../people/123.xml» или «http ....../people/123-fname-lname.xml» (как вы видите в URL, когда вы действительно переходите к контакту в highrise с добавленным .xml).

import ullib2  

PEOPLEurl = 'http://yourcompany.highrisehq.com/people.xml' #get all the people 
# or 
COMPANYurl = 'http://yourcompany.highrisehq.com/company.xml' #get all companies 

token = '12345abcd' #your token 
password = 'X' 

passmanager = urllib2.HTTPPasswordMgrWithDefaultRealm() 
passmanager.add_password(None, PEOPLEurl, token, password) 
authhandler = urllib2.HTTPBasicAuthHandler(passmanager) 
opener = urllib2.build_opener(authhandler) 
urllib2.install_opener(opener) 
page = urllib2.urlopen(PEOPLEurl).read() 

print page #this will dump out all the people contacts in highrise 

Любые отзывы и предложения по этот код будет полезно!