From 6c5e520a9461b8562fd2e3db1abc35f3ece98503 Mon Sep 17 00:00:00 2001 From: giancarlo Date: Tue, 22 Sep 2020 11:51:39 +0200 Subject: [PATCH] Added SortApp project --- .project | 17 ++++ .pydevproject | 10 +++ .settings/org.eclipse.core.resources.prefs | 7 ++ Dockerfile | 30 +++++++ LICENSE.md | 1 + MANIFEST.in | 2 + README.md | 42 ++++++++++ dist/sortapp-1.0.0.tar.gz | Bin 0 -> 3693 bytes requirements.txt | 4 + runexample.txt | 10 +++ setup.py | 39 +++++++++ src/sortapp.egg-info/PKG-INFO | 38 +++++++++ src/sortapp.egg-info/SOURCES.txt | 17 ++++ src/sortapp.egg-info/dependency_links.txt | 1 + src/sortapp.egg-info/entry_points.txt | 3 + src/sortapp.egg-info/top_level.txt | 1 + src/sortapp/__init__.py | 1 + src/sortapp/__main__.py | 2 + src/sortapp/issupport.py | 46 +++++++++++ src/sortapp/sortapp.py | 78 ++++++++++++++++++ src/sortapp/storagehub/__init__.py | 1 + src/sortapp/storagehub/storagehubcommand.py | 14 ++++ .../storagehubcommanditemdownload.py | 36 ++++++++ .../storagehub/storagehubcommanditemupload.py | 43 ++++++++++ 24 files changed, 443 insertions(+) create mode 100644 .project create mode 100644 .pydevproject create mode 100644 .settings/org.eclipse.core.resources.prefs create mode 100644 Dockerfile create mode 100644 LICENSE.md create mode 100644 MANIFEST.in create mode 100644 README.md create mode 100644 dist/sortapp-1.0.0.tar.gz create mode 100644 requirements.txt create mode 100644 runexample.txt create mode 100644 setup.py create mode 100644 src/sortapp.egg-info/PKG-INFO create mode 100644 src/sortapp.egg-info/SOURCES.txt create mode 100644 src/sortapp.egg-info/dependency_links.txt create mode 100644 src/sortapp.egg-info/entry_points.txt create mode 100644 src/sortapp.egg-info/top_level.txt create mode 100644 src/sortapp/__init__.py create mode 100644 src/sortapp/__main__.py create mode 100644 src/sortapp/issupport.py create mode 100644 src/sortapp/sortapp.py create mode 100644 src/sortapp/storagehub/__init__.py create mode 100644 src/sortapp/storagehub/storagehubcommand.py create mode 100644 src/sortapp/storagehub/storagehubcommanditemdownload.py create mode 100644 src/sortapp/storagehub/storagehubcommanditemupload.py diff --git a/.project b/.project new file mode 100644 index 0000000..db765bd --- /dev/null +++ b/.project @@ -0,0 +1,17 @@ + + + sortapp + + + + + + org.python.pydev.PyDevBuilder + + + + + + org.python.pydev.pythonNature + + diff --git a/.pydevproject b/.pydevproject new file mode 100644 index 0000000..0391d06 --- /dev/null +++ b/.pydevproject @@ -0,0 +1,10 @@ + + +python interpreter +Default + + + +/${PROJECT_DIR_NAME}/src + + diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..9035696 --- /dev/null +++ b/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,7 @@ +eclipse.preferences.version=1 +encoding//src/sortapp/issupport.py=utf-8 +encoding//src/sortapp/sortapp.py=utf-8 +encoding//src/sortapp/storagehub/storagehubcommand.py=utf-8 +encoding//src/sortapp/storagehub/storagehubcommanditemdownload.py=utf-8 +encoding//src/sortapp/storagehub/storagehubcommanditemupload.py=utf-8 +encoding/setup.py=utf-8 diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..a360bc3 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,30 @@ +# Base +FROM python:3.6-alpine + +RUN apk add --no-cache bash + +# Istall deps +COPY ./requirements.txt / +RUN pip3 install -r requirements.txt + + +# Install dist package sortapp +COPY ./dist/sortapp-1.0.0.tar.gz / + +RUN pip3 install sortapp-1.0.0.tar.gz + +# +#RUN rm sortapp-1.0.0.tar.gz +#RUN rm requirements.txt +#RUN rm -r /root/.cache + +### Alternative ### +# Create a working directory and Bundle app source +# WORKDIR /sortapp +# COPY src/sortapp /sortapp + +# Copy all subfolder +#ADD . / + +# Autorun +# CMD [ "python3", "./sortapp.py" ] diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..a0f6c0f --- /dev/null +++ b/LICENSE.md @@ -0,0 +1 @@ +#Mit License \ No newline at end of file diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 0000000..c28ab72 --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1,2 @@ +include README.md +include LICENSE.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..c7ae6e1 --- /dev/null +++ b/README.md @@ -0,0 +1,42 @@ +#SortAPP + +SortApp is simple example that sort a file in input. +Starting from this example, you can first create an installable package via pip3 and then a docker image in which it is installed the created package. +The package declares the sortapp command as entrypoint. +So once the package is installed you can use this command at command line to run the example: + +- sortapp + +The image created in this way can be executed in a container with the following command: + +- docker run -i -t --rm --name sortapp-cont sortapp sortapp + + +##Useful Commands + +###Create Distribution Package +python3 setup.py sdist --formats=gztar + +###Create Docker Image +docker build -t sortapp . + +###Save Docker Image in file +docker save sortapp | gzip > sortapp.tar.gz + +###Publish Docker Image on DockerHub +Name your local images using: +By re-tagging an existing local image: + +- docker tag sortapp /[:] + +Login in DockerHub(use your Docker ID): + +- docker login + +Now you can push this repository to the registry designated by its name or tag: + +- docker push /: + +Then logout for security: + +- docker logout diff --git a/dist/sortapp-1.0.0.tar.gz b/dist/sortapp-1.0.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..dc366b29b6cf432cb032e48b64cbd897173f9d8d GIT binary patch literal 3693 zcmV-z4wCU7iwFq6NKRh@|72-%bT4yna&%#Ea4j(|FfK4IbYXG;?Hy}#+cwgl`703m zgQV7?L_MgEuIx4AIIZXM@I=XdaXlKEf@C%n$%3REx7YuEiw8-Nlw?`9l{CRlCL)2w z0t@V77g!LELy|aA)HaQ-(d`^O33LHQqapn@N5iiCo56wEANBf!!Js!99dykhydI$8 z!5$!u6Neylu<)F~b%-CX!MiIzVQ&(nr2sx{}(d;I7rCtGzz^SiH+n_^7!`O z>Q%;nFz61H{oe_Xc@`5AZIUjR z4!Iqp=Lm9r&vg>WMe~rb5-1H&fI_B>6lLNZ3bWWA5hoWOIhJdxAJFe&+Cl#h-P@%*2? zIPnZOAcmJ{uRIqAF*M=uwU;3AroF&?&SR_{PN2r;XJ;A`kUy{tm=C=e#ojXVF~Xl5 z_M2Qe31``1%pxy@}7&v;B@%(>4ACi$c9 z1&|pcLIvk4@7{5JDB5|ueoVrTIQR+uNc+9*fylJI8N9+n)Sh{yNUBqzO!H35`o#-) z<8GW=*4j(j2<)aJ&w-`}2^c@L)mRQik$X^s}% zg3bkf6yqd~jOZ4{Ge8G+K=+qU65ESELEbl#=lyZYxyv+{)~2#+!w}5auese zLd*;Jgj1mzQ$(5G|Ip%3FG4@bi3YUVSp2D-`A$Mv8N(bAq@T27--%;y?qQgL&Pcc* z&T>gd{FM_dQd;R4(pjI-r+x`v%rZ3N?c@}}3_`+dkSBP5efmD1gybS`BTO7NTku(s zmqn++3`ZFL3li-e{v-83N!z^IG5X2w8&p%jn8dAtuU_4%kZ_e1C2<osYf<52x{4cqZ`=0+n|1DF^|6k1b-?apJ z*!U#&D|$RB_|4pYYtx{i?Sr#a8h2J<>b0#c@Z6XPFb4lT8@^)?5Fo2X#{7 zPZC0dA2!;ZH0%2|i<;Rv;)($wP)jC=#sVkJy!tAe1RCNbX*{K2>mt*eqf!ofW`n$U zi@ufnmynRq02SV*qsNFgd`-2i?T!~?bn?l?Ea3B~^jUZ_jBwCgC2B{ganoqgU@#4} zm3gHp#tnf%fi9y_rQIi)sHXmBy% z#Y$pRN3AJ(QL3tR-=oF_ILP0I|F_*%;;#0;-y52R{fFl+IDtL2{!{ka(pB~=ePg2}{H=jVR0?_2wot=j{cM3|UA@U4%@Wjs9s3S-$2|Ov~ zQ9TPjVmta3rH-Td{47uB<>{-Fl7mrlGAKLrv>R~tSA+837?-;SEZnSMSI(7s;Rxw8 zMIWOke>jp%CKnT(THIW9NSsn)EuDC<`HoLc`AQs3+h53 z!PyWlO{?m<@brgzI=m_8RZpcd@~ixnhq*@ODXv^x&RJVpXicT0NZnLQ(x!T0c~%vU z7E(KrUy}cKznH*X`~L$L{{`1?)E)K*)c+e=>iqXt=l`wq-p2RwC~BpJ|FFg6Tc3Ly z1&-4H4f-#gXxTabxAFV$E?@sy{lUoM=RZbj|96k^KfONahz_~lQWo-?)&Klx-b3rS zL;nZEVLy-mbuAYEA6Px5|NngZ-|I5_-;?)$;@fQNCqEUMZTXx|COo0GH)L!KL9X30 zlDCn!q{+86H&W!wwPHJpe;_tqx5p$oG4+ih=ncami|cdqqP`cC?+fKvy^G2&6a5nC zWqA`RNA6$T6*$tdkC#{+dDS=XIK2sj6_F)+Y-F{o#uAI&0Xo(|B_HBuYjbt1fHCu8 zH@wEA7>8!14=ZGZ_c$rnu*$(?D0ggI0ZMIus!`NEMveNOOAWsmNeRD5Y}Gf3yg3TO zq)K?aao3~4cRjdVc`*u7-*4POTWZ-hw3*OQd<1f~p$d0dQal*U%@NxQpGPYM;;6Qf zuq{*=JzA*>t#xhB@x#C|M=4%ZiZ=>TGD^*(N`8)!-Vz<$^^_8F$hv>yM= zQbi23@mtU^eh*=ClpD}$tr=3873Z3NcFO8N`kDx2sb{L<%PrJ8#S@{DZPaeHk=aQb zS9j|6sjbyauG7%1HUy}N2h-gE)2-#!OxOc4duN}2^DHsl#UjzpjDNF~Zg6Do4`|uT zKg|Ds;G+LN>;GPU|6AW2_4)Zm&{r_IKuh#$H z#QBd;OW(i=!8luS3qR;RBxMWie9gFFi7mOakbPaeai<28YtO}eWvOQu(FEZPo89)T zJsZU3yJ&QYT13L?S&SMrAV%U|-~NKT{VPS+1E6urPsEx6E8pKd#>hK|VW{Bj%;d=kvqhqc9- zhBf^_>8!_Li~~yT(8E)l@60m!Nyc?&9G=;mPdH@5!0z9B__|Dr z4hy1R>29D|UU0D*!jLXKB~>%1GRCZfYD`Pr0p-f+3s)Lno94q>JD54X-_+mXIQ5eb z{Ddh1SvVshUD9;8n4d9;c$WqN)OkuT3<8xo4H8V|4&-+-qWY?al&UQw&=oYyMLt_X zmGH*3RSPG^u#Lo79PxsNlh7-0S~YYSeHr0gKcOFuQ?b-9Y+DC)=gTRB9-}cF#-_aA zDCyOB1PS??3he=XkN0(gnnY1|IN~tBQ@-%ZzH2 zjk@X@fN#bBD{ceZtNt_pkM93>hZapYt)aUAX;1#2bR)9ThHqW}AAHsOF8W`;|J}5D z19kuFUO?UduI_(V_rI(A-_`x^>i+j^{r~V2|M#>1(%*lydX`D;zoqQ|*AV|-dH$cu zSQ3VQtZBuOOFa)g==AG(ou8ZqTC=6F1pahZzM6n%8uW)AuajsM%UGG1FT4OwjlWcB zisYOqopy=_8|<;k2(a&-vvX5W4NJV{o|3IIb<+7cN#0+!UhA(?{*-w#w!YDm5hbKX z+xiw>m?-9l!9r%(E_LZ@oTv zzjS?!^q9E%-=)mhmPUz2pr=_z^X3W@I#N)k#mmTdecONK7Nb%5Q)rDbI&X-k*sJ~) zT7w_Z7AP@q780tE^bC{Un4fdT~z6ev*e<-z{} L0`_3M0H6Q>R|I!1 literal 0 HcmV?d00001 diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..1a4188b --- /dev/null +++ b/requirements.txt @@ -0,0 +1,4 @@ +###### Requirements without Version Specifiers ###### +requests + +###### Requirements with Version Specifiers ###### diff --git a/runexample.txt b/runexample.txt new file mode 100644 index 0000000..86bbe08 --- /dev/null +++ b/runexample.txt @@ -0,0 +1,10 @@ +python3 + +Token +xxxx-xxxx-xxxx-xxxx-xxxx + +FileItemId +548eade8-25cf-4978-9f61-0f0c652900be + +FolderItemId +32c0422f-a777-4452-adea-007347ec4484 \ No newline at end of file diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..d27259a --- /dev/null +++ b/setup.py @@ -0,0 +1,39 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# @author: Giancarlo Panichi +# +# Created on 2020/06/12 +# +import setuptools + +with open("README.md", "r") as freadme: + l_description = freadme.read() + +with open("LICENSE.md", "r") as flicense: + license_description = flicense.read() + + +setuptools.setup( + name="sortapp", + version="1.0.0", + author="Giancarlo Panichi", + author_email="giancarlo.panichi@isti.cnr.it", + description="A application for sort un text file", + long_description=l_description, + long_description_content_type="text/markdown", + license=license_description, + url="https://code-repo.d4science.org/gCubeSystem/sortapp", + package_dir={"": "src"}, + packages=setuptools.find_packages(where="src"), + entry_points={ + 'console_scripts': ['sortapp=sortapp.sortapp:main'] + }, + classifiers=[ + "Programming Language :: Python :: 3", + "License :: OSI Approved :: MIT License", + "Operating System :: OS Independent", + ], + platforms=["Linux"], + python_requires='>=3.6', +) \ No newline at end of file diff --git a/src/sortapp.egg-info/PKG-INFO b/src/sortapp.egg-info/PKG-INFO new file mode 100644 index 0000000..43a5a50 --- /dev/null +++ b/src/sortapp.egg-info/PKG-INFO @@ -0,0 +1,38 @@ +Metadata-Version: 2.1 +Name: sortapp +Version: 1.0.0 +Summary: A application for sort un text file +Home-page: https://code-repo.d4science.org/gCubeSystem/sortapp +Author: Giancarlo Panichi +Author-email: giancarlo.panichi@isti.cnr.it +License: #Mit License +Description: #SortAPP + + SortApp is simple example that sort a file in input. + Starting from this example, you can first create an installable package via pip3 and then a docker image in which it is installed the created package. + The package declares the sortapp command as entrypoint. + So once the package is installed you can use this command at command line to run the example: + + - sortapp + + The image created in this way can be executed in a container with the following command: + + - docker run -i -t --rm --name sortapp-cont sortapp-img sortapp + + + ##Useful Commands + + ###Create Distribution Package + python3 setup.py sdist --formats=gztar + + ###Create Docker Image + docker build -t sortapp-img . + + ###Save Docker Image in file + docker save sortapp-img | gzip > sortapp-img.tar.gz +Platform: Linux +Classifier: Programming Language :: Python :: 3 +Classifier: License :: OSI Approved :: MIT License +Classifier: Operating System :: OS Independent +Requires-Python: >=3.6 +Description-Content-Type: text/markdown diff --git a/src/sortapp.egg-info/SOURCES.txt b/src/sortapp.egg-info/SOURCES.txt new file mode 100644 index 0000000..a0d2233 --- /dev/null +++ b/src/sortapp.egg-info/SOURCES.txt @@ -0,0 +1,17 @@ +LICENSE.md +MANIFEST.in +README.md +setup.py +src/sortapp/__init__.py +src/sortapp/__main__.py +src/sortapp/issupport.py +src/sortapp/sortapp.py +src/sortapp.egg-info/PKG-INFO +src/sortapp.egg-info/SOURCES.txt +src/sortapp.egg-info/dependency_links.txt +src/sortapp.egg-info/entry_points.txt +src/sortapp.egg-info/top_level.txt +src/sortapp/storagehub/__init__.py +src/sortapp/storagehub/storagehubcommand.py +src/sortapp/storagehub/storagehubcommanditemdownload.py +src/sortapp/storagehub/storagehubcommanditemupload.py \ No newline at end of file diff --git a/src/sortapp.egg-info/dependency_links.txt b/src/sortapp.egg-info/dependency_links.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/sortapp.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/src/sortapp.egg-info/entry_points.txt b/src/sortapp.egg-info/entry_points.txt new file mode 100644 index 0000000..ababc04 --- /dev/null +++ b/src/sortapp.egg-info/entry_points.txt @@ -0,0 +1,3 @@ +[console_scripts] +sortapp = sortapp.sortapp:main + diff --git a/src/sortapp.egg-info/top_level.txt b/src/sortapp.egg-info/top_level.txt new file mode 100644 index 0000000..3071513 --- /dev/null +++ b/src/sortapp.egg-info/top_level.txt @@ -0,0 +1 @@ +sortapp diff --git a/src/sortapp/__init__.py b/src/sortapp/__init__.py new file mode 100644 index 0000000..a6f9542 --- /dev/null +++ b/src/sortapp/__init__.py @@ -0,0 +1 @@ +print("sortapp init") \ No newline at end of file diff --git a/src/sortapp/__main__.py b/src/sortapp/__main__.py new file mode 100644 index 0000000..e177ffa --- /dev/null +++ b/src/sortapp/__main__.py @@ -0,0 +1,2 @@ +print('__main__.py executed') + diff --git a/src/sortapp/issupport.py b/src/sortapp/issupport.py new file mode 100644 index 0000000..c084e7c --- /dev/null +++ b/src/sortapp/issupport.py @@ -0,0 +1,46 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# @author: Giancarlo Panichi +# +# Created on 2018/06/15 +# +import requests +from xml.etree import ElementTree + +class ISSupport: + + def __init__(self): + # dev + #self.serviceUrl = "https://node10-d-d4s.d4science.org" + # prod + self.serviceUrl = "http://registry.d4science.org" + self.storageHubServiceClass = "DataAccess" + self.storageHubServiceName = "StorageHub" + + def discoverStorageHub(self,gcubeToken): + print("Discover StorageHub") + urlString = self.serviceUrl + "/icproxy/gcube/service/GCoreEndpoint/" + self.storageHubServiceClass + "/" + self.storageHubServiceName + "?gcube-token=" + gcubeToken + r = requests.get(urlString) + print(r.status_code) + print(r.text) + if r.status_code!=200: + print("Error discovering StorageHub: "+r.status_code) + raise Exception("Error retrieving StorageHub url info: "+r.status_code) + else: + root = ElementTree.fromstring(r.text) + print(root) + gcoreEndpoint=root.findall("Result/Resource/Profile/AccessPoint/RunningInstanceInterfaces/Endpoint") + print(gcoreEndpoint) + for child in gcoreEndpoint: + print(child.tag, child.attrib) + if child.attrib["EntryName"]=="org.gcube.data.access.storagehub.StorageHub": + print("Endpoint Found") + print(child.text) + return child.text + + print("Error discovering StorageHub url not found") + raise Exception("Error retrieving StorageHub url not found!") + + def __str__(self): + return 'ISSupport[serviceUrl=' + str(self.serviceUrl) + ']' diff --git a/src/sortapp/sortapp.py b/src/sortapp/sortapp.py new file mode 100644 index 0000000..e378c38 --- /dev/null +++ b/src/sortapp/sortapp.py @@ -0,0 +1,78 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# @author: Giancarlo Panichi +# +# Created on 2020/06/12 +# +import sys +from .issupport import ISSupport +from .storagehub.storagehubcommanditemdownload import StorageHubCommandItemDownload +from .storagehub.storagehubcommanditemupload import StorageHubCommandItemUpload + + +class SortApp: + + def __init__(self): + self.gcubeToken = sys.argv[1] + self.fileItemId = sys.argv[2] + self.tempFolderItemId = sys.argv[3] + self.destinationFile = "elements.txt" + self.storageHubUrl = None + + def main(self): + print(self) + issup = ISSupport() + self.storageHubUrl = issup.discoverStorageHub(self.gcubeToken) + self.executeSort() + + def executeSort(self): + print("Execute Sort") + print('gcubeToken: ' + self.gcubeToken) + print('fileItemId: ' + self.fileItemId) + + if not self.gcubeToken: + raise Exception('Error Token is null') + + if not self.fileItemId: + raise Exception('Error File Item Id is null') + + cmdItemDownload = StorageHubCommandItemDownload(self.gcubeToken, self.storageHubUrl, + self.fileItemId, self.destinationFile) + cmdItemDownload.execute() + + with open(self.destinationFile, 'r') as f: + elementsList = [line.strip() for line in f] + + print ("Elements found: ") + print(*elementsList, sep="\n") + + #if self.elementsOrder and self.elementsOrder == 'Desc': + # elementsList.sort(reverse=True) + #else: + elementsList.sort(reverse=False) + + print ("Elements sorted: ") + print(*elementsList, sep="\n") + + with open(self.destinationFile, 'w') as out_file: + out_file.write('\n'.join(elementsList)) + + print("Elements saved in file: " + self.destinationFile) + + cmdItemUpload = StorageHubCommandItemUpload(self.gcubeToken, self.storageHubUrl, self.tempFolderItemId, + self.destinationFile, self.destinationFile, self.destinationFile) + cmdItemUpload.execute() + + def __str__(self): + return 'Sort App' + + +def main(): + print('SortApp main()') + sortApp = SortApp() + sortApp.main() + + +main() + diff --git a/src/sortapp/storagehub/__init__.py b/src/sortapp/storagehub/__init__.py new file mode 100644 index 0000000..f8d2b9f --- /dev/null +++ b/src/sortapp/storagehub/__init__.py @@ -0,0 +1 @@ +print("sortapp/storagehub init") \ No newline at end of file diff --git a/src/sortapp/storagehub/storagehubcommand.py b/src/sortapp/storagehub/storagehubcommand.py new file mode 100644 index 0000000..22aaf8a --- /dev/null +++ b/src/sortapp/storagehub/storagehubcommand.py @@ -0,0 +1,14 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# @author: Giancarlo Panichi +# +# Created on 2018/06/15 +# + +class StorageHubCommand: + def execute(self): + print("StorageHubCommand") + def __str__(self): + return 'StorageHubCommand' + \ No newline at end of file diff --git a/src/sortapp/storagehub/storagehubcommanditemdownload.py b/src/sortapp/storagehub/storagehubcommanditemdownload.py new file mode 100644 index 0000000..1ae09b8 --- /dev/null +++ b/src/sortapp/storagehub/storagehubcommanditemdownload.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# @author: Giancarlo Panichi +# +# Created on 2018/06/15 +# +import requests +from .storagehubcommand import StorageHubCommand + + +class StorageHubCommandItemDownload(StorageHubCommand): + + def __init__(self, gcubeToken, storageHubUrl, itemId, destinationFile): + self.gcubeToken = gcubeToken + self.storageHubUrl = storageHubUrl + self.itemId = itemId + self.destinationFile = destinationFile + + def execute(self): + print("Execute StorageHubCommandItemDownload") + print(self.storageHubUrl + "/items/" + self.itemId + "/download?"); + + urlString = self.storageHubUrl + "/items/" + self.itemId + "/download?gcube-token=" + self.gcubeToken + r = requests.get(urlString) + print(r.status_code) + if r.status_code != 200: + print("Error in execute StorageHubCommandItemDownload: " + r.status_code) + raise Exception("Error in execute StorageHubCommandItemDownload: " + r.status_code) + with open(self.destinationFile, 'w') as file: + file.write(r.text) + + def __str__(self): + return ('StorageHubCommandItemDownload[storageHubUrl=' + str(self.storageHubUrl) + + 'itemId=' + self.itemId + + ', destinationFile=' + self.destinationFile + ']') diff --git a/src/sortapp/storagehub/storagehubcommanditemupload.py b/src/sortapp/storagehub/storagehubcommanditemupload.py new file mode 100644 index 0000000..2b8b825 --- /dev/null +++ b/src/sortapp/storagehub/storagehubcommanditemupload.py @@ -0,0 +1,43 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# @author: Giancarlo Panichi +# +# Created on 2018/06/15 +# +import requests +from .storagehubcommand import StorageHubCommand + + +class StorageHubCommandItemUpload(StorageHubCommand): + + def __init__(self, gcubeToken, storageHubUrl, folderItemId, file, filename, fileDescription): + self.gcubeToken = gcubeToken + self.folderItemId = folderItemId + self.storageHubUrl = storageHubUrl + self.file = file + self.filename = filename + self.fileDescription = fileDescription + + def execute(self): + print("Execute StorageHubCommandItemUpload") + print(self.storageHubUrl + "/items/" + self.folderItemId + "/create/FILE?"); + + filedata = {'name': self.filename, 'description': self.fileDescription, "file": ("file", open(self.file, "rb"))} + + urlString = self.storageHubUrl + "/items/" + self.folderItemId + "/create/FILE?gcube-token=" + self.gcubeToken + r = requests.post(urlString, files=filedata) + print(r) + print(r.status_code) + if r.status_code != 200: + print("Error in execute StorageHubCommandItemUpload: " + r.status_code) + raise Exception("Error in execute StorageHubCommandItemUpload: " + r.status_code) + print(str(r.text)) + return r.text + + def __str__(self): + return ('StorageHubCommandItemUpload[itemId=' + self.folderItemId + + ', storageHubUrl=' + str(self.storageHubUrl) + + ', folderItemId=' + str(self.folderItemId) + + ', filename=' + str(self.filename) + + ', fileDescription=' + str(self.fileDescription) + ']')