Class: Rhaiker

Inherits:
Object
  • Object
show all
Includes:
Utils, XML_Parser
Defined in:
lib/rhaiker.rb,
lib/rhaiker/utils.rb,
lib/rhaiker/version.rb,
lib/rhaiker/xml_parser.rb,
lib/rhaiker/multipart_builder.rb

Overview

Builder of multipart/form-data.

Defined Under Namespace

Modules: Utils, VERSION, XML_Parser Classes: MultipartBuilder

Constant Summary collapse

BASE_ADDRESS =

Hatena::Haiku::API BaseURL

'http://h.hatena.ne.jp/api/'

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from XML_Parser

#parse_keyword, #parse_keywords, #parse_reply, #parse_status, #parse_timeline, #parse_user, #parse_users

Methods included from Utils

#create_request, #create_uri, #http_access, #parse_options

Constructor Details

#initializeRhaiker

:nodoc:



38
39
40
41
# File 'lib/rhaiker.rb', line 38

def initialize #:nodoc:
  @user_agent = 'rhaiker/' + VERSION::STRING
  @source = 'rhaiker'
end

Instance Attribute Details

#api_keyObject

Hatena::Haiku::API API-Key String



26
27
28
# File 'lib/rhaiker.rb', line 26

def api_key
  @api_key
end

#sourceObject

Hatena::Haiku::API ClientSource String



28
29
30
# File 'lib/rhaiker.rb', line 28

def source
  @source
end

#user_agentObject

HTTP-HEADER 'User-Agent' String



22
23
24
# File 'lib/rhaiker.rb', line 22

def user_agent
  @user_agent
end

#user_idObject

Hatena::UserID String



24
25
26
# File 'lib/rhaiker.rb', line 24

def user_id
  @user_id
end

Instance Method Details

#favorites_create(status_id) ⇒ Object

Description

add star for Hatena::Haiku::API

Params

status_id (target status_id)

Return

status (=> 'hoge', ...)

RelatedMethods

Utils#create_uri, Utils#create_request, Utils#http_access, XML_Parser#parse_status



538
539
540
541
542
543
544
545
546
547
# File 'lib/rhaiker.rb', line 538

def favorites_create(status_id)
  uri = create_uri(
    BASE_ADDRESS +
    'favorites/create/' +
    status_id.to_s + '.xml'
  )
  request = create_request(:post, uri, true)
  document = http_access(uri, request)
  return parse_status(document.root)
end

#favorites_destroy(status_id) ⇒ Object

Description

delete star for Hatena::Haiku::API

Params

status_id (target status_id)

Return

status => 'hoge', ...)

RelatedMethods

Utils#create_uri, Utils#create_request, Utils#http_access, XML_Parser#parse_status



566
567
568
569
570
571
572
573
574
575
# File 'lib/rhaiker.rb', line 566

def favorites_destroy(status_id)
  uri = create_uri(
    BASE_ADDRESS +
    'favorites/destroy/' +
    status_id.to_s + '.xml'
  )
  request = create_request(:post, uri, true)
  document = http_access(uri, request)
  return parse_status(document.root)
end

#friendship_create(user_id) ⇒ Object

Description

friend following for Hatena::Haiku::API

Params

user_id (target user_id)

Return

user (=> 'hoge', ...)

RelatedMethods

Utils#create_uri, Utils#create_request, Utils#http_access, XML_Parser#parse_user



482
483
484
485
486
487
488
489
490
491
# File 'lib/rhaiker.rb', line 482

def friendship_create(user_id)
  uri = create_uri(
    BASE_ADDRESS +
    'friendships/create/' +
    user_id + '.xml'
  )
  request = create_request(:post, uri, true)
  document = http_access(uri, request)
  return parse_user(document.root)
end

#friendship_destroy(user_id) ⇒ Object

Description

friend unfollowing for Hatena::Haiku::API

Params

user_id (target user_id)

Return

user (=> 'hoge', ...)

RelatedMethods

Utils#create_uri, Utils#create_request, Utils#http_access, XML_Parser#parse_user



510
511
512
513
514
515
516
517
518
519
# File 'lib/rhaiker.rb', line 510

def friendship_destroy(user_id)
  uri = create_uri(
    BASE_ADDRESS +
    'friendships/destroy/' +
    user_id + '.xml'
  )
  request = create_request(:post, uri, true)
  document = http_access(uri, request)
  return parse_user(document.root)
end

#get_album(keyword = nil) ⇒ Object

Description

get timeline(include picture-url) from Hatena::Haiku::API

Params

keyword (target keyword)

Return

timeline ([=> 12345, ..., ...])

RelatedMethods

