Sha256: 2e806d526a0cd0046c4f62569e76cb7a09d693d1135072325748af7980a07291

Contents?: true

Size: 1.16 KB

Versions: 1

Compression:

Stored size: 1.16 KB

Contents

require 'oj'

module LearnConfig
  class Me
    attr_accessor :response, :id, :first_name, :last_name, :full_name,
                  :username, :email, :github_gravatar, :github_uid, :data,
                  :silent_output

    def initialize(response, silent_output: false)
      @response      = response
      @silent_output = silent_output

      parse!
    end

    def parse!
      if response.status == 200
        self.data = Oj.load(response.body, symbol_keys: true)

        populate_attributes!
      elsif silent_output == false
        case response.status
        when 401
          puts "It seems your OAuth token is incorrect. Please re-run config with: learn reset"
          exit
        when 500
          puts "Something went wrong. Please try again."
          exit
        else
          puts "Something went wrong. Please try again."
          exit
        end
      end

      self
    end

    private

    def populate_attributes!
      data.each do |attribute, value|
        if !self.respond_to?(attribute)
          class << self
            attr_accessor attribute
          end
        end

        self.send("#{attribute}=", value)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
learn-config-0.0.2 lib/learn_config/me.rb