Sha256: 4a6e8c93a780b6da38050e7a2aa257184a1b1a76b5f563cf16c5b9ca4b7e7d42

Contents?: true

Size: 1.9 KB

Versions: 4

Compression:

Stored size: 1.9 KB

Contents

require 'json'
require 'uri'
require 'io/console'

module LgPodPlugin

  class LConfig
    attr_accessor :host
    attr_accessor :base_url
    attr_accessor :project_name
    attr_accessor :access_token
    attr_accessor :refresh_token
    attr_accessor :project

    def initialize
    end

    public
    def self.get_config(git, uri)
      return nil unless uri&.host
      return nil unless LUtils.is_gitlab_uri(git, uri.hostname)
      user_id = LUserAuthInfo.get_user_id(uri.hostname)
      user_info = LSqliteDb.shared.query_user_info(user_id)
      # 用户授权 token 不存在, 提示用户输入用户名密码
      unless user_info
        user_info = GitLabAPI.get_gitlab_access_token_input(uri, user_id, nil, nil)
        return nil unless user_info
      end
      time_now = Time.now.to_i
      # 判断 token 是否失效
      if user_info.expires_in <= time_now
        # 刷新 token 失败时, 通过已经保存的用户名密码来刷新 token
        new_user_info = GitLabAPI.refresh_gitlab_access_token uri.hostname, user_info.refresh_token
        if new_user_info.nil?
          username = user_info.username
          password = user_info.password
          user_info = GitLabAPI.get_gitlab_access_token_input(uri, user_id, username, password)
          return nil unless user_info
        else
          user_info = new_user_info
        end
      end

      config = LConfig.new
      config.host = uri.hostname
      config.access_token = user_info.access_token
      config.refresh_token = user_info.refresh_token
      config.base_url = LUtils.get_gitlab_base_url(git)
      config.project_name = LUtils.get_git_project_name(git)
      config.project = LSqliteDb.shared.query_project_info(config.project_name, git)
      unless config.project
        config.project = GitLabAPI.request_project_info(config.host, config.project_name, config.access_token, git)
      end
      return config

    end

  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
lg_pod_plugin-1.1.4.4 lib/lg_pod_plugin/config/l_config.rb
lg_pod_plugin-1.1.4.3 lib/lg_pod_plugin/config/l_config.rb
lg_pod_plugin-1.1.4.2 lib/lg_pod_plugin/config/l_config.rb
lg_pod_plugin-1.1.4 lib/lg_pod_plugin/config/l_config.rb