Sha256: 5a399cbbe2e463e0fa951f8f1c81814b6f99c7b9c0a284d80b5cd0847a6d6400

Contents?: true

Size: 1.63 KB

Versions: 25

Compression:

Stored size: 1.63 KB

Contents

module Datapimp
  module Clients
    class Github
      include Singleton

      def self.method_missing(meth, *args, &block)
        if client.respond_to?(meth)
          return client.send(meth, *args, &block)
        end

        super
      end

      def self.client(options={})
        require 'octokit' unless defined?(::Oktokit)

        @client ||= begin
                      instance.with_options(options)
                    end
      end

      def options
        @options ||= {}
      end

      def with_options(opts={})
        options.merge!(opts)
        self
      end

      def api
        @api ||= begin
                   Octokit::Client.new(access_token: Datapimp.config.github_access_token)
                 end
      end

      def setup(options={})
        access_token = options[:github_access_token] || Datapimp.config.github_access_token

        unless access_token.to_s.length == 40
          puts "You should generate an access token to use with the Github client."
          puts "Access tokens allow you to revoke and/or limit access if needed."
          puts "To learn more about access tokens, and how to generate them, visit: https://help.github.com/articles/creating-an-access-token-for-command-line-use/"

          if respond_to?(:ask)
            access_token = ask("Enter a 40 character access token when you have one", String)
          end
        end

        unless access_token.to_s.length == 40
          puts "Can not proceed without a valid access token: error code #{ access_token.length }"
          return
        end

        Datapimp.config.set(:github_access_token, access_token)
      end
    end
  end
end

Version data entries

25 entries across 25 versions & 1 rubygems

Version Path
datapimp-1.0.29 lib/datapimp/clients/github.rb
datapimp-1.0.28 lib/datapimp/clients/github.rb
datapimp-1.0.27 lib/datapimp/clients/github.rb
datapimp-1.0.26 lib/datapimp/clients/github.rb
datapimp-1.0.25 lib/datapimp/clients/github.rb
datapimp-1.0.24 lib/datapimp/clients/github.rb
datapimp-1.0.23 lib/datapimp/clients/github.rb
datapimp-1.0.22 lib/datapimp/clients/github.rb
datapimp-1.0.21 lib/datapimp/clients/github.rb
datapimp-1.0.20 lib/datapimp/clients/github.rb
datapimp-1.0.15 lib/datapimp/clients/github.rb
datapimp-1.0.14 lib/datapimp/clients/github.rb
datapimp-1.0.13 lib/datapimp/clients/github.rb
datapimp-1.0.12 lib/datapimp/clients/github.rb
datapimp-1.0.11 lib/datapimp/clients/github.rb
datapimp-1.0.10 lib/datapimp/clients/github.rb
datapimp-1.0.9 lib/datapimp/clients/github.rb
datapimp-1.0.8 lib/datapimp/clients/github.rb
datapimp-1.0.6 lib/datapimp/clients/github.rb
datapimp-1.0.5 lib/datapimp/clients/github.rb