Skip to content

Instantly share code, notes, and snippets.

@Halama
Last active July 12, 2017 07:22
Show Gist options
  • Save Halama/6006960 to your computer and use it in GitHub Desktop.
Save Halama/6006960 to your computer and use it in GitHub Desktop.
Keboola Storage API Python client example
import json
import os
import requests
class HttpHelper:
server = "https://connection.keboola.com/v2/"
def __init__(self,token):
self.token = token
def tokenheader(self):
return {'X-StorageApi-Token':self.token}
def getRequest(self,url):
return self.getAbsUrlRequest(self.server+url)
def postRequest(self, url, params):
return requests.post(self.server+url, headers = self.tokenheader(), data = params)
def getAbsUrlRequest(self,url):
return requests.get(url, headers = self.tokenheader())
class Client:
def __init__(self,token):
self.token = token
self.http = HttpHelper(token)
def list_buckets(self):
return self.http.getRequest('storage/buckets')
def list_tables(self,bucketurl):
return self.http.getAbsUrlRequest(bucketurl)
def files_prepare(self, name, sizeBytes):
payload = {'name': name, 'sizeBytes': sizeBytes, 'notify': False}
return self.http.postRequest('storage/files/prepare', payload)
def files_upload(self, path):
fileObject = open(path, 'rb')
fileResource = self.files_prepare(os.path.basename(path), os.path.getsize(path))
uploadParams = fileResource.json()['uploadParams']
params = {
'key': uploadParams['key'],
'acl': uploadParams['acl'],
'signature': uploadParams['signature'],
'policy': uploadParams['policy'],
'AWSAccessKeyId': uploadParams['AWSAccessKeyId']
}
files = {'file': fileObject}
requests.post(uploadParams['url'], data=params, files=files)
return fileResource
if __name__ == '__main__':
c = Client('vas_token')
print c.files_upload('./testovaci-soubor.csv').json()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment