# 2013-02-06 johnpfeiffer
import requests # http://docs.python-requests.org/en/latest/api/
AUTHENTICATE_URL = '/ws/Authentication/Login.ashx'
LIST_URL = '/ws/IMFS/ListFolder.ashx?'
class NirvanixConnection:
server = ''
session_token = ''
response = None
response_dictionary = dict()
username = ''
password = ''
appname = ''
appkey = ''
def __init__( self , server , username , password , appname , appkey ):
self.server = server
self.username = username
self.password = password
self.appname = appname
self.appkey = appkey
def parse_response( self ):
status_code = self.response.status_code
print '%s' % ( self.response.headers )
if status_code == 200:
self.response_dictionary = self.response.json()
print '%s %s' % ( type( self.response_dictionary ) , self.response_dictionary )
# https://services.smartcloudobjectstorage.com/ws/Authentication/Login.ashx?appKey=7ec360a4-be3c-8495a2932c6f&username=My-Lab&password=MyPassword&output=json
def authenticate( self):
payload = {'appKey' : self.appkey , 'username' : self.username , 'password' : self.password , 'output' : 'json'}
print 'DEBUG: %s' % payload
self.response = requests.post( self.server + AUTHENTICATE_URL , params = payload , verify = True )
if not self.response:
print 'ERROR no response'
else:
self.parse_response()
if self.response_dictionary:
self.session_token = self.response_dictionary[ 'SessionToken' ]
print 'session token = %s \n' % ( self.session_token )
def list_folder( self , folder_path , page_number , page_size ):
# http://developer.nirvanix.com/sitefiles/1000/API.html#_TocListFolder
# sortCode = Name, CreatedDate, SizeBytes, FileType
# sortDescending = true
# showMetadata = true
# showTags = true
payload = {'sessionToken' : self.session_token , 'folderPath' : folder_path , 'pageNumber' : page_number , 'pageSize' : page_size , 'output' : 'json'}
response = requests.post( self.server + LIST_URL , params = payload )
self.parse_response()
# MAIN ###############
def main():
print "start..."
server = 'https://services.smartcloudobjectstorage.com:443' # 'https://services.nirvanix.com:443'
username = 'MyUsername'
password = 'MyPassword'
appname = 'MyAppName'
appkey = 'My-App-Key'
nirvanix_connection = NirvanixConnection( server , username , password , appname , appkey )
nirvanix_connection.authenticate()
folder_path = '/'
page_number = '0'
page_size = '500'
nirvanix_connection.list_folder( folder_path , page_number , page_size )
if __name__ == "__main__":
main()