2017-07-05 5 views
0

ローカルコンピュータからpython APIを使用してヒップハットにファイルを送信するにはどうすればよいですか?私は現在Hypchatを使用していますが、十分に文書化されていません。私は続行するかどうかはわかりませんPython:ヒップファームにファイルを送るには?

import hypchat 

hc = hypchat.HypChat("myKey") 

room = hc.get_room('bigRoom') 

はここで、これまでに私のコードです。私はそのような this 1のような他の方法を試してみましたが、私はエラーを取得しておいてください。

[ERROR] HipChat file failed: '405 Client Error: Method Not Allowed for url: https://api.hipchat.com/v2/room/bigRoom/share/file' 
+0

疑問な質問ですが、Pythonを使わずにこのタスクを実行できますか?そうでない場合は、権限の問題になる可能性があります。必要な認可トークンを指定しましたか? – MattR

+0

こんにちは、はい、私はPythonなしでそれを実行することができます。 – user1367204

答えて

0

このコードは、私がhipchat部屋に任意のファイルを送信することができます:

# do this: 
#  pip install requests_toolbelt 

from os    import path 
from sys    import exit, stderr 
from requests   import post 
from requests_toolbelt import MultipartEncoder 


class MultipartRelatedEncoder(MultipartEncoder): 
    """A multipart/related encoder""" 
    @property 
    def content_type(self): 
     return str('multipart/related; boundary={0}'.format(self.boundary_value)) 

    def _iter_fields(self): 
     # change content-disposition from form-data to attachment 
     for field in super(MultipartRelatedEncoder, self)._iter_fields(): 
      content_type = field.headers['Content-Type'] 
      field.make_multipart(content_disposition = 'attachment', 
           content_type  = content_type) 
      yield field 




def hipchat_file(token, room, filepath, host='api.hipchat.com'): 

    if not path.isfile(filepath): 
     raise ValueError("File '{0}' does not exist".format(filepath)) 


    url      = "https://{0}/v2/room/{1}/share/file".format(host, room) 
    headers     = {'Content-type': 'multipart/related; boundary=boundary123456'} 
    headers['Authorization'] = "Bearer " + token 



    m = MultipartRelatedEncoder(fields={'metadata' : (None, '', 'application/json; charset=UTF-8'), 
             'file'  : (path.basename(filepath), open(filepath, 'rb'), 'text/csv')}) 

    headers['Content-type'] = m.content_type 

    r = post(url, data=m, headers=headers) 

if __name__ == '__main__: 

    my_token = <my token> 
    my_room = <room name>  
    my_file = <filepath> 

    try: 
     hipchat_file(my_token, my_room, my_file) 
    except Exception as e: 
     msg = "[ERROR] HipChat file failed: '{0}'".format(e) 
     print(msg, file=stderr) 
     exit(1) 

シャウト@Martijnピータースに出

関連する問題