Utils#create_uri, Utils#create_request, Utils#parse_options, Utils#http_access, XML_Parser#parse_timeline



173
174
175
176
177
178
179
180
# File 'lib/rhaiker.rb', line 173

def get_album(keyword = nil)
  uri_base = BASE_ADDRESS + 'statuses/album'
  uri_base += keyword ? "/#{keyword}.xml" : '.xml'
  uri = create_uri(uri_base)
  request = create_request(:get, uri)
  document = http_access(uri, request)
  return parse_timeline(document)
end

#get_followers(user_id = nil) ⇒ Object

Description

get followers from Hatena::Haiku::API

Params

user_id (target user_id)

Return

users ([=> 'hoge', ..., ...])

RelatedMethods

Utils#create_uri, Utils#create_request, Utils#http_access, XML_Parser#parse_users



255
256
257
258
259
260
261
262
# File 'lib/rhaiker.rb', line 255

def get_followers(user_id = nil)
  uri_base = BASE_ADDRESS + 'statuses/followers'
  uri_base += user_id ? "/#{user_id}.xml" : '.xml'
  uri = create_uri(uri_base)
  request = create_request(:get, uri, user_id.nil?)
  document = http_access(uri, request)
  return parse_users(document)
end

#get_friend(user_id) ⇒ Object

Description

get friend from Hatena::Haiku::API

Params

user_id (target user_id)

Return

user (=> 'hoge', ...)

RelatedMethods

Utils#create_uri, Utils#create_request, Utils#http_access, XML_Parser#parse_user



281
282
283
284
285
286
287
288
289
290
# File 'lib/rhaiker.rb', line 281

def get_friend(user_id)
  uri = create_uri(
    BASE_ADDRESS +
    'friendships/show/' +
    user_id + '.xml'
  )
  request = create_request(:get, uri)
  document = http_access(uri, request)
  return parse_user(document.root)
end

#get_friends(user_id = nil, options = nil) ⇒ Object

Description

get friends from Hatena::Haiku::API

Params

user_id (target user_id) options => => pagenum

Return

users ([=> 'hoge', ..., ...])

RelatedMethods

Utils#create_uri, Utils#create_request, Utils#http_access, XML_Parser#parse_users



228
229
230
231
232
233
234
235
236
# File 'lib/rhaiker.rb', line 228

def get_friends(user_id = nil, options = nil)
  uri_base = BASE_ADDRESS + 'statuses/friends'
  uri_base += user_id ? "/#{user_id}.xml" : '.xml'
  uri_base += parse_options(options) if options
  uri = create_uri(uri_base)
  request = create_request(:get, uri, user_id.nil?)
  document = http_access(uri, request)
  return parse_users(document)
end

#get_friends_timeline(user_id = nil, options = nil) ⇒ Object

Description

get friends_timeline from Hatena::Haiku::API

Params

user_id (target user_id) [, options (=> 20, [...])]

Return

timeline ([=> 12345, ..., ...])

RelatedMethods

Utils#create_uri, Utils#create_request, Utils#parse_options, Utils#http_access, XML_Parser#parse_timeline,



86
87
88
89
90
91
92
93
94
# File 'lib/rhaiker.rb', line 86

def get_friends_timeline(user_id = nil, options = nil)
  uri_base = BASE_ADDRESS + 'statuses/friends_timeline'
  uri_base += user_id ? "/#{user_id}.xml" : '.xml'
  uri_base += parse_options(options) if options
  uri = create_uri(uri_base)
  request = create_request(:get, uri, user_id.nil?)
  document = http_access(uri, request)
  return parse_timeline(document)
end

#get_hot_keywordsObject

Description

get hot-keyword from Hatena::Haiku::API

Return

keywords ([=> 'hoge', ..., ...])

RelatedMethods

Utils#create_uri, Utils#create_request, Utils#http_access, XML_Parser#parse_keywords



306
307
308
309
310
311
# File 'lib/rhaiker.rb', line 306

def get_hot_keywords
  uri = create_uri(BASE_ADDRESS + 'keywords/hot.xml')
  request = create_request(:get, uri)
  document = http_access(uri, request)
  return parse_keywords(document)
end

#get_keyword(keyword) ⇒ Object

Description

get keyword from Hatena::Haiku::API

Params

keyword (target keyword)

Return

keyword (=> 'hoge', ...)

RelatedMethods

Utils#create_uri, Utils#create_request, Utils#http_access, XML_Parser#parse_keyword



383
384
385
386
387
388
389
390
391
392
# File 'lib/rhaiker.rb', line 383

