Pergunta

Como posso acessar a API do 37 Signals Highrise com Python? Encontraram invólucros para PHP/Ruby, mas não Python. Estou escrevendo meu próprio agora, alguém tem conselhos sobre como superar o primeiro obstáculo de autenticação com Python?

Foi útil?

Solução

Eu escrevi (estou escrevendo, na verdade) um invólucro de API do Highrise para Python. Ele usa objetos Python para cada uma das classes Highrise e funciona muito como o 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()

Você pode obter a fonte do Github: https://github.com/feedmagnet/pyise

Ou instale -o de Pypi:

$ sudo pip install pyrise

Outras dicas

Eu estava apenas abordando esse problema quando tropecei em sua pergunta. Aqui está o que eu invadi até agora. Ainda não é bonito (ainda), mas funciona. Não conheço pycurl e depois de olhar por um tempo, voltei ao urllib2. O HighRise usa autenticação básica para que você não precise usar o CRO, você pode usar o URLLIB2. Você só precisa passar por todas as etapas do gerente do PWORD. A saída é um arquivo XML longo de todas as empresas ou das pessoas, dependendo da URL que você insere. Se você quisesse apenas uma pessoa, poderia fazer algo como 'http ....../pessoas/123.xml' ou 'http ....../people/123-fname-lname.xml' (como você vê no URL quando você realmente entra em contato no Highrise com o .xml adicionado).

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

Qualquer feedback ou sugestão sobre isto O código seria útil!

Ver aqui sobre como fazer autenticação básica. Também suportes iirc urllib http://user:password@example.com URLs.

Eu estava apenas olhando para o código PHP de um dos invólucros de api php E vejo que eles usam Curl; Então você já olhou para pycurl ??

Sobre a autenticação aqui está um exemplo com o qual você pode começar (não é testado) ...

  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)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top