Zugang Highrise API mit Python?
Frage
Wie kann ich auf 37 Signale Highrise API mit Python? Gefunden Wrapper für PHP / Ruby aber nicht Python. Ich bin mein eigenes jetzt schreiben, jemand Rat haben auf die erste Hürde der Authentifizierung mit Python immer über?
Lösung
Ich schrieb (am Schreiben, wirklich) einen Highrise API-Wrapper für Python. Es nutzt Python für jede der Highrise Klassen-Objekte und eine Menge, wie die Django ORM arbeiten:
>>> 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()
Sie können die Quelle von GitHub erhalten: https://github.com/feedmagnet/pyrise
oder installieren Sie es von PyPI:
$ sudo pip install pyrise
Andere Tipps
Ich war die Bekämpfung nur dieses Problem, wenn ich auf Ihre Frage gestolpert. Hier ist, was ich bisher gemeinsam gehackt haben. Es ist nicht schön (noch) nicht, aber es funktioniert. Ich weiß nicht, pycurl und nach einem Blick auf mich, während ich ging zurück zu urllib2. Highrise verwendet Standardauthentifizierung, so dass Sie nicht zu verwenden ROTATION haben Sie können Sie verwenden urllib2. Sie müssen nur alle den PWORD-Manager Schritte durchlaufen. Die Ausgabe ist eine lange XML-Datei entweder alle Unternehmen oder die Menschen, je nachdem, welche URL einfügen. Wenn Sie nur eine Person wollte könnten Sie etwas tun, wie 'http ...... / people / 123.xml' oder 'http ...... / people / 123-fname-lname.xml' (wie Sie sehen, in der uRL, wenn Sie gehen tatsächlich zu einem Kontakt in highrise mit dem .xml hinzugefügt).
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
Jede Art von Feedback oder Vorschläge auf das Code wäre hilfreich!
Siehe hier , wie die Standardauthentifizierung zu tun. Auch IIRC urllib unterstützt http://user:password@example.com
URLs.
i war auf der Suche nur auf den PHP-Code von einem der PHP API-Wrapper , und ich sehe, dass sie curl verwenden; so ausgesehen haben Sie pycurl ??
über die Authentifizierung ist hier ein Beispiel, dass Sie mit beginnen können (es ist nicht getestet) ...
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)