GSoC/2018/StatusReports/TarekTalaat: Difference between revisions

From KDE Community Wiki
< GSoC‎ | 2018‎ | StatusReports
(GSoC 2018 [digiKam] Supporting Twitter and One Drive services in digikam export. Final Report)
Line 1: Line 1:
== Tarek Talaat ==  
== Tarek Talaat ==  


'''Project Name:''' [digiKam] Supporting Twitter and One Drive services in digikam export
'''Project Name:''' [digiKam] Supporting Twitter and One Drive services in digikam export.


'''Brief Description:'''  Digikam supports exporting images to multiple websites. The purpose of this project is to extend this support to include one drive and twitter by writing clients to connect to Twitter's and OneDrive's APIs.
'''Brief Description:'''  Digikam supports exporting images to multiple websites. The purpose of this project is to extend this support to include one drive and twitter by writing clients to connect to Twitter's and OneDrive's APIs.


''' Status: '''
'''Proposal:''' [https://docs.google.com/document/d/1zLy6u59UMuDVHShNHa_pxBOBc9geBkRrt8I5_6Gd6hY/edit?usp=sharing Project Proposal]
*'''Getting familiar with the code base during community bonding period:'''<pre style="color: green;">Done</pre>


== Final Commits Link : ==
'''https://github.com/KDE/digikam/commits?author=TTalaat
'''
== Final Report :==
Today I finished working on GSoC 2018 project for adding twitter and OneDrive web services to digikam export tools.
It has been a great experience for me, and a great honor to participate in this project.


[[File:Onedrivewindow.png]]
We were not able to finish twitter webservice due to problems in the authentication with the media end point. This problem appeared specifically for the upload endpoint, the authentication of o2 library for twitter was tested for the statuses endpoint and it worked properly which suggested the possibility that this problem is specific for the media upload endpoint.


We posted on the twitter community, stack overflow and github repo for the o2 library but could not acquire an answer to this problem.
Although twitter was not finished, I am satisfied with the results of the project since it was suggested to add a webservice instead of twitter, and  two more webservices were successfully added to digikam instead of twitter which are pinterest and box. 
== Usage: ==
*Select the export menu from the menu bar.
*Select the required webservice for exporting.
*The export window for the selected service will open.
== Status: ==
*''' Onedrive Web Service:'''<pre style="color: green;">Done</pre>
**'''Implementing Onedrive Client'''<pre style="color: green;">Done</pre>
***'''Using QWebView to authenticate the user using Oauth2'''<pre style="color: green;">Done</pre>
***'''Using QWebEngineView to authenticate the user using Oauth2'''<pre style="color: green;">Done</pre>
[[File:Onesign.png]]
[[File:Provideaccessone.png ]]


*'''Writing the Onedrive API Client:'''<pre style="color: yellow;">In Progress</pre>
**'''Registering digiKam on OneDrive dev center.'''<pre style="color: green;">Done</pre>
**'''Implementing Onedrive Client'''<pre style="color: yellow;">In progress</pre>
***'''Using qwebview to authenticate the user using Oauth2'''<pre style="color: green;">Done</pre>
***'''Uploading Photos to Onedrive'''<pre style="color: green;">Done</pre>
***'''Uploading Photos to Onedrive'''<pre style="color: green;">Done</pre>
[[File:Uploadone.png ]]
[[File:Uploadfinishedone.png]]
***'''Listing folder in the user's drive'''<pre style="color: green;">Done</pre>
***'''Listing folder in the user's drive'''<pre style="color: green;">Done</pre>
***'''Change user'''<pre style="color: green;">Done</pre>
***'''Change user'''<pre style="color: green;">Done</pre>
***'''Uploading photos to a specific folder in user's drive'''<pre style="color: green;">Done</pre>
***'''Uploading photos to a specific folder in user's drive'''<pre style="color: green;">Done</pre>
***'''Creating a new folder'''<pre style="color: yellow;">In progress</pre>
***'''Creating a new folder'''<pre style="color: green;">Done</pre>
***'''Writing code and user documentation'''<pre style="color: yellow;">In progress</pre>
***'''Writing code and user documentation'''<pre style="color: green;">Done</pre>
***''Writing unit tests'''<pre style="color: orange;">Pending</pre>
***'''Writing unit tests'''<pre style="color: red;">Not Done</pre>
 
*'''Twitter Web Service:'''<pre style="color: red;">Not Done Due to authentication problems in media endpoint</pre>
 
*'''Box Web Service:'''<pre style="color: green;">Done</pre>
**'''Implementing Box Client'''<pre style="color: green;">Done</pre>
***'''Authenticating Box Using o2 Library'''<pre style="color: green;">Done</pre>
[[File:Box1.png]]
 
***'''Uploading Photos to Box'''<pre style="color: green;">Done</pre>
[[File:Box2.png]]
[[File:Box3.png]]
***'''Listing folder in the user's root directory'''<pre style="color: green;">Done</pre>
***'''Change user'''<pre style="color: green;">Done</pre>
***'''Uploading photos to a specific folder in user's drive'''<pre style="color: green;">Done</pre>
***'''Creating a new folder'''<pre style="color: green;">Done</pre>
***'''Writing code and user documentation'''<pre style="color: green;">Done</pre>
***'''Writing unit tests'''<pre style="color: red;">Not Done</pre>
 
*''' Pinterest Web Service:'''<pre style="color: green;">Done</pre>
**'''Implementing Pinterest Client'''<pre style="color: green;">Done</pre>
 
***'''Using QWebView to authenticate the user using Oauth2'''<pre style="color: green;">Done</pre>
***'''Using QWebEngineView to authenticate the user using Oauth2'''<pre style="color: green;">Done</pre>
[[File:Pin1.png]]
[[File:Pin2.png]]
***'''Uploading Photos to Pinterest'''<pre style="color: green;">Done</pre>
[[File:Pin3.png]]
[[File:Pin4.png]]
***'''Listing Boards'''<pre style="color: green;">Done</pre>
***'''Change user'''<pre style="color: green;">Done</pre>
***'''Uploading photos to a specific board '''<pre style="color: green;">Done</pre>
***'''Creating a new board'''<pre style="color: green;">Done</pre>
***'''Writing code and user documentation'''<pre style="color: green;">Done</pre>
***'''Writing unit tests'''<pre style="color: red;">Not Done</pre>
 
 
==Code:==
*[https://cgit.kde.org/digikam.git/log/?qt=author&q=Tarek+Talaat Final Commits to Master Branch]
 
==To do:==
*Write unit tests to the created web services.
*Communicate again with twitter community and explore other libraries to see if the twitter authentication problem with media endpoint could be solved.
 
==What I Learned Throughout the Program:==
My motivation when i applied for GSoC was to contribute to the open source community in order to be exposed to a new code base and to expand my knowledge and skills and become a better programmer and  more importantly to participate in something that adds value to the community.


*'''Writing the Twitter API Client:'''<pre style="color: yellow;">In progress</pre>
I believe that participating in digiKam satisfied my motivation and goals and exceeded it. For the last three months I learned a lot and worked on something that I have never worked on before which was a great opportunity for me to learn and to know my mistakes and weaknesses and  challenge my self to become better.
**'''Implementing Twitter API Client Classes'''<pre style="color: yellow;">In progress</pre>
I noticed also this change in my skills in work as a software developer and how I developed a new perspective and was able to tackle problems more efficiently than before.


'''Proposal: ''' [https://docs.google.com/document/d/1zLy6u59UMuDVHShNHa_pxBOBc9geBkRrt8I5_6Gd6hY/edit?usp=sharing Project Proposal]
It was also great to be introduced to the community of digiKam, and open source contribution. And I learned a lot from my mentors who were always cooperative and friendly.


'''Links to commits on cgit: '''
It had been a great experience for me and a great honor to contribute in digiKam this summer, and I am looking forward to continue this contribution after GSoC and apply again next summer.
*[https://cgit.kde.org/digikam.git/commit/?h=gsoc18-twitter-onedrive&id=d6a7d24c05811869c5d8d9de56099db2914aabb0 Adding one drive web service to digikam]
*[https://cgit.kde.org/digikam.git/commit/?h=gsoc18-twitter-onedrive&id=ecc5526e814ac19b66ef4cc10792f005ab9c79de Modified onedrive authentication process to use qwebview]

Revision as of 12:06, 14 August 2018

Tarek Talaat

Project Name: [digiKam] Supporting Twitter and One Drive services in digikam export.

Brief Description: Digikam supports exporting images to multiple websites. The purpose of this project is to extend this support to include one drive and twitter by writing clients to connect to Twitter's and OneDrive's APIs.

Proposal: Project Proposal

Final Commits Link :

https://github.com/KDE/digikam/commits?author=TTalaat

Final Report :

Today I finished working on GSoC 2018 project for adding twitter and OneDrive web services to digikam export tools. It has been a great experience for me, and a great honor to participate in this project.

We were not able to finish twitter webservice due to problems in the authentication with the media end point. This problem appeared specifically for the upload endpoint, the authentication of o2 library for twitter was tested for the statuses endpoint and it worked properly which suggested the possibility that this problem is specific for the media upload endpoint.

We posted on the twitter community, stack overflow and github repo for the o2 library but could not acquire an answer to this problem.

Although twitter was not finished, I am satisfied with the results of the project since it was suggested to add a webservice instead of twitter, and two more webservices were successfully added to digikam instead of twitter which are pinterest and box.

Usage:

  • Select the export menu from the menu bar.
  • Select the required webservice for exporting.
  • The export window for the selected service will open.

Status:

  • Onedrive Web Service:
    Done
    • Implementing Onedrive Client
      Done
      • Using QWebView to authenticate the user using Oauth2
        Done
      • Using QWebEngineView to authenticate the user using Oauth2
        Done

      • Uploading Photos to Onedrive
        Done

      • Listing folder in the user's drive
        Done
      • Change user
        Done
      • Uploading photos to a specific folder in user's drive
        Done
      • Creating a new folder
        Done
      • Writing code and user documentation
        Done
      • Writing unit tests
        Not Done
  • Twitter Web Service:
    Not Done Due to authentication problems in media endpoint
  • Box Web Service:
    Done
    • Implementing Box Client
      Done
      • Authenticating Box Using o2 Library
        Done

      • Uploading Photos to Box
        Done

      • Listing folder in the user's root directory
        Done
      • Change user
        Done
      • Uploading photos to a specific folder in user's drive
        Done
      • Creating a new folder
        Done
      • Writing code and user documentation
        Done
      • Writing unit tests
        Not Done
  • Pinterest Web Service:
    Done
    • Implementing Pinterest Client
      Done
      • Using QWebView to authenticate the user using Oauth2
        Done
      • Using QWebEngineView to authenticate the user using Oauth2
        Done

      • Uploading Photos to Pinterest
        Done

      • Listing Boards
        Done
      • Change user
        Done
      • Uploading photos to a specific board
        Done
      • Creating a new board
        Done
      • Writing code and user documentation
        Done
      • Writing unit tests
        Not Done


Code:

To do:

  • Write unit tests to the created web services.
  • Communicate again with twitter community and explore other libraries to see if the twitter authentication problem with media endpoint could be solved.

What I Learned Throughout the Program:

My motivation when i applied for GSoC was to contribute to the open source community in order to be exposed to a new code base and to expand my knowledge and skills and become a better programmer and more importantly to participate in something that adds value to the community.

I believe that participating in digiKam satisfied my motivation and goals and exceeded it. For the last three months I learned a lot and worked on something that I have never worked on before which was a great opportunity for me to learn and to know my mistakes and weaknesses and challenge my self to become better. I noticed also this change in my skills in work as a software developer and how I developed a new perspective and was able to tackle problems more efficiently than before.

It was also great to be introduced to the community of digiKam, and open source contribution. And I learned a lot from my mentors who were always cooperative and friendly.

It had been a great experience for me and a great honor to contribute in digiKam this summer, and I am looking forward to continue this contribution after GSoC and apply again next summer.