Sha256: 38967dcb66a7607a2a8761fbabfa0f7d01e7e00526bc486eb65297602caf4e01

Contents?: true

Size: 1.9 KB

Versions: 2

Compression:

Stored size: 1.9 KB

Contents

module Quaderno
  require 'httparty'
  require 'json'
  
  class Base < OpenStruct
    include HTTParty
    include Quaderno::Exceptions
    include Quaderno::Behavior::Crud    
    
    base_uri 'https://quadernoapp.com/'
    @@auth_token = nil 
    @@subdomain = nil
    @@rate_limit_info = nil
      
    def self.api_model(klass)
      instance_eval <<-END
        def api_model
          #{klass}
        end
      END
      class_eval <<-END
        def api_model
          #{klass}
        end
      END
    end
    
    #Default way to configure the authenticata data
    def self.configure
      yield self
    end
     
    def self.auth_token=(auth_token)
      @@auth_token = auth_token
    end
    
    def self.subdomain=(subdomain)
      @@subdomain = subdomain
    end
    
    def self.authorization(auth_token)
      begin
        party_response = get("/subdomain/api/v1/authorization.json", basic_auth: { username: auth_token })
        return  JSON::parse party_response.body
      rescue Errno::ECONNREFUSED
        return false
      end
    end

    #Check the connection
    def self.ping
      begin
        party_response = get("/#{ subdomain }/api/v1/ping.json", basic_auth: { username: auth_token })
      rescue Errno::ECONNREFUSED
        return false
      end
      true
    end
    
    #Returns the rate limit information: limit and remaining requests
    def self.rate_limit_info
      party_response = get("/#{ subdomain }/api/v1/ping.json", basic_auth: { username: auth_token })
      @@rate_limit_info = { limit: party_response.headers["x-ratelimit-limit"].to_i, remaining: party_response.headers["x-ratelimit-remaining"].to_i }
    end
    
    
    private 
    def self.auth_token
      @@auth_token
    end
    
    def self.subdomain
      @_subdomain = @@subdomain
    end
    #Set or returns the model path for the url
    def self.api_path(api_path = nil)
      @_api_path ||= api_path
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
quaderno-1.2.1 lib/quaderno-ruby/base.rb
quaderno-1.2.0 lib/quaderno-ruby/base.rb