def get_keyword(keyword)
  uri = create_uri(
    BASE_ADDRESS +
    'keywords/show/' +
    keyword + '.xml'
  )
  request = create_request(:get, uri)
  document = http_access(uri, request)
  return parse_keyword(document.root)
end

#get_keyword_list(options = nil) ⇒ Object

Description

get keyword-list from Hatena::Haiku::API

Params

options => => pagenum

Return

keywords ([=> 'hoge', ..., ...])

RelatedMethods

Utils#create_uri, Utils#create_request, Utils#parse_options, Utils#http_access, XML_Parser#parse_keywords



331
332
333
334
335
336
337
338
# File 'lib/rhaiker.rb', line 331

def get_keyword_list(options = nil)
  uri_base = BASE_ADDRESS + 'keywords/list.xml'
  uri_base += parse_options(options) if options
  uri = create_uri(uri_base)
  request = create_request(:get, uri)
  document = http_access(uri, request)
  return parse_keywords(document)
end

#get_keyword_timeline(keyword, options = nil) ⇒ Object

Description

get keyword_timeline from Hatena::Haiku::API

Params

keywrod (target keyword) [, options (=> 20, [...])]

Return

timeline ([=> 12345, ..., ...])

RelatedMethods

Utils#create_uri, Utils#create_request, Utils#parse_options, Utils#http_access, XML_Parser#parse_timeline



144
145
146
147
148
149
150
151
152
153
# File 'lib/rhaiker.rb', line 144

def get_keyword_timeline(keyword, options = nil)
  uri_base = BASE_ADDRESS +
    'statuses/keyword_timeline/' +
    keyword + '.xml'
  uri_base += parse_options(options) if options
  uri = create_uri(uri_base)
  request = create_request(:get, uri)
  document = http_access(uri, request)
  return parse_timeline(document)
end

#get_keywords(user_id = nil) ⇒ Object

Description

get following keywords from Hatena::Haiku::API

Params

user_id (target user_id)

Return

keywords ([=> 'hoge', ..., ...])

RelatedMethods

Utils#create_uri Utils#create_request Utils#http_access XML_Parser#parse_keywords



357
358
359
360
361
362
363
364
# File 'lib/rhaiker.rb', line 357

def get_keywords(user_id = nil)
  uri_base = BASE_ADDRESS + 'statuses/keywords'
  uri_base += user_id ? "/#{user_id}.xml" : '.xml'
  uri = create_uri(uri_base)
  request = create_request(:get, uri, user_id.nil?)
  document = http_access(uri, request)
  return parse_timeline(document)
end

#get_public_timelineObject

Description

get public-timeline from Hatena::Haiku::API

Return

timeline ([=> 12345, ..., ...])

RelatedMethods

Utils#create_uri, Utils#create_request, Utils#http_access, XML_Parser#parse_timeline



57
58
59
60
61
62
63
64
65
# File 'lib/rhaiker.rb', line 57

def get_public_timeline
  uri = create_uri(
    BASE_ADDRESS + 
    'statuses/public_timeline.xml'
  )
  request = create_request(:get, uri)
  document = http_access(uri, request)
  return parse_timeline(document)
end

#get_status(status_id) ⇒ Object

Description

get status from Hatena::Haiku::API

Params

status_id (target status_id)

Return

status (=> 12345, ...)

RelatedMethods

Utils#create_uri, Utils#create_request, Utils#http_access, XML_Parser#parse_status



199
200
201
202
203
204
205
206
207
208
# File 'lib/rhaiker.rb', line 199

def get_status(status_id)
  uri = create_uri(
    BASE_ADDRESS +
    'statuses/show/' +
    status_id.to_s + '.xml'
  )
  request = create_request(:get, uri)
  document = http_access(uri, request)
  return parse_status(document.root)
end

#get_user_timeline(user_id = nil, options = nil) ⇒ Object

Description

get user_timeline from Hatena::Haiku::API

Params

user_id (target user_id) [, options (=> 20, [...])]

Return

timeline ([=> 12345, ..., ...])

RelatedMethods

Utils#create_uri, Utils#create_request, Utils#http_access, Utils#parse_options, XML_Parser#parse_timeline,



115
116
117
118
119
120
121
122
123
# File 'lib/rhaiker.rb', line 115

def get_user_timeline(user_id = nil, options = nil)
  uri_base = BASE_ADDRESS + 'statuses/user_timeline'
  uri_base += user_id ? "/#{user_id}.xml" : '.xml'
  uri_base += parse_options(options) if options
  uri = create_uri(uri_base)
  request = create_request(:get, uri, user_id.nil?)
  document = http_access(uri, request)
  return parse_timeline(document)
end

