My work was split into two major parts:
- Building a JavaScript client library which covers all the APIs provided by ownCloud, and works both in Node.JS and direct in-browser.
- Enabling Cross Origin Resource Sharing (CORS) on ownCloud's core server, since the above JS library needs to work direct in-browser.
js-owncloud-client:
Well yes, this is the name me and my mentor, Vincent Petry(https://github.com/PVince81) chose for the JS-library mentioned above. Building this library took me around 1.5 months out of the 3 provided for completing my work. During this time, I wrote methods which would call the corresponding APIs and correctly parse the response and return to the user. Also, I used a documentation tool called swagger which made documentation of my library super-fun, and easy-to-use for the user.
Links:
- GitHub: https://github.com/noveens/js-owncloud-client/
- NPM: https://www.npmjs.com/package/js-owncloud-client/
- Bower: https://libraries.io/bower/js-owncloud-client/
- GSoC release: https://github.com/noveens/js-owncloud-client/tree/0.1.2
CORS:
This was the toughest part of my project since I had to comb through all the code ownCloud has, to find where to modify/add code to enable CORS. But with the help of my genius mentor, I finally worked it out.
Pull Request: owncloud/core#28457
Sample static web-app:
Now this is a task which I mentioned as a "stretch task" in my proposal. In this task, I built a static website using my library (js-owncloud-client) which basically does these:
- Lists all the files and folders in the current directory.
- Can change current directory by clicking on a folder.
- Can get the contents of any file by simply clicking on it.
- Can compose a new text file which will bring a text-editor in the webpage itself and save the file to your owncloud instance.
All these functionalities, and yet I wrote no more than 100-150 lines of JavaScript for this, thanks to js-owncloud-client.
- Link: https://github.com/noveens/staticOwncloudWebapp
- GSoC Release: https://github.com/noveens/staticOwncloudWebapp/tree/1.0.0
My Experience:
Overall, my experience with ownCloud was super-fun where I got to learn a ton of things interacting with my mentor, fellow ownClouders and writing code. I never knew that I would be able to manage such a big project on my own, but thanks to ownCloud and Google, this summer turned out to be very productive.
My Mentor:
I would like to give a shout-out to the coolest mentor, Vincent. I wouldn't have been able to complete this project without the guidance from him. Also, thanks Vincent for finding out time from your hectic schedule to solve my silliest doubts.