Hello community,

here is the log from the commit of package yast2-pkg-bindings for 
openSUSE:Factory checked in at 2015-10-20 16:20:50
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/yast2-pkg-bindings (Old)
 and      /work/SRC/openSUSE:Factory/.yast2-pkg-bindings.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "yast2-pkg-bindings"

Changes:
--------
--- /work/SRC/openSUSE:Factory/yast2-pkg-bindings/yast2-pkg-bindings.changes    
2015-08-29 20:02:01.000000000 +0200
+++ 
/work/SRC/openSUSE:Factory/.yast2-pkg-bindings.new/yast2-pkg-bindings.changes   
    2015-10-20 16:20:51.000000000 +0200
@@ -1,0 +2,13 @@
+Thu Oct  8 21:07:44 UTC 2015 - igonzalezs...@suse.com
+
+- Add pkgGpgCheck callback (bsc#948608)
+- 3.1.31
+
+-------------------------------------------------------------------
+Mon Oct  5 14:00:31 UTC 2015 - an...@suse.com
+
+- Added Pkg::SourceRawURL() and Pkg:ExpandedUrl() to deal with
+  repositories including repo variables (bnc#944505)
+- 3.1.30
+
+-------------------------------------------------------------------

Old:
----
  yast2-pkg-bindings-3.1.29.tar.bz2

New:
----
  yast2-pkg-bindings-3.1.31.tar.bz2

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ yast2-pkg-bindings-devel-doc.spec ++++++
--- /var/tmp/diff_new_pack.uK6EBS/_old  2015-10-20 16:20:52.000000000 +0200
+++ /var/tmp/diff_new_pack.uK6EBS/_new  2015-10-20 16:20:52.000000000 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           yast2-pkg-bindings-devel-doc
-Version:        3.1.29
+Version:        3.1.31
 Release:        0
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 Source0:        yast2-pkg-bindings-%{version}.tar.bz2

++++++ yast2-pkg-bindings.spec ++++++
--- /var/tmp/diff_new_pack.uK6EBS/_old  2015-10-20 16:20:52.000000000 +0200
+++ /var/tmp/diff_new_pack.uK6EBS/_new  2015-10-20 16:20:52.000000000 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           yast2-pkg-bindings
-Version:        3.1.29
+Version:        3.1.31
 Release:        0
 
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build

++++++ yast2-pkg-bindings-3.1.29.tar.bz2 -> yast2-pkg-bindings-3.1.31.tar.bz2 
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-pkg-bindings-3.1.29/package/yast2-pkg-bindings-devel-doc.spec 
new/yast2-pkg-bindings-3.1.31/package/yast2-pkg-bindings-devel-doc.spec
--- old/yast2-pkg-bindings-3.1.29/package/yast2-pkg-bindings-devel-doc.spec     
2015-08-27 14:00:09.000000000 +0200
+++ new/yast2-pkg-bindings-3.1.31/package/yast2-pkg-bindings-devel-doc.spec     
2015-10-09 09:40:10.000000000 +0200
@@ -16,7 +16,7 @@
 #
 
 Name:           yast2-pkg-bindings-devel-doc
-Version:        3.1.29
+Version:        3.1.31
 Release:        0
 License:        GPL-2.0
 Group:          Documentation/HTML
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-pkg-bindings-3.1.29/package/yast2-pkg-bindings.changes 
new/yast2-pkg-bindings-3.1.31/package/yast2-pkg-bindings.changes
--- old/yast2-pkg-bindings-3.1.29/package/yast2-pkg-bindings.changes    
2015-08-27 14:00:09.000000000 +0200
+++ new/yast2-pkg-bindings-3.1.31/package/yast2-pkg-bindings.changes    
2015-10-09 09:40:10.000000000 +0200
@@ -1,4 +1,17 @@
 -------------------------------------------------------------------
+Thu Oct  8 21:07:44 UTC 2015 - igonzalezs...@suse.com
+
+- Add pkgGpgCheck callback (bsc#948608)
+- 3.1.31
+
+-------------------------------------------------------------------
+Mon Oct  5 14:00:31 UTC 2015 - an...@suse.com
+
+- Added Pkg::SourceRawURL() and Pkg:ExpandedUrl() to deal with
+  repositories including repo variables (bnc#944505)
+- 3.1.30
+
+-------------------------------------------------------------------
 Thu Aug 27 11:39:14 UTC 2015 - lsle...@suse.cz
 
 - Pkg::SourceGeneralData() - return also the raw URL (without
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-pkg-bindings-3.1.29/package/yast2-pkg-bindings.spec 
new/yast2-pkg-bindings-3.1.31/package/yast2-pkg-bindings.spec
--- old/yast2-pkg-bindings-3.1.29/package/yast2-pkg-bindings.spec       
2015-08-27 14:00:09.000000000 +0200
+++ new/yast2-pkg-bindings-3.1.31/package/yast2-pkg-bindings.spec       
2015-10-09 09:40:10.000000000 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           yast2-pkg-bindings
-Version:        3.1.29
+Version:        3.1.31
 Release:        0
 
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-pkg-bindings-3.1.29/src/Callbacks.YCP.h 
new/yast2-pkg-bindings-3.1.31/src/Callbacks.YCP.h
--- old/yast2-pkg-bindings-3.1.29/src/Callbacks.YCP.h   2015-08-27 
14:00:09.000000000 +0200
+++ new/yast2-pkg-bindings-3.1.31/src/Callbacks.YCP.h   2015-10-09 
09:40:10.000000000 +0200
@@ -78,7 +78,7 @@
       CB_StartSourceRefresh, CB_ErrorSourceRefresh, CB_DoneSourceRefresh, 
CB_ProgressSourceRefresh,
       CB_StartDeltaDownload, CB_ProgressDeltaDownload, CB_ProblemDeltaDownload,
       CB_StartDeltaApply, CB_ProgressDeltaApply, CB_ProblemDeltaApply,
-      CB_FinishDeltaDownload, CB_FinishDeltaApply,
+      CB_FinishDeltaDownload, CB_FinishDeltaApply, CB_PkgGpgCheck,
       CB_StartDownload, CB_ProgressDownload, CB_DoneDownload, CB_InitDownload, 
CB_DestDownload,
 
       CB_FileConflictStart,  CB_FileConflictProgress,  CB_FileConflictReport, 
CB_FileConflictFinish,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-pkg-bindings-3.1.29/src/Callbacks.cc 
new/yast2-pkg-bindings-3.1.31/src/Callbacks.cc
--- old/yast2-pkg-bindings-3.1.29/src/Callbacks.cc      2015-08-27 
14:00:09.000000000 +0200
+++ new/yast2-pkg-bindings-3.1.31/src/Callbacks.cc      2015-10-09 
09:40:10.000000000 +0200
@@ -39,6 +39,8 @@
 #include "zypp/Digest.h"
 #include "zypp/base/String.h"
 #include "zypp/sat/FileConflicts.h"
+#include "zypp/UserData.h"
+#include "zypp/target/rpm/RpmDb.h"
 
 #include <ctime>
 
@@ -705,6 +707,61 @@
                callback.evaluate();
            }
        }
+
+    ///////////////////////////////////////////////////////////////////
+    // pkgGpgCheck callback
+    //
+    // A map containing the following information will be sent:
+    //
+    // * CheckPackageResult: Check result code.
+    // * Package: Package's name.
+    // * Localpath: Path to RPM file.
+    // * RepoMediaUrl: Repository URL
+    //
+    // It will set userData_r "Action" key according to value returned
+    // by callback.
+    ///////////////////////////////////////////////////////////////////
+    virtual void pkgGpgCheck(const UserData & userData_r = UserData() )
+    {
+      typedef zypp::target::rpm::RpmDb RpmDb;
+      CB callback( ycpcb( YCPCallbacks::CB_PkgGpgCheck ) );
+      YCPMap data;
+
+      if (callback._set) {
+        // Package
+        const zypp::Package::constPtr & package_r = 
userData_r.get<zypp::Package::constPtr>("Package");
+        YCPString package = userData_r.get<std::string>("Package", 
package_r->name());
+        data->add(YCPString("Package"), package);
+
+        const zypp::RepoInfo repo = package_r->repoInfo();
+        const std::string url = repo.rawUrl().asString();
+        data->add(YCPString("RepoMediaUrl"), YCPString(url));
+
+        // Localpath
+        zypp::Pathname localpath = userData_r.get<zypp::Pathname>("Localpath");
+        data->add(YCPString("Localpath"), YCPString(localpath.asString()));
+
+        // Result
+        YCPInteger checkPackageResult = 
userData_r.get<RpmDb::CheckPackageResult>("CheckPackageResult");
+        data->add(YCPString("CheckPackageResult"), checkPackageResult);
+
+        callback.addMap(data);
+
+        std::string ret = callback.evaluateStr();
+
+        if (ret == "A") { // "A" = Abort
+          userData_r.set("Action", 
zypp::repo::DownloadResolvableReport::ABORT);
+        }
+
+        if (ret == "I") { // "I" = Ignore
+          userData_r.set("Action", 
zypp::repo::DownloadResolvableReport::IGNORE);
+        }
+
+        if (ret == "R") { // "R" = Retry
+          userData_r.set("Action", 
zypp::repo::DownloadResolvableReport::RETRY);
+        }
+      }
+    }
     };
 
     ///////////////////////////////////////////////////////////////////
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-pkg-bindings-3.1.29/src/Callbacks_Register.cc 
new/yast2-pkg-bindings-3.1.31/src/Callbacks_Register.cc
--- old/yast2-pkg-bindings-3.1.29/src/Callbacks_Register.cc     2015-08-27 
14:00:09.000000000 +0200
+++ new/yast2-pkg-bindings-3.1.31/src/Callbacks_Register.cc     2015-10-09 
09:40:10.000000000 +0200
@@ -78,7 +78,7 @@
 /**
  * @builtin CallbackAcceptUnknownGpgKey
  * @short Register callback function
- * @param string args Name of the callback handler function. Required callback 
prototype is <code>boolean(string filename, string keyid)</code>. The callback 
function should ask user whether the unknown key can be accepted, returned true 
value means to accept the key. 
+ * @param string args Name of the callback handler function. Required callback 
prototype is <code>boolean(string filename, string keyid)</code>. The callback 
function should ask user whether the unknown key can be accepted, returned true 
value means to accept the key.
  * @return void
  */
 YCPValue PkgFunctions::CallbackAcceptUnknownGpgKey( const YCPValue& args ) {
@@ -324,6 +324,17 @@
 }
 
 /**
+ * @builtin CallbackPkgGpgCheck
+ * @short Register callback function
+ * @param string args Name of the callback handler function. Required callback 
prototype is <code>void()</code>. The callback function is evaluated when a 
package GPG signature is checked.
+ * @return void
+ */
+YCPValue PkgFunctions::CallbackPkgGpgCheck( const YCPValue& args)
+{
+    return SET_YCP_CB( CB_PkgGpgCheck, args);
+}
+
+/**
  * @builtin CallbackSourceCreateStart
  * @short Register callback function
  * @param string args Name of the callback handler function. Required callback 
prototype is <code>void(string url)</code>. The callback is evaluated when a 
source creation has been started.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-pkg-bindings-3.1.29/src/Package.cc 
new/yast2-pkg-bindings-3.1.31/src/Package.cc
--- old/yast2-pkg-bindings-3.1.29/src/Package.cc        2015-08-27 
14:00:09.000000000 +0200
+++ new/yast2-pkg-bindings-3.1.31/src/Package.cc        2015-10-09 
09:40:10.000000000 +0200
@@ -119,7 +119,7 @@
        zypp::PoolItem provider = zypp::ResPool::instance().find(*iter);
 
        // cast to Package object
-       zypp::Package::constPtr package = zypp::dynamic_pointer_cast<const 
zypp::Package>(provider.resolvable());
+       zypp::Package::constPtr package = 
zypp::asKind<zypp::Package>(provider.resolvable());
 
        if (!package)
        {
@@ -312,7 +312,7 @@
     {
         if ((*it)->fate() == zypp::ui::Selectable::TO_INSTALL)
        {
-           zypp::Package::constPtr pkg = boost::dynamic_pointer_cast<const 
zypp::Package>((*it)->candidateObj().resolvable());
+           zypp::Package::constPtr pkg = 
zypp::asKind<zypp::Package>((*it)->candidateObj().resolvable());
 
            if (!pkg)
                continue;
@@ -731,7 +731,7 @@
 
     if (s)
     {
-       return zypp::dynamic_pointer_cast<const 
zypp::Package>(s->theObj().resolvable());
+       return zypp::asKind<zypp::Package>(s->theObj().resolvable());
     }
 
     return NULL;
@@ -870,7 +870,7 @@
 {
     YCPMap data;
 
-    zypp::Package::constPtr pkg = zypp::dynamic_pointer_cast<const 
zypp::Package>(item.resolvable());
+    zypp::Package::constPtr pkg = 
zypp::asKind<zypp::Package>(item.resolvable());
 
     if (pkg == NULL) {
        y2error("NULL pkg");
@@ -1040,7 +1040,7 @@
 // a helper function
 YCPList _create_filelist(const zypp::PoolItem &pi)
 {
-    zypp::Package::constPtr package = zypp::dynamic_pointer_cast<const 
zypp::Package>(pi.resolvable());
+    zypp::Package::constPtr package = 
zypp::asKind<zypp::Package>(pi.resolvable());
 
     YCPList ret;
 
@@ -1281,7 +1281,7 @@
 static void
 pkg2list (YCPList &list, const zypp::PoolItem &item, bool names_only)
 {
-    zypp::Package::constPtr pkg = zypp::dynamic_pointer_cast<const 
zypp::Package>(item.resolvable());
+    zypp::Package::constPtr pkg = 
zypp::asKind<zypp::Package>(item.resolvable());
 
     if (!pkg)
     {
@@ -2625,7 +2625,7 @@
 
            if (s && s->toInstall() && !s->hasLicenceConfirmed())
            {
-               zypp::Package::constPtr package = 
zypp::dynamic_pointer_cast<const zypp::Package>(s->candidateObj().resolvable());
+               zypp::Package::constPtr package = 
zypp::asKind<zypp::Package>(s->candidateObj().resolvable());
                if (package)
                {
                    return YCPString(package->licenseToConfirm());
@@ -2758,8 +2758,7 @@
                 res->arch() == base_product->arch)
 
            {
-               zypp::Product::constPtr product =
-                    boost::dynamic_pointer_cast<const zypp::Product>(res);
+               zypp::Product::constPtr product = res->asKind<zypp::Product>();
 
                if (product)
                {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-pkg-bindings-3.1.29/src/PkgFunctions.cc 
new/yast2-pkg-bindings-3.1.31/src/PkgFunctions.cc
--- old/yast2-pkg-bindings-3.1.29/src/PkgFunctions.cc   2015-08-27 
14:00:09.000000000 +0200
+++ new/yast2-pkg-bindings-3.1.31/src/PkgFunctions.cc   2015-10-09 
09:40:10.000000000 +0200
@@ -501,3 +501,21 @@
 
     return new_target;
 }
+
+/**
+ * @builtin ExpandedUrl
+ * @short expands the repo variables in the given zypper URL
+ * @return string copy of url with the variables expanded to the current value
+ */
+YCPValue PkgFunctions::ExpandedUrl(const YCPString &url)
+{
+    if (url.isNull())
+    {
+        y2error("URL is nil");
+        return YCPVoid();
+    }
+
+    zypp::RepoVariablesReplacedUrl replacedUrl;
+    replacedUrl.raw() = zypp::Url(url->asString()->value());
+    return YCPString(replacedUrl.transformed().asString());
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-pkg-bindings-3.1.29/src/PkgFunctions.h 
new/yast2-pkg-bindings-3.1.31/src/PkgFunctions.h
--- old/yast2-pkg-bindings-3.1.29/src/PkgFunctions.h    2015-08-27 
14:00:09.000000000 +0200
+++ new/yast2-pkg-bindings-3.1.31/src/PkgFunctions.h    2015-10-09 
09:40:10.000000000 +0200
@@ -83,7 +83,7 @@
 
        zypp::Pathname _target_root;
        bool _target_loaded;
-       
+
        zypp::ZYpp::Ptr zypp_pointer;
 
         // use a single RepoManager instance to avoid "unused" metadata cleanup
@@ -96,7 +96,7 @@
 
        zypp::Pathname _download_area;
 
-       /** 
+       /**
         * ZYPP
         */
        zypp::ZYpp::Ptr zypp_ptr();
@@ -113,13 +113,13 @@
         RepoId current_repo_id() const { return current_repo; }
 
     private: // source related
-    
+
       // all known installation sources
       RepoCont repos;
 
       // table for converting libzypp source type to Yast type (for backward 
compatibility)
       std::map<std::string, std::string> type_conversion_table;
-    
+
       // flag for skipping autorefresh
       volatile bool autorefresh_skipped;
 
@@ -164,7 +164,7 @@
       YCPValue PkgProp(const zypp::PoolItem &item);
       YCPValue PkgMediaSizesOrCount (bool sizes, bool download_size = false);
       YCPValue TargetInitInternal(const YCPString& root, bool rebuild_rpmdb);
-    
+
       bool aliasExists(const std::string &alias, const 
std::list<zypp::RepoInfo> &reps) const;
 
       // remember the base product attributes for finding it later in
@@ -243,7 +243,7 @@
        * and setLastError AND RETHROW
        */
        YRepo_Ptr logFindRepository(RepoId id);
-       
+
        RepoId createManagedSource(const zypp::Url & url_r,
            const zypp::Pathname & path_r, const std::string& type,
            const std::string &alias_r, PkgProgress &progress, const 
zypp::ProgressData::ReceiverFnc & progressrcv = 
zypp::ProgressData::ReceiverFnc());
@@ -257,7 +257,7 @@
 
       // a helper function to add or remove an upgrade repository
       YCPValue AddRemoveUpgradeRepo(const YCPInteger &repo, bool add);
-      
+
       // action for a resolvable
       enum ResolvableAction
       {
@@ -272,6 +272,11 @@
       // it finds the resolvable using attributes saved earlier by 
RememberBaseProduct
       zypp::Product::constPtr FindInstalledBaseProduct();
 
+      // adds authentication data to a URL
+      void AddAuthData(zypp::Url url);
+      // helper with common code to SourceURL and SourceRawUrl
+      YCPValue GetSourceUrl(const YCPInteger& id, bool raw);
+
     public:
        // general
        /* TYPEINFO: void(string) */
@@ -292,6 +297,8 @@
        YCPValue LastErrorDetails ();
        /* TYPEINFO: boolean() */
        YCPValue Connect ();
+       /* TYPEINFO: string(string)*/
+       YCPValue ExpandedUrl (const YCPString&);
 
        // callbacks
        /* TYPEINFO: void(void(string,integer,boolean)) */
@@ -322,6 +329,8 @@
        YCPValue CallbackProblemDeltaApply( const YCPValue& /*nil*/ args);
        /* TYPEINFO: void(boolean(integer)) */
        YCPValue CallbackFinishDeltaDownload( const YCPValue& /*nil*/ args);
+       /* TYPEINFO: void(boolean(integer)) */
+       YCPValue CallbackPkgGpgCheck( const YCPValue& /*nil*/ args);
        /* TYPEINFO: void(void()) */
        YCPValue CallbackFinishDeltaApply( const YCPValue& /*nil*/ args);
 
@@ -451,34 +460,33 @@
        YCPValue CallbackResolvableReport( const YCPValue& /*nil*/ args );
 
        /* TYPEINFO: void(boolean(map<string,any>,integer)) */
-       YCPValue CallbackImportGpgKey( const YCPValue& /*nil*/ args );  
+       YCPValue CallbackImportGpgKey( const YCPValue& /*nil*/ args );
        /* TYPEINFO: void(boolean(string,string,integer)) */
-       YCPValue CallbackAcceptUnknownGpgKey( const YCPValue& /*nil*/ args );   
+       YCPValue CallbackAcceptUnknownGpgKey( const YCPValue& /*nil*/ args );
        /* TYPEINFO: void(boolean(string,integer)) */
-       YCPValue CallbackAcceptUnsignedFile( const YCPValue& /*nil*/ args );    
+       YCPValue CallbackAcceptUnsignedFile( const YCPValue& /*nil*/ args );
        /* TYPEINFO: void(boolean(string,map<string,any>,integer)) */
-       YCPValue CallbackAcceptVerificationFailed( const YCPValue& /*nil*/ args 
);      
+       YCPValue CallbackAcceptVerificationFailed( const YCPValue& /*nil*/ args 
);
        /* TYPEINFO: void(boolean(string,string,string)) */
         YCPValue CallbackAcceptWrongDigest( const YCPValue& /*nil*/ args);
        /* TYPEINFO: void(boolean(string,string)) */
         YCPValue CallbackAcceptUnknownDigest( const YCPValue& /*nil*/ args);
        /* TYPEINFO: void(void(map<string,any>)) */
-       YCPValue CallbackTrustedKeyAdded( const YCPValue& /*nil*/ args );       
+       YCPValue CallbackTrustedKeyAdded( const YCPValue& /*nil*/ args );
        /* TYPEINFO: void(void(map<string,any>)) */
-       YCPValue CallbackTrustedKeyRemoved( const YCPValue& /*nil*/ args );     
+       YCPValue CallbackTrustedKeyRemoved( const YCPValue& /*nil*/ args );
        /* TYPEINFO: void(boolean(string)) */
-       YCPValue CallbackAcceptFileWithoutChecksum( const YCPValue& /*nil*/ 
args );     
+       YCPValue CallbackAcceptFileWithoutChecksum( const YCPValue& /*nil*/ 
args );
 
 
        /* TYPEINFO: void(void(string,list<string>,string)) */
-       YCPValue CallbackProcessStart( const YCPValue& /*nil*/ args );  
+       YCPValue CallbackProcessStart( const YCPValue& /*nil*/ args );
        /* TYPEINFO: void(boolean(integer)) */
-       YCPValue CallbackProcessProgress( const YCPValue& /*nil*/ args );       
+       YCPValue CallbackProcessProgress( const YCPValue& /*nil*/ args );
        /* TYPEINFO: void(void()) */
-       YCPValue CallbackProcessNextStage( const YCPValue& /*nil*/ args );      
+       YCPValue CallbackProcessNextStage( const YCPValue& /*nil*/ args );
        /* TYPEINFO: void(void()) */
-       YCPValue CallbackProcessDone( const YCPValue& /*nil*/ args );   
-
+       YCPValue CallbackProcessDone( const YCPValue& /*nil*/ args );
 
        // source related
        /* TYPEINFO: boolean(boolean)*/
@@ -506,6 +514,8 @@
        YCPValue SourceGeneralData (const YCPInteger&);
        /* TYPEINFO: string(integer)*/
        YCPValue SourceURL (const YCPInteger&);
+       /* TYPEINFO: string(integer)*/
+       YCPValue SourceRawURL (const YCPInteger&);
        /* TYPEINFO: map<string,any>(integer)*/
        YCPValue SourceMediaData (const YCPInteger&);
        /* TYPEINFO: map<string,any>(integer)*/
@@ -800,7 +810,7 @@
         * Constructor.
         */
        PkgFunctions ();
-      
+
        /**
         * Destructor.
         */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-pkg-bindings-3.1.29/src/Resolvable_Patches.cc 
new/yast2-pkg-bindings-3.1.31/src/Resolvable_Patches.cc
--- old/yast2-pkg-bindings-3.1.29/src/Resolvable_Patches.cc     2015-08-27 
14:00:09.000000000 +0200
+++ new/yast2-pkg-bindings-3.1.31/src/Resolvable_Patches.cc     2015-10-09 
09:40:10.000000000 +0200
@@ -99,7 +99,7 @@
 
            if (s && s->isNeeded() && !s->isUnwanted())
            {
-               zypp::Patch::constPtr patch = zypp::dynamic_pointer_cast<const 
zypp::Patch>
+               zypp::Patch::constPtr patch = zypp::asKind<zypp::Patch>
                    (s->candidateObj().resolvable());
 
                // dont auto-install optional patches
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-pkg-bindings-3.1.29/src/Resolvable_Properties.cc 
new/yast2-pkg-bindings-3.1.31/src/Resolvable_Properties.cc
--- old/yast2-pkg-bindings-3.1.29/src/Resolvable_Properties.cc  2015-08-27 
14:00:09.000000000 +0200
+++ new/yast2-pkg-bindings-3.1.31/src/Resolvable_Properties.cc  2015-10-09 
09:40:10.000000000 +0200
@@ -264,7 +264,7 @@
     // package specific info
     if( req_kind == "package" )
     {
-       zypp::Package::constPtr pkg = boost::dynamic_pointer_cast<const 
zypp::Package>(item.resolvable());
+       zypp::Package::constPtr pkg = 
zypp::asKind<zypp::Package>(item.resolvable());
        if ( pkg )
        {
            std::string tmp = pkg->location().filename().asString();
@@ -285,7 +285,7 @@
     }
     else if( req_kind == "srcpackage" )
     {
-       zypp::SrcPackage::constPtr pkg = boost::dynamic_pointer_cast<const 
zypp::SrcPackage>(item.resolvable());
+       zypp::SrcPackage::constPtr pkg = 
zypp::asKind<zypp::SrcPackage>(item.resolvable());
        if (pkg)
        {
            std::string tmp(pkg->location().filename().asString());
@@ -309,7 +309,7 @@
     }
     // product specific info
     else if( req_kind == "product" ) {
-       zypp::Product::constPtr product = boost::dynamic_pointer_cast<const 
zypp::Product>(item.resolvable());
+       zypp::Product::constPtr product = 
zypp::asKind<zypp::Product>(item.resolvable());
        if ( !product )
        {
            y2error("product %s is not a product", item->name().c_str() );
@@ -511,7 +511,7 @@
     }
     // pattern specific info
     else if ( req_kind == "pattern" ) {
-       zypp::Pattern::constPtr pattern = boost::dynamic_pointer_cast<const 
zypp::Pattern>(item.resolvable());
+       zypp::Pattern::constPtr pattern = 
zypp::asKind<zypp::Pattern>(item.resolvable());
        info->add(YCPString("category"), YCPString(pattern->category()));
        info->add(YCPString("user_visible"), 
YCPBoolean(pattern->userVisible()));
        info->add(YCPString("default"), YCPBoolean(pattern->isDefault()));
@@ -522,7 +522,7 @@
     // patch specific info
     else if ( req_kind == "patch" )
     {
-       zypp::Patch::constPtr patch_ptr = boost::dynamic_pointer_cast<const 
zypp::Patch>(item.resolvable());
+       zypp::Patch::constPtr patch_ptr = 
zypp::asKind<zypp::Patch>(item.resolvable());
 
        info->add(YCPString("interactive"), 
YCPBoolean(patch_ptr->interactive()));
        info->add(YCPString("reboot_needed"), 
YCPBoolean(patch_ptr->rebootSuggested()));
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-pkg-bindings-3.1.29/src/Source_Create.cc 
new/yast2-pkg-bindings-3.1.31/src/Source_Create.cc
--- old/yast2-pkg-bindings-3.1.29/src/Source_Create.cc  2015-08-27 
14:00:09.000000000 +0200
+++ new/yast2-pkg-bindings-3.1.31/src/Source_Create.cc  2015-10-09 
09:40:10.000000000 +0200
@@ -889,7 +889,7 @@
            // check the repository
            if (res && res->repoInfo().alias() == alias)
            {
-               zypp::Product::constPtr product = 
boost::dynamic_pointer_cast<const zypp::Product>(res);
+               zypp::Product::constPtr product = 
zypp::asKind<zypp::Product>(res);
 
                if (product)
                {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-pkg-bindings-3.1.29/src/Source_Get.cc 
new/yast2-pkg-bindings-3.1.31/src/Source_Get.cc
--- old/yast2-pkg-bindings-3.1.29/src/Source_Get.cc     2015-08-27 
14:00:09.000000000 +0200
+++ new/yast2-pkg-bindings-3.1.31/src/Source_Get.cc     2015-10-06 
15:00:12.000000000 +0200
@@ -109,7 +109,7 @@
  * "product_dir": YCPString,
  * "type"      : YCPString,
  * "url"       : YCPString (without password, but see SourceURL),
- * "raw_url"   : YCPString (without password, but see SourceURL, raw URL 
without variable replacement),
+ * "raw_url"   : YCPString (without password, but see SourceRawURL, raw URL 
without variable replacement),
  * "alias"     : YCPString,
  * "name"      : YCPString,
  * "service"   : YCPString, (service to which the repo belongs, empty if there 
is no service assigned)
@@ -185,63 +185,23 @@
 YCPValue
 PkgFunctions::SourceURL (const YCPInteger& id)
 {
+    return GetSourceUrl(id, false);
+}
 
-    const YRepo_Ptr repo = logFindRepository(id->value());
-    if (!repo)
-        return YCPVoid();
-
-    zypp::Url url;
-
-    if (repo->repoInfo().baseUrlsBegin() != repo->repoInfo().baseUrlsEnd())
-    {
-        // #186842
-        url = *(repo->repoInfo().baseUrlsBegin());
-
-       // add authentication data if exist
-       zypp::media::CredentialManager cm;
-
-       zypp::media::AuthData_Ptr auth = cm.getCred(url);
-
-       if (auth)
-       {
-           y2milestone("Authentication data found, adding to URL...");
-
-           if (auth->valid())
-           {
-               if (!auth->username().empty())
-               {
-                   y2debug("Adding username...");
-                   url.setUsername(auth->username());
-               }
-
-               if (!auth->password().empty())
-               {
-                   y2debug("Adding password...");
-                   url.setPassword(auth->password());
-               }
-           }
-           else
-           {
-               y2warning("Invalid authentication data, returning URL without 
username and password");
-           }
-
-           // does the url contain credentials query?
-           zypp::url::ParamMap params = url.getQueryStringMap();
-           zypp::url::ParamMap::iterator map_it = params.find("credentials");
-
-           if (map_it != params.end())
-           {
-               y2milestone("Removing credentials query from URL");
-               params.erase(map_it);
-               url.setQueryStringMap(params);
-           }
-       }
-
-    }
-
-    return YCPString(url.asCompleteString());
+/******************************************************************************
+ * @builtin SourceRawURL
+ *
+ * @short Get full source raw URL (no variable replacement), including password
+ * @param integer SrcId Specifies the InstSrc to query.
+ * @return string or nil on failure
+ **/
+YCPValue
+PkgFunctions::SourceRawURL (const YCPInteger& id)
+{
+    return GetSourceUrl(id, true);
 }
 
+
 
/****************************************************************************************
  * @builtin SourceMediaData
  * @short Return media data about the source
@@ -283,7 +243,7 @@
                aval_it != (*it)->availableEnd();
                ++aval_it)
            {
-               zypp::Package::constPtr pkg = boost::dynamic_pointer_cast<const 
zypp::Package>(aval_it->resolvable());
+               zypp::Package::constPtr pkg = 
zypp::asKind<zypp::Package>(aval_it->resolvable());
 
                if (pkg && pkg->repoInfo().alias() == alias)
                {
@@ -380,7 +340,7 @@
                aval_it != (*it)->availableEnd();
                ++aval_it)
            {
-               zypp::Product::constPtr prod = 
boost::dynamic_pointer_cast<const zypp::Product>(aval_it->resolvable());
+               zypp::Product::constPtr prod = 
zypp::asKind<zypp::Product>(aval_it->resolvable());
                if (prod && prod->repoInfo().alias() == alias)
                {
                    product = prod;
@@ -466,3 +426,69 @@
     return ret;
 }
 
+// Adds authentication data to the URL if it exists
+void
+PkgFunctions::AddAuthData (zypp::Url url) {
+    zypp::media::CredentialManager cm;
+
+       zypp::media::AuthData_Ptr auth = cm.getCred(url);
+
+       if (auth)
+       {
+           y2milestone("Authentication data found, adding to URL...");
+
+           if (auth->valid())
+           {
+               if (!auth->username().empty())
+               {
+                   y2debug("Adding username...");
+                   url.setUsername(auth->username());
+               }
+
+               if (!auth->password().empty())
+               {
+                   y2debug("Adding password...");
+                   url.setPassword(auth->password());
+               }
+           }
+           else
+           {
+               y2warning("Invalid authentication data, returning URL without 
username and password");
+           }
+
+           // does the url contain credentials query?
+           zypp::url::ParamMap params = url.getQueryStringMap();
+           zypp::url::ParamMap::iterator map_it = params.find("credentials");
+
+           if (map_it != params.end())
+           {
+               y2milestone("Removing credentials query from URL");
+               params.erase(map_it);
+               url.setQueryStringMap(params);
+           }
+       }
+}
+
+// Helper with common code to SourceURL and SourceRawUrl
+YCPValue
+PkgFunctions::GetSourceUrl (const YCPInteger& id, bool raw)
+{
+    const YRepo_Ptr repo = logFindRepository(id->value());
+    if (!repo)
+        return YCPVoid();
+
+    zypp::Url url;
+
+    if (!repo->repoInfo().baseUrlsEmpty())
+    {
+        if (raw) {
+            url = repo->repoInfo().rawUrl();
+        } else {
+            // #186842
+            url = repo->repoInfo().url();
+        }
+        AddAuthData(url);
+    }
+
+    return YCPString(url.asCompleteString());
+}


Reply via email to