#keyword_create(keyword) ⇒ Object

Description

following keyword for Hatena::Haiku::API

Params

keyword (target keyword)

Return

keyword (=> 'hoge', ...

RelatedMethods

Utils#create_uri, Utils#create_request, Utils#http_access, XML_Parser#parse_keyword



594
595
596
597
598
599
600
601
602
603
# File 'lib/rhaiker.rb', line 594

def keyword_create(keyword)
  uri = create_uri(
    BASE_ADDRESS +
    'keywords/create/' +
    keyword + '.xml'
  )
  request = create_request(:post, uri, true)
  document = http_access(uri, request)
  return parse_keyword(document.root)
end

#keyword_destroy(keyword) ⇒ Object

Description

unfollowing keyword for Hatena::Haiku::API

Params

keyword (target keyword)

Return

keyword (=> 'hoge', ...)

RelatedMethods

Utils#create_uri, Utils#create_request, Utils#http_access, XML_Parser#parse_keyword



622
623
624
625
626
627
628
629
630
631
# File 'lib/rhaiker.rb', line 622

def keyword_destroy(keyword)
  uri = create_uri(
    BASE_ADDRESS +
    'keywords/destroy/' +
    keyword + '.xml'
  )
  request = create_request(:post, uri, true)
  document = http_access(uri, request)
  return parse_keyword(document.root)
end

#keyword_relation_create(word1, word2) ⇒ Object

Description

create relation word1 and word2 for Hatena::Haiku::API

Params

word1 (target word), word2 (target word)

Return

keyword (=> 'hoge', ...)

RelatedMethods

Utils#create_uri, Utils#create_request, Utils#http_access, XML_Parser#parse_keyword



651
652
653
654
655
656
657
658
659
660
661
# File 'lib/rhaiker.rb', line 651

def keyword_relation_create(word1, word2)
  uri = create_uri(
    BASE_ADDRESS +
    'keywords/relation/create.xml' +
    '?word1=' + word1 +
    '&word2=' + word2
  )
  request = create_request(:post, uri, true)
  document = http_access(uri, request)
  return parse_keyword(document.root)
end

#keyword_relation_destroy(word1, word2) ⇒ Object

Description

delete relation word1 and word2 for Hatena::Haiku::API

Params

word1 (target word), word2 (rarget word)

Return

keyword (=> 'hoge', ...)

RelatedMethods

Utils#create_uri, Utils#create_request, Utils#http_access, XML_Parser#parse_keyword



681
682
683
684
685
686
687
688
689
690
691
# File 'lib/rhaiker.rb', line 681

def keyword_relation_destroy(word1, word2)
  uri = create_uri(
    BASE_ADDRESS +
    'keywords/relation/destroy.xml' +
    '?word1=' + word1 +
    '&word2=' + word2
  )
  request = create_request(:post, uri, true)
  document = http_access(uri, request)
  return parse_keyword(document.root)
end

#status_destroy(status_id) ⇒ Object

Description

delete status for Hatena::Haiku::API

Params

status_id (target status_id)

Return

status (=> 'hoge', ...)

RelationMethods

create_uri, create_request, http_access, parse_status



454
455
456
457
458
459
460
461
462
463
# File 'lib/rhaiker.rb', line 454

def status_destroy(status_id)
  uri = create_uri(
    BASE_ADDRESS +
    'statuses/destroy/' +
    status_id.to_s + '.xml'
  )
  request = create_request(:post, uri, true)
  document = http_access(uri, request)
  return parse_status(document.root)
end

#status_update(options) ⇒ Object

Description

update status for Hatena::Haiku::API

Params

options (=> 'hoge', ...]

Return

status (=> 'hoge', ...)

RelatedMethods

Utils#create_uri, Utils#create_request, Utils#parse_options, Utils#http_access, XML_Parser#parse_status

Notes

To upload Image File, set File object (or object has 'read' and 'path' methods) to options.



415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
# File 'lib/rhaiker.rb', line 415

def status_update(options)
  uri_base = BASE_ADDRESS + 'statuses/update.xml'
  uri_base += parse_options(options)
  uri_base += '&source=' + @source
  uri = create_uri(uri_base)
  request = create_request(:post, uri, true)
  document = nil
  if options[:file]
    # Upload Image File
    builder = MultipartBuilder.new
    builder.update(options)
    builder.store_file(:file, options[:file])
    body = builder.build
    request['Content-Length'] = body.length.to_s
    request['Content-Type'] = "multipart/form-data; boundary=#{builder.boundary}"
    document = http_access(uri, request, body)
  else
    document = http_access(uri, request)
  end
  return parse_status(document.root)
end