Class: Tjplurk::API

Inherits:
Object
  • Object
show all
Defined in:
lib/tjplurk/api.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(consumer_key = nil, consumer_secret = nil, token_key = nil, token_secret = nil) ⇒ API

Returns a new instance of API.



12
13
14
15
16
17
18
19
# File 'lib/tjplurk/api.rb', line 12

def initialize(consumer_key = nil, consumer_secret = nil, token_key = nil, token_secret = nil)
  if consumer_key.nil? || consumer_secret.nil?
    raise 'Consumer key & secret are not found.' unless File.exist? Tjplurk::API.config_file_path
    consumer_key, consumer_secret, token_key, token_secret = File.readlines(Tjplurk::API.config_file_path).map(&:strip!).delete_if(&:empty?)
  end
  @consumer = OAuth::Consumer.new(consumer_key, consumer_secret, Tjplurk::OAUTH_OPTIONS)
  @access_token = OAuth::AccessToken.new(@consumer, token_key, token_secret) if token_key && token_secret
end

Instance Attribute Details

#access_tokenObject (readonly)

Returns the value of attribute access_token.



6
7
8
# File 'lib/tjplurk/api.rb', line 6

def access_token
  @access_token
end

#consumerObject (readonly)

Returns the value of attribute consumer.



6
7
8
# File 'lib/tjplurk/api.rb', line 6

def consumer
  @consumer
end

#request_tokenObject (readonly)

Returns the value of attribute request_token.



6
7
8
# File 'lib/tjplurk/api.rb', line 6

def request_token
  @request_token
end

Class Method Details

.config_file_pathObject



8
9
10
# File 'lib/tjplurk/api.rb', line 8

def self.config_file_path
  ENV['TJPLURK_FILE'] || File.join(ENV['HOME'], '.tjplurk')
end

Instance Method Details

#real_timeObject



29
30
31
32
33
34
35
36
37
38
# File 'lib/tjplurk/api.rb', line 29

def real_time
  ret = request('/APP/Realtime/getUserChannel')
  comet_server = ret['comet_server']
  loop do
    uri = URI(comet_server)
    json = JSON.parse(Net::HTTP.get(uri)[/CometChannel.scriptCallback\((.*)\);/m, 1])
    json['data'].each{ |plurk| yield plurk } if json['data']
    comet_server.sub!(/(offset=)\d+/, "\\1#{json['new_offset']}")
  end
end

#request(path, body = '', headers = {}) ⇒ Object



25
26
27
# File 'lib/tjplurk/api.rb', line 25

def request path, body = '', headers = {}
  JSON.parse(@access_token.post(path, body, headers).body)
end