naver 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.rdoc +17 -0
- data/Manifest +8 -0
- data/README.rdoc +56 -0
- data/Rakefile +15 -0
- data/init.rb +1 -0
- data/lib/naver/base.rb +47 -0
- data/lib/naver.rb +42 -0
- data/naver.gemspec +34 -0
- data/rakefile +15 -0
- metadata +78 -0
data/CHANGELOG.rdoc
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
== 0.2.1, release 2008-12-04
|
2
|
+
|
3
|
+
* converted class Naver to module Naver ("Naver.new" is no longer available) / 클래스에서 모듈로 구조 변경 ("Naver.new"는 더 이상 사용 불가)
|
4
|
+
* implemented method missing to use search target name as method / 메소드 미싱을 구현하여 검색 타겟을 메소드로 호출할 수 있게 함
|
5
|
+
* added abbreviation hash for passing arguments / 검색 조건 넘길 때 약어로 넘길 수 있게 함
|
6
|
+
* added Korean parts of readme and changelog files / readme와 changelog에 한글 부분 추가
|
7
|
+
* distributed on rubyforge.org as well (originally only available on github) / 루비포지에서도 배포 (원래는 github에만 있었음)
|
8
|
+
|
9
|
+
== 0.1.1, release 2008-11-23
|
10
|
+
|
11
|
+
* primitive 'request' method implemented / 원시 'request' 메소드 구현
|
12
|
+
* added init.rb / init.rb 파일 추가
|
13
|
+
|
14
|
+
== 0.0.1, release 2008-11-22
|
15
|
+
|
16
|
+
* first commit / 첫 번째 커밋
|
17
|
+
* no classes, methods implemented / 아직 아무 것도 안 했음
|
data/Manifest
ADDED
data/README.rdoc
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
= Naver 0.2.1
|
2
|
+
|
3
|
+
Ruby gem for using Naver OpenAPI (http://dev.naver.com/openapi/tutorial).
|
4
|
+
네이버 OpenAPI를 위한 루비젬입니다.
|
5
|
+
|
6
|
+
|
7
|
+
== IMPORTANT NOTE / 중요 공지
|
8
|
+
|
9
|
+
Since this is still in development stage, every method or usage may be deprecated in future versions without any prior notice. (I will try to keep track of changes in CHANGELOG.rdoc, though.)
|
10
|
+
Although I read the Rational Versioning Policy, I would change the middle number when some old codes might not work well with updates since Naver gem is still in development stage. When this gem considered stable, I will follow the RVP.
|
11
|
+
현재 초기 작업 단계이기 때문에, 사전 공지 없이 모든 메소드나 사용법이 미래 버전에서는 사용하게 없게 될 수도 있습니다. (물론 CHANGELOG.rdoc에 변화 사항들을 기록하려고 노력은 하겠습니다만)
|
12
|
+
Rational Versioning Policy에 대해서 읽기는 했습니다만, 역시 아직 초기 개발 단계라서 과거 버전과 compatible하지 않은 버전을 릴리즈할 경우에 버전의 첫째 자리가 아닌 중간 자리 숫자를 변경할 생각입니다.
|
13
|
+
|
14
|
+
|
15
|
+
== Install / 설치법
|
16
|
+
|
17
|
+
gem sources -a http://gems.github.com
|
18
|
+
gem install oksure-naver
|
19
|
+
|
20
|
+
|
21
|
+
== Usage / 사용법
|
22
|
+
|
23
|
+
Before using this gem, you need to get your own API key. To obtain your API key, see http://dev.naver.com/openapi/register.
|
24
|
+
이 젬을 사용하기 전에 API 키를 발급 받으셔야 합니다. API 키 발급을 위해서는 http://dev.naver.com/openapi/register 링크를 참고해 주세요.
|
25
|
+
|
26
|
+
require 'naver'
|
27
|
+
naver = Naver::Base.new(api_key) ### create a naver client / 네이버 클라이언트를 생성합니다
|
28
|
+
naver.request("kin", "go", {:display => "5", :start => "1", :sort => "sim"}) ### return root node as libxml node / libxml 형식의 노드로 루트 노드를 반환합니다
|
29
|
+
naver.kin("go", {:display => "5", :start => "1", :sort => "sim"}) ### return root node as libxml node / libxml 형식의 노드로 루트 노드를 반환합니다
|
30
|
+
naver.kin("go", {:d => "5", :start => "5", :so => "sim"}) ### It's possible to use abbreviation for each option / 검색 옵션을 넘길 때 약어를 사용 가능합니다
|
31
|
+
|
32
|
+
|
33
|
+
== Abbreviation List / 약어 목록
|
34
|
+
|
35
|
+
The full list of abbreviation codes is the following. (You can still use full name of each parameter.)
|
36
|
+
약어 전체 목록을 아래에 정리하였습니다. (약어를 쓰지 않으셔도 작동합니다.)
|
37
|
+
|
38
|
+
d = display
|
39
|
+
st = start
|
40
|
+
so = sort
|
41
|
+
f = filter
|
42
|
+
p = payment
|
43
|
+
dt = d_titl
|
44
|
+
da = d_auth
|
45
|
+
dcon = d_cont
|
46
|
+
di = d_isbn
|
47
|
+
dp = d_publ
|
48
|
+
ddaf = d_dafr
|
49
|
+
ddat = d_dato
|
50
|
+
dcat = d_catg
|
51
|
+
|
52
|
+
|
53
|
+
== License
|
54
|
+
|
55
|
+
Copyright:: Copyright (c) 2008 Hyunwoo Park <hwpark@oksurerails.com>
|
56
|
+
License:: MIT <http://www.opensource.org/licenses/mit-license.php>
|
data/Rakefile
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake'
|
3
|
+
require 'echoe'
|
4
|
+
|
5
|
+
Echoe.new('naver', '0.2.1') do |p|
|
6
|
+
p.description = "Ruby Gem for Naver OpenAPI"
|
7
|
+
p.url = "http://oksurerails.com/naver"
|
8
|
+
p.author = "Hyunwoo Park"
|
9
|
+
p.email = "hwpark@oksurerails.com"
|
10
|
+
p.ignore_pattern = ["tmp/*", "script/*"]
|
11
|
+
p.development_dependencies = ["libxml-ruby"]
|
12
|
+
end
|
13
|
+
|
14
|
+
Dir["#{File.dirname(__FILE__)}/tasks/*.rake"].sort.each { |ext| load ext }
|
15
|
+
|
data/init.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "naver"
|
data/lib/naver/base.rb
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
module Naver
|
2
|
+
include LibXML
|
3
|
+
|
4
|
+
class Base
|
5
|
+
|
6
|
+
attr_accessor :doc, :raw_xml
|
7
|
+
|
8
|
+
# Replace this API key with your own (see http://dev.naver.com/openapi/register)
|
9
|
+
def initialize(key=nil)
|
10
|
+
@key = key
|
11
|
+
@host = 'http://openapi.naver.com'
|
12
|
+
@api = '/search'
|
13
|
+
end
|
14
|
+
|
15
|
+
def method_missing(target, query, params={})
|
16
|
+
if METHOD_LIST.include?(target.to_s)
|
17
|
+
request(target, query, params)
|
18
|
+
else
|
19
|
+
raise NoMethod
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
# Takes a Naver API method name and set of parameters; returns an libxml object with the response
|
24
|
+
def request(target, query, params={})
|
25
|
+
response = http_get(request_url(target, query, params))
|
26
|
+
parser, parser.string = LibXML::XML::Parser.new, response
|
27
|
+
@raw_xml = parser.parse
|
28
|
+
@doc = @raw_xml.root
|
29
|
+
end
|
30
|
+
|
31
|
+
# Takes a Naver API method name and set of parameters; returns the correct URL for the REST API.
|
32
|
+
def request_url(target, query, params={})
|
33
|
+
url = "#{@host}#{@api}?key=#{@key}&target=#{target}&query=#{query}"
|
34
|
+
params.each do |key, value|
|
35
|
+
key = ABBREVIATION[key] unless ABBREVIATION[key].nil?
|
36
|
+
url += "&#{key}=" + CGI::escape(value)
|
37
|
+
end unless params.nil?
|
38
|
+
url
|
39
|
+
end
|
40
|
+
|
41
|
+
# Does an HTTP GET on a given URL and returns the response body
|
42
|
+
def http_get(url)
|
43
|
+
Net::HTTP.get_response(URI.parse(url)).body.to_s
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
end
|
data/lib/naver.rb
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
# = Naver
|
2
|
+
# An easy interface to the Naver OpenAPI (http://dev.naver.com/openapi/tutorial). By Hyunwoo Park.
|
3
|
+
#
|
4
|
+
# Author:: Hyunwoo Park <hwpark@oksurerails.com>
|
5
|
+
# Copyright:: Copyright (c) 2008 Hyunwoo Park <hwpark@oksurerails.com>
|
6
|
+
# License:: MIT <http://www.opensource.org/licenses/mit-license.php>
|
7
|
+
#
|
8
|
+
# USAGE:
|
9
|
+
# require 'naver'
|
10
|
+
# naver = Naver.new(api_key) ### create a naver client
|
11
|
+
# naver.request("kin", "go", {:display => "5", :start => "1", :sort => "sim"}) ### return root node as libxml node
|
12
|
+
#
|
13
|
+
# To Do:
|
14
|
+
# local search implementation
|
15
|
+
|
16
|
+
require "cgi"
|
17
|
+
require "net/http"
|
18
|
+
require "libxml"
|
19
|
+
|
20
|
+
$:.unshift(File.join(File.dirname(__FILE__)))
|
21
|
+
require "naver/base"
|
22
|
+
|
23
|
+
module Naver
|
24
|
+
class NoMethod < StandardError; end
|
25
|
+
|
26
|
+
# Searches that returns results in RSS format
|
27
|
+
RSS_LIST = %w[kin video image doc book book_adv local shop encyc krdic endic jpdic blog cafe cafearticle webkr news]
|
28
|
+
|
29
|
+
# Searches that returns results in Non-RSS but XML format
|
30
|
+
XML_LIST = %w[rank rankthem recmd adult errata shortcut]
|
31
|
+
|
32
|
+
# Whole available search list
|
33
|
+
METHOD_LIST = RSS_LIST.concat(XML_LIST)
|
34
|
+
|
35
|
+
# Abbreviation for passing options
|
36
|
+
ABBREVIATION = {:d => :display, :st => :start, :so => :sort, :f => :filter, :p => :payment,
|
37
|
+
:dt => :d_titl, :da => :d_auth, :dco => :d_cont, :di => :d_isbn, :dp => :d_publ,
|
38
|
+
:ddaf => :d_dafr, :ddat => :d_dato, :dca => :d_catg}
|
39
|
+
|
40
|
+
SourceName = 'navergem'
|
41
|
+
|
42
|
+
end
|
data/naver.gemspec
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.name = %q{naver}
|
5
|
+
s.version = "0.2.1"
|
6
|
+
|
7
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
|
+
s.authors = ["Hyunwoo Park"]
|
9
|
+
s.date = %q{2008-12-04}
|
10
|
+
s.description = %q{Ruby Gem for Naver OpenAPI}
|
11
|
+
s.email = %q{hwpark@oksurerails.com}
|
12
|
+
s.extra_rdoc_files = ["CHANGELOG.rdoc", "lib/naver/base.rb", "lib/naver.rb", "README.rdoc"]
|
13
|
+
s.files = ["CHANGELOG.rdoc", "init.rb", "lib/naver/base.rb", "lib/naver.rb", "Manifest", "rakefile", "README.rdoc", "Rakefile", "naver.gemspec"]
|
14
|
+
s.has_rdoc = true
|
15
|
+
s.homepage = %q{http://oksurerails.com/naver}
|
16
|
+
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Naver", "--main", "README.rdoc"]
|
17
|
+
s.require_paths = ["lib"]
|
18
|
+
s.rubyforge_project = %q{naver}
|
19
|
+
s.rubygems_version = %q{1.3.1}
|
20
|
+
s.summary = %q{Ruby Gem for Naver OpenAPI}
|
21
|
+
|
22
|
+
if s.respond_to? :specification_version then
|
23
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
24
|
+
s.specification_version = 2
|
25
|
+
|
26
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
27
|
+
s.add_development_dependency(%q<libxml-ruby>, [">= 0"])
|
28
|
+
else
|
29
|
+
s.add_dependency(%q<libxml-ruby>, [">= 0"])
|
30
|
+
end
|
31
|
+
else
|
32
|
+
s.add_dependency(%q<libxml-ruby>, [">= 0"])
|
33
|
+
end
|
34
|
+
end
|
data/rakefile
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake'
|
3
|
+
require 'echoe'
|
4
|
+
|
5
|
+
Echoe.new('naver', '0.2.1') do |p|
|
6
|
+
p.description = "Ruby Gem for Naver OpenAPI"
|
7
|
+
p.url = "http://oksurerails.com/naver"
|
8
|
+
p.author = "Hyunwoo Park"
|
9
|
+
p.email = "hwpark@oksurerails.com"
|
10
|
+
p.ignore_pattern = ["tmp/*", "script/*"]
|
11
|
+
p.development_dependencies = ["libxml-ruby"]
|
12
|
+
end
|
13
|
+
|
14
|
+
Dir["#{File.dirname(__FILE__)}/tasks/*.rake"].sort.each { |ext| load ext }
|
15
|
+
|
metadata
ADDED
@@ -0,0 +1,78 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: naver
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Hyunwoo Park
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2008-12-04 00:00:00 -08:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: libxml-ruby
|
17
|
+
type: :development
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: "0"
|
24
|
+
version:
|
25
|
+
description: Ruby Gem for Naver OpenAPI
|
26
|
+
email: hwpark@oksurerails.com
|
27
|
+
executables: []
|
28
|
+
|
29
|
+
extensions: []
|
30
|
+
|
31
|
+
extra_rdoc_files:
|
32
|
+
- CHANGELOG.rdoc
|
33
|
+
- lib/naver/base.rb
|
34
|
+
- lib/naver.rb
|
35
|
+
- README.rdoc
|
36
|
+
files:
|
37
|
+
- CHANGELOG.rdoc
|
38
|
+
- init.rb
|
39
|
+
- lib/naver/base.rb
|
40
|
+
- lib/naver.rb
|
41
|
+
- Manifest
|
42
|
+
- rakefile
|
43
|
+
- README.rdoc
|
44
|
+
- Rakefile
|
45
|
+
- naver.gemspec
|
46
|
+
has_rdoc: true
|
47
|
+
homepage: http://oksurerails.com/naver
|
48
|
+
post_install_message:
|
49
|
+
rdoc_options:
|
50
|
+
- --line-numbers
|
51
|
+
- --inline-source
|
52
|
+
- --title
|
53
|
+
- Naver
|
54
|
+
- --main
|
55
|
+
- README.rdoc
|
56
|
+
require_paths:
|
57
|
+
- lib
|
58
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: "0"
|
63
|
+
version:
|
64
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: "1.2"
|
69
|
+
version:
|
70
|
+
requirements: []
|
71
|
+
|
72
|
+
rubyforge_project: naver
|
73
|
+
rubygems_version: 1.3.1
|
74
|
+
signing_key:
|
75
|
+
specification_version: 2
|
76
|
+
summary: Ruby Gem for Naver OpenAPI
|
77
|
+
test_files: []
|
78
|
+
|