Доступ к API Highrise с Python? - PullRequest
       19

Доступ к API Highrise с Python?

0 голосов
/ 01 ноября 2010

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

Ответы [ 4 ]

4 голосов
/ 06 сентября 2011

Я написал (действительно пишу) обертку Highrise API для Python.Он использует объекты Python для каждого из классов Highrise и работает так же, как 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
1 голос
/ 14 июня 2011

Я просто решил эту проблему, когда наткнулся на ваш вопрос. Вот что я взломал вместе до сих пор. Это не красиво (пока), но это работает. Я не знаю 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

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

0 голосов
/ 01 ноября 2010

См. здесь о том, как выполнить базовую аутентификацию.Также IIRC urllib поддерживает http://user:password@example.com URL.

0 голосов
/ 01 ноября 2010

Я только что посмотрел код php одного из php API-оболочек и вижу, что они используют curl;Итак, вы посмотрели 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)
...