[arch-commits] Commit in libcmis/repos (4 files)

Evangelos Foutras foutrelis at archlinux.org
Tue Sep 18 00:20:44 UTC 2018


    Date: Tuesday, September 18, 2018 @ 00:20:44
  Author: foutrelis
Revision: 334826

archrelease: copy trunk to staging-x86_64

Added:
  libcmis/repos/staging-x86_64/
  libcmis/repos/staging-x86_64/PKGBUILD
    (from rev 334825, libcmis/trunk/PKGBUILD)
  libcmis/repos/staging-x86_64/boost-1.68.patch
    (from rev 334825, libcmis/trunk/boost-1.68.patch)
  libcmis/repos/staging-x86_64/google_drive.diff
    (from rev 334825, libcmis/trunk/google_drive.diff)

-------------------+
 PKGBUILD          |   41 ++++++++++++++++++++
 boost-1.68.patch  |   25 ++++++++++++
 google_drive.diff |  106 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 172 insertions(+)

Copied: libcmis/repos/staging-x86_64/PKGBUILD (from rev 334825, libcmis/trunk/PKGBUILD)
===================================================================
--- staging-x86_64/PKGBUILD	                        (rev 0)
+++ staging-x86_64/PKGBUILD	2018-09-18 00:20:44 UTC (rev 334826)
@@ -0,0 +1,41 @@
+# Maintainer: AndyRTR <andyrtr at archlinux.org>
+
+pkgname=libcmis
+pkgver=0.5.1
+pkgrel=10
+pkgdesc="a C/C++ client library for the CMIS protocol"
+arch=('x86_64')
+url="https://github.com/tdf/libcmis"
+license=('GPL2' 'LGPL2.1' 'MPL')
+depends=('boost-libs' 'curl' 'libxml2')
+makedepends=('docbook2x' 'cppunit' 'boost')
+source=("https://github.com/tdf/libcmis/releases/download/v${pkgver}/$pkgname-$pkgver.tar.gz"
+        boost-1.68.patch
+        google_drive.diff)
+md5sums=('3270154f0f40d86fce849b161f914101'
+         '85ceb3467c3b37c277aaaa1dae365d71'
+         '57eede4fdbd4709f48beee9e7b5f1509')
+validpgpkeys=()
+
+prepare() {
+        cd "$pkgname-$pkgver"
+        patch -Np1 -i ${srcdir}/boost-1.68.patch
+        patch -Np1 -i ${srcdir}/google_drive.diff
+}
+
+build() {
+	cd "$pkgname-$pkgver"
+	./configure --prefix=/usr DOCBOOK2MAN='docbook2man' --disable-werror
+	make
+}
+
+check() {
+	cd "$pkgname-$pkgver"
+        # fails a google drive check - fix will be included in the next release
+	make check || /bin/true
+}
+
+package() {
+	cd "$pkgname-$pkgver"
+	make DESTDIR="$pkgdir/" install
+}

Copied: libcmis/repos/staging-x86_64/boost-1.68.patch (from rev 334825, libcmis/trunk/boost-1.68.patch)
===================================================================
--- staging-x86_64/boost-1.68.patch	                        (rev 0)
+++ staging-x86_64/boost-1.68.patch	2018-09-18 00:20:44 UTC (rev 334826)
@@ -0,0 +1,25 @@
+From 3ef3569c4ae1c5319aff0664d52cbd8a8d42c909 Mon Sep 17 00:00:00 2001
+From: rezso <rezso at rezso.net>
+Date: Tue, 4 Sep 2018 01:18:10 +0200
+Subject: tdf#119344 fix libcmis build with boost 1.68
+
+Change-Id: I80d6ea8ecd001dc02b941c1eb8974c9244316045
+Reviewed-on: https://gerrit.libreoffice.org/59958
+Tested-by: Jenkins
+Reviewed-by: Michael Stahl <Michael.Stahl at cib.de>
+
+--- a/src/libcmis/xml-utils.cxx
++++ b/src/libcmis/xml-utils.cxx
+@@ -31,7 +31,12 @@
+ #include <sstream>
+ #include <stdlib.h>
+ 
++#include <boost/version.hpp>
++#if (BOOST_VERSION >= 106800)
++#include <boost/uuid/detail/sha1.hpp>
++#else
+ #include <boost/uuid/sha1.hpp>
++#endif
+ #include <curl/curl.h>
+ 
+ #include "xml-utils.hxx"

