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?

War es hilfreich?

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)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top