3
.(]                 @   sJ   d dl Z e jdd d dlmZmZmZmZ d dlZG dd dejZdS )    NGoaz1.0)GioGLibr   GObjectc               @   s~   e Zd ZejeddZejeddZdd Z	dd Z
dd	 Zd
d Zejdd Zdd Zdd Zdd Zdd Zdd ZdS )GoaAuthF)typedefaultNc             C   sP   t j j|  d | _tj | _tjj| j| j	 tj
jd| _| jjd| j d S )Nzcom.ubuntu.SoftwarePropertieszchanged::goa-account-id)r   __init__accountr   ZCancellableZcancellabler   Clientnew_on_goa_client_readyZSettingssettingsconnect_on_settings_changed)self r   </usr/lib/python3/dist-packages/softwareproperties/GoaAuth.pyr	   "   s    
zGoaAuth.__init__c             C   s\   yt jj|| _W n< tjk
rN } ztjdj|j	 d | _W Y d d }~X n
X | j
  d S )Nz(Failed to get a Gnome Online Account: {})r   r   Z
new_finish
goa_clientr   Errorloggingerrorformatmessage_load)r   sourcereser   r   r   r   ,   s    zGoaAuth._on_goa_client_readyc             C   s   |st | j| | j  d S )N)AssertionError_update_state_store)r   r
   r   r   r   login5   s    
zGoaAuth.loginc             C   s   | j d  | j  d S )N)r   r    )r   r   r   r   logout:   s    
zGoaAuth.logoutc             C   sT   | j d ks| jd krd S | jj| j jj}|d kr6d S |j }|d krJd S |jdS )NZ	livepatch)r
   r   lookup_by_idpropsidZget_password_basedZcall_get_password_sync)r   objZpbasedr   r   r   token>   s    zGoaAuth.tokenc             C   sh   |rZ| j d k	rZ| j j|}|d kr0| jd  d S |j }|d krN| jd  d S | j| n
| jd  d S )N)r   r#   r   Zget_account)r   
account_idr&   r
   r   r   r   _update_state_from_account_idM   s    

z%GoaAuth._update_state_from_account_idc                sz   | _  j d krd  _d _nXy|jd  W n  tk
rL   d  _d _Y n*X  j jd fdd  j jj _d _d S )NFznotify::attention-neededc                s    j  S )N)r"   )ov)r   r   r   <lambda>j   s    z'GoaAuth._update_state.<locals>.<lambda>T)r
   usernameloggedZcall_ensure_credentials_sync	Exceptionr   r$   Zpresentation_identity)r   r
   r   )r   r   r   ^   s    
zGoaAuth._update_statec             C   s   | j   d S )N)r   )r   r   keyr   r   r   r   n   s    zGoaAuth._on_settings_changedc             C   s   | j jd}| j| d S )Nzgoa-account-id)r   Z
get_stringr)   )r   r(   r   r   r   r   q   s    zGoaAuth._loadc             C   s2   | j r | jjj}| jjd| n| jjdd d S )Nzgoa-account-id )r.   r
   r$   r%   r   Z
set_string)r   r(   r   r   r   r    v   s    
zGoaAuth._store)__name__
__module____qualname__r   ZPropertyboolr.   strr-   r	   r   r!   r"   r'   r)   r   r   r   r    r   r   r   r   r      s   
	r   )	ZgiZrequire_versionZgi.repositoryr   r   r   r   r   r   r   r   r   r   <module>   s   