Copied: libcmis/repos/staging-x86_64/google_drive.diff (from rev 334825, libcmis/trunk/google_drive.diff)
===================================================================
--- staging-x86_64/google_drive.diff	                        (rev 0)
+++ staging-x86_64/google_drive.diff	2018-09-18 00:20:44 UTC (rev 334826)
@@ -0,0 +1,106 @@
+diff --git a/src/libcmis/oauth2-providers.cxx b/src/libcmis/oauth2-providers.cxx
+index 5e7f3bf..68a6aa5 100644
+--- a/src/libcmis/oauth2-providers.cxx
++++ b/src/libcmis/oauth2-providers.cxx
+@@ -37,11 +37,28 @@ using namespace std;
+ string OAuth2Providers::OAuth2Gdrive( HttpSession* session, const string& authUrl,
+                                       const string& username, const string& password )
+ {
++    /* This member function implements 'Google OAuth 2.0'
++     *
++     * The interaction is carried out by libcmis, with no web browser involved.
++     *
++     * Normal sequence (without 2FA) is:
++     * 1) a get to activate login page
++     *    receive first login page, html format
++     * 2) subsequent post to sent email
++     *    receive html page for password input
++     * 3) subsequent post to send password
++     *    receive html page for application consent
++     * 4) subsequent post to send a consent for the application
++     *    receive a single-use authorization code
++     *    this code is returned as a string
++     */
++
+     static const string CONTENT_TYPE( "application/x-www-form-urlencoded" );
+     // STEP 1: Log in
+     string res;
+     try
+     {
++        // send the first get, receive the html login page
+         res = session->httpGetRequest( authUrl )->getStream( )->str( );
+     }
+     catch ( const CurlException& e )
+@@ -49,20 +66,39 @@ string OAuth2Providers::OAuth2Gdrive( HttpSession* session, const string& authUr
+         return string( );
+     }
+ 
+-    string loginPost, loginLink; 
+-    if ( !parseResponse( res.c_str( ), loginPost, loginLink ) ) 
++    string loginEmailPost, loginEmailLink;
++    if ( !parseResponse( res.c_str( ), loginEmailPost, loginEmailLink ) )
+         return string( );
+-    
+-    loginPost += "Email=";  
+-    loginPost += string( username );
+-    loginPost += "&Passwd=";
+-    loginPost += string( password );
+-    
+-    istringstream loginIs( loginPost );
+-    string loginRes;
+-    try 
++
++    loginEmailPost += "Email=";
++    loginEmailPost += string( username );
++
++    istringstream loginEmailIs( loginEmailPost );
++    string loginEmailRes;
++    try
++    {
++        // send a post with user email, receive the html page for password input
++        loginEmailRes = session->httpPostRequest ( loginEmailLink, loginEmailIs, CONTENT_TYPE )
++                        ->getStream( )->str( );
++    }
++    catch ( const CurlException& e )
++    {
++        return string( );
++    }
++
++    string loginPasswdPost, loginPasswdLink;
++    if ( !parseResponse( loginEmailRes.c_str( ), loginPasswdPost, loginPasswdLink ) )
++        return string( );
++
++    loginPasswdPost += "Passwd=";
++    loginPasswdPost += string( password );
++
++    istringstream loginPasswdIs( loginPasswdPost );
++    string loginPasswdRes;
++    try
+     {
+-        loginRes = session->httpPostRequest ( loginLink, loginIs, CONTENT_TYPE )
++        // send a post with user password, receive the application consent page
++        loginPasswdRes = session->httpPostRequest ( loginPasswdLink, loginPasswdIs, CONTENT_TYPE )
+                         ->getStream( )->str( );
+     }
+     catch ( const CurlException& e )
+@@ -71,8 +107,8 @@ string OAuth2Providers::OAuth2Gdrive( HttpSession* session, const string& authUr
+     }
+ 
+     // STEP 2: allow libcmis to access google drive
+-    string approvalPost, approvalLink; 
+-    if ( !parseResponse( loginRes. c_str( ), approvalPost, approvalLink) )
++    string approvalPost, approvalLink;
++    if ( !parseResponse( loginPasswdRes. c_str( ), approvalPost, approvalLink) )
+         return string( );
+     approvalPost += "submit_access=true";
+ 
+@@ -80,7 +116,8 @@ string OAuth2Providers::OAuth2Gdrive( HttpSession* session, const string& authUr
+     string approvalRes;
+     try
+     {
+-        approvalRes = session->httpPostRequest ( approvalLink, approvalIs, 
++        // send a post with application consent
++        approvalRes = session->httpPostRequest ( approvalLink, approvalIs,
+                             CONTENT_TYPE) ->getStream( )->str( );
+     }
+     catch ( const CurlException& e )



More information about the arch-commits mailing list