naver-sdk 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: cd7d3ae9b6a7d99514bb6b5d850e8b9cb898f47f
4
+ data.tar.gz: e8cb9a0cef676cf66ac4522f4b9a380ede040316
5
+ SHA512:
6
+ metadata.gz: 06efe4d35ccb769031e29ba89c55a3b76b0283aa5849854a61270d8d8564e8b08ea10f1ee5648cdf13ecac323165e585d1c9639669c058ef34fd3985cfb67770
7
+ data.tar.gz: bdaa29f8b2e032e634306e6a1307d503a330e4e17d8bf5b6feb57bda2e11616c7ed630c792bc9f3405cc4fca286f8b2b860dde086322ce057fc93b0db6107c58
data/.gitignore ADDED
@@ -0,0 +1,9 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
data/.travis.yml ADDED
@@ -0,0 +1,21 @@
1
+ sudo: false
2
+ language: ruby
3
+
4
+ cache:
5
+ bundler: true
6
+
7
+ rvm:
8
+ - 2.2.6
9
+ - 2.3.3
10
+ - 2.4.0
11
+ - jruby
12
+ - rbx-2
13
+ - ruby-head
14
+
15
+ matrix:
16
+ allow_failures:
17
+ - rvm: jruby
18
+ - rvm: rbx-2
19
+ - rvm: ruby-head
20
+
21
+ before_install: gem install bundler -v 1.15.1
@@ -0,0 +1,74 @@
1
+ # Contributor Covenant Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ In the interest of fostering an open and welcoming environment, we as
6
+ contributors and maintainers pledge to making participation in our project and
7
+ our community a harassment-free experience for everyone, regardless of age, body
8
+ size, disability, ethnicity, gender identity and expression, level of experience,
9
+ nationality, personal appearance, race, religion, or sexual identity and
10
+ orientation.
11
+
12
+ ## Our Standards
13
+
14
+ Examples of behavior that contributes to creating a positive environment
15
+ include:
16
+
17
+ * Using welcoming and inclusive language
18
+ * Being respectful of differing viewpoints and experiences
19
+ * Gracefully accepting constructive criticism
20
+ * Focusing on what is best for the community
21
+ * Showing empathy towards other community members
22
+
23
+ Examples of unacceptable behavior by participants include:
24
+
25
+ * The use of sexualized language or imagery and unwelcome sexual attention or
26
+ advances
27
+ * Trolling, insulting/derogatory comments, and personal or political attacks
28
+ * Public or private harassment
29
+ * Publishing others' private information, such as a physical or electronic
30
+ address, without explicit permission
31
+ * Other conduct which could reasonably be considered inappropriate in a
32
+ professional setting
33
+
34
+ ## Our Responsibilities
35
+
36
+ Project maintainers are responsible for clarifying the standards of acceptable
37
+ behavior and are expected to take appropriate and fair corrective action in
38
+ response to any instances of unacceptable behavior.
39
+
40
+ Project maintainers have the right and responsibility to remove, edit, or
41
+ reject comments, commits, code, wiki edits, issues, and other contributions
42
+ that are not aligned to this Code of Conduct, or to ban temporarily or
43
+ permanently any contributor for other behaviors that they deem inappropriate,
44
+ threatening, offensive, or harmful.
45
+
46
+ ## Scope
47
+
48
+ This Code of Conduct applies both within project spaces and in public spaces
49
+ when an individual is representing the project or its community. Examples of
50
+ representing a project or community include using an official project e-mail
51
+ address, posting via an official social media account, or acting as an appointed
52
+ representative at an online or offline event. Representation of a project may be
53
+ further defined and clarified by project maintainers.
54
+
55
+ ## Enforcement
56
+
57
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
58
+ reported by contacting the project team at kimsuelim@gmail.com. All
59
+ complaints will be reviewed and investigated and will result in a response that
60
+ is deemed necessary and appropriate to the circumstances. The project team is
61
+ obligated to maintain confidentiality with regard to the reporter of an incident.
62
+ Further details of specific enforcement policies may be posted separately.
63
+
64
+ Project maintainers who do not follow or enforce the Code of Conduct in good
65
+ faith may face temporary or permanent repercussions as determined by other
66
+ members of the project's leadership.
67
+
68
+ ## Attribution
69
+
70
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
71
+ available at [http://contributor-covenant.org/version/1/4][version]
72
+
73
+ [homepage]: http://contributor-covenant.org
74
+ [version]: http://contributor-covenant.org/version/1/4/
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "https://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in naver-sdk.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2017 Surim Kim
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,530 @@
1
+ # NAVER SDK for Ruby
2
+
3
+ [![Build Status](https://travis-ci.org/kimsuelim/naver-sdk-ruby.svg?branch=master)](https://travis-ci.org/kimsuelim/naver-sdk-ruby)
4
+ [![Coverage Status](https://coveralls.io/repos/kimsuelim/naver-sdk-ruby/badge.svg?branch=master)](https://coveralls.io/r/kimsuelim/naver-sdk-ruby?branch=master)
5
+ [![Gem Version](https://badge.fury.io/rb/naver-sdk.svg)](http://badge.fury.io/rb/naver-sdk)
6
+
7
+ A ruby client for the NAVER API. [https://developers.naver.com](https://developers.naver.com)
8
+ ## Installation
9
+
10
+ Add this line to your application's Gemfile:
11
+
12
+ ```ruby
13
+ gem "naver-sdk"
14
+ ```
15
+
16
+ And then execute:
17
+
18
+ $ bundle
19
+
20
+ Or install it yourself as:
21
+
22
+ $ gem install naver-sdk
23
+
24
+ ## Usage
25
+
26
+ ### Configuration
27
+
28
+ Before making requests, you must configure the gem with your client ID
29
+ and secret. If you are using Rails, you can do this in an initializer.
30
+
31
+ 요청하기 전에 애플리케이션 등록 시 발급받은 Client ID와 Client Secret 값을 설정해주셔야 활용 가능합니다.
32
+ Rails를 사용하고 있다면 initializer에서 할 수 있습니다.
33
+
34
+ ```ruby
35
+ Naver.configure do |config|
36
+ config.client_id = "YOUR CLIENT ID"
37
+ config.client_secret = "YOUR CLIENT SECRET"
38
+ config.redirect_uri = "https://your-application.com/oauth/callback"
39
+ config.timeout = 10
40
+ config.debug = false
41
+ end
42
+ ```
43
+
44
+ ## 지도
45
+
46
+ ### 주소 -> 좌표 변환
47
+
48
+ ```ruby
49
+ response = Naver::Map.geocode(query: "불정로 6")
50
+ # => [#<Naver::ObjectifiedHash:70284981985920 {hash: {
51
+ "address"=>"경기도 성남시 분당구 불정로 6 NAVER그린팩토리",
52
+ "addrdetail"=>{"country"=>"대한민국", "sido"=>"경기도", "sigugun"=>"성남시 분당구", "dongmyun"=>"불정로", "rest"=>" 6 NAVER그린팩토리"},
53
+ "isRoadAddress"=>true,
54
+ "point"=>{"x"=>127.1052133, "y"=>37.3595316}}}
55
+ ]
56
+
57
+ puts response[0].address
58
+ # => 경기도 성남시 분당구 불정로 6 NAVER그린팩토리
59
+
60
+ puts response[0].addrdetail.sido
61
+ # => 경기도
62
+ ```
63
+
64
+ ### 좌표 -> 주소 변환
65
+
66
+ ```ruby
67
+ response = Naver::Map.reverse_geocode(lat: "127.1141382", lng: "37.3599968")
68
+ # => [#<Naver::ObjectifiedHash:70284981856220 {hash: {
69
+ "address"=>"경기도 성남시 분당구 정자동 257-1",
70
+ "addrdetail"=>{"country"=>"대한민국", "sido"=>"경기도", "sigugun"=>"성남시 분당구", "dongmyun"=>"정자동", "rest"=>"257-1"},
71
+ "isAdmAddress"=>false,
72
+ "isRoadAddress"=>false,
73
+ "point"=>{"x"=>127.1164925, "y"=>37.3597611}}
74
+ },
75
+ ...
76
+ ]
77
+
78
+ puts response[0].address
79
+ # => 경기도 성남시 분당구 불정로 6 NAVER그린팩토리
80
+
81
+ puts response[0].point.x
82
+ # => 127.1164925
83
+ ```
84
+
85
+ ## 단축URL
86
+
87
+ ### url
88
+ ```ruby
89
+ response = Naver::Shortenurl.url(url: "https://github.com/kimsuelim")
90
+ # => #<Naver::ObjectifiedHash:70284972276780 {hash: {
91
+ "hash"=>"Fr4K6WFj",
92
+ "url"=>"http://me2.do/Fr4K6WFj",
93
+ "orgUrl"=>"https://github.com/kimsuelim"}
94
+ }
95
+
96
+ puts response.url
97
+ # => "http://me2.do/Fr4K6WFj"
98
+ ```
99
+
100
+ ## 파파고
101
+
102
+ ### 한글인명 - 로마자 변환
103
+
104
+ ```ruby
105
+ response = Naver::Papago.romanization(query: "김수림")
106
+ => #<Naver::ObjectifiedHash:70284972145960 {hash: {
107
+ "sFirstName"=>"김",
108
+ "aItems"=>[
109
+ {"name"=>"Kim Soorim", "score"=>"99"},
110
+ {"name"=>"Kim Soolim", "score"=>"97"},
111
+ {"name"=>"Kim Surim", "score"=>"78"},
112
+ {"name"=>"Kim Sulim", "score"=>"76"}
113
+ ]}
114
+ }
115
+
116
+ puts response.aItems[0].name
117
+ # => "Kim Soorim"
118
+ ```
119
+
120
+ ### 기계번역(Beta)
121
+
122
+ ```ruby
123
+ response = Naver::Papago.translate(
124
+ source: "ko",
125
+ target: "en",
126
+ text: "기술이 인간을 대체하는 것이 아니라 인간은 기술의 도움으로 더욱 창조적으로 될 것이라는 믿는다."
127
+ )
128
+
129
+ # => #<Naver::ObjectifiedHash:70362563050680 {hash: {
130
+ "translatedText"=>"To replace the technology not believe that humans are more creatively with the help of technology."
131
+ }
132
+ }
133
+
134
+ puts response.translatedText
135
+ # => "To replace the technology not believe that humans are more creatively with the help of technology."
136
+ ```
137
+
138
+ ## 검색
139
+
140
+ ### 블로그
141
+ ```ruby
142
+ search_results = Naver::Search.blog(query: "블로그")
143
+ # => <Naver::ObjectifiedHash:70284981057980 {hash: {
144
+ "lastBuildDate"=>"Sat, 24 Jun 2017 19:11:02 +0900", "total"=>26223046, "start"=>1, "display"=>10,
145
+ "items"=>[
146
+ {
147
+ "title"=>"<b>블로그</b>마케팅교육 어떻게 시작해야 할까요?",
148
+ "link"=>"http://blog.naver.com/roompen9030?Redirect=Log&amp;logNo=221030193550",
149
+ "description"=>"업체를 운영하시거나 창업을 하신 모든 분들이 한번쯤은 <b>블로그</b>마케팅을 고민해보셨을 거예요. 하지만... 가장 좋은 방법은 큰 비용을 들이지 않고도 내가 스스로 <b>블로그</b>마케팅을 하는 거겠지만 어떻게 해야... ",
150
+ "bloggername"=>"호러천국",
151
+ "bloggerlink"=>"http://blog.naver.com/roompen9030",
152
+ "postdate"=>"20170616"
153
+ },
154
+ ...
155
+ ]
156
+ }
157
+
158
+ puts search_results.total
159
+ # => 26223041
160
+
161
+ puts search_results.items[0].bloggername
162
+ # => 호러천국
163
+ ```
164
+
165
+ ### 뉴스
166
+ ```ruby
167
+ search_results = Naver::Search.news(query: "뉴스")
168
+ # => #<Naver::ObjectifiedHash:70284981108020 {hash: {
169
+ "lastBuildDate"=>"Sat, 24 Jun 2017 19:17:32 +0900", "total"=>31804178, "start"=>1, "display"=>10,
170
+ "items"=>[
171
+ {
172
+ "title"=>"'믿듣맘무' 마마무, 걸그룹 음원차트 평정… 멜론 누적 이용자수 94만명 돌파",
173
+ "originallink"=>"http://enews24.tving.com/news/article.asp?nsID=1221358",
174
+ "link"=>"http://news.naver.com/main/read.nhn?mode=LSD&mid=sec&sid1=106&oid=404&aid=0000180862",
175
+ "description"=>"녹아져 있는, 밉지 않은 귀여운 허세가 인상적인 큐티 허세송이다. 한편 마마무는 24일 MBC '쇼! 음악중심' 무대에 오른다. 사진 = RBW 제공 이지영 기자 [Copyright ⓒ Asia No.1 연예<b>뉴스</b> enews24.net 무단전재 및 재배포 금지]",
176
+ "pubDate"=>"Sat, 24 Jun 2017 19:15:00 +0900"
177
+ },
178
+ ...
179
+ ]
180
+ }
181
+
182
+ puts search_results.items[0].title
183
+ # => '믿듣맘무' 마마무, 걸그룹 음원차트 평정… 멜론 누적 이용자수 94만명 돌파
184
+ ```
185
+
186
+ ### 책
187
+ ```ruby
188
+ search_results = Naver::Search.book(query: "책")
189
+ # => #<Naver::ObjectifiedHash:70284982544600 {hash: {
190
+ "lastBuildDate"=>"Sat, 24 Jun 2017 20:08:46 +0900", "total"=>555896, "start"=>1, "display"=>10,
191
+ "items"=>[
192
+ {
193
+ "title"=>"너의 이름은",
194
+ "link"=>"http://book.naver.com/bookdb/book_detail.php?bid=11463103",
195
+ "image"=>"http://bookthumb.phinf.naver.net/cover/114/631/11463103.jpg?type=m1&udate=20170512",
196
+ "author"=>"신카이 마코토",
197
+ "price"=>"11000",
198
+ "discount"=>"9900",
199
+ "publisher"=>"대원씨아이",
200
+ "pubdate"=>"20170117",
201
+ "isbn"=>"1133440053 9791133440054",
202
+ "description"=>"아직 만난 적 없는 너를, 지금부터 나는 찾으러 간다!애 니메이션 차세대 거장으로 거듭난 신카이 마코토 감독이 직접 집필한 극장 애니메이션 《너의 이름은。》의 원작 소설 『너의 이름은.』. 《언어의 정원》, 《초속 5센티미터》 등 자신의 작품을 섬세한 필체를 살려 소설화 해온 신카이 마코토 감독.... "
203
+ },
204
+ ...
205
+ ]
206
+ }
207
+
208
+ puts search_results.items[0].title
209
+ # => "너의 이름은"
210
+ ```
211
+
212
+ ### 성인 검색어 판별
213
+ ```ruby
214
+ response = Naver::Search.adult(query: "성인")
215
+ puts response.adult
216
+ # => "1"
217
+
218
+ response = Naver::Search.adult(query: "청소년")
219
+ puts response.adult
220
+ # => "0"
221
+ ```
222
+
223
+ ### 백과 사전
224
+ ```ruby
225
+ search_results = Naver::Search.encyc(query: "백과 사전")
226
+ # => #<Naver::ObjectifiedHash:70284982397080 {hash: {
227
+ "lastBuildDate"=>"Sat, 24 Jun 2017 20:12:58 +0900", "total"=>4332, "start"=>1, "display"=>10,
228
+ "items"=>[
229
+ {
230
+ "title"=>"<b>백과사전</b>",
231
+ "link"=>"http://terms.naver.com/entry.nhn?docId=556891&cid=46669&categoryId=46669",
232
+ "description"=>" 과학·자연 및 인간의 활동에 따른 일체의 지식을 압축 정리해서 각 사항을 가나다순(알파벳순), 분류순 또는 기타 일정한 순서로 배열하여 엮은 책. [내용] 동양, 그 가운데에서도 특히 중국에서는... ",
233
+ "thumbnail"=>"http://openapi-dbscthumb.phinf.naver.net/2644_000_9/20150328034129739_UX34MP75L.jpg/4b8709b1-60ab-47.jpg?type=m160_160"
234
+ },
235
+ ...
236
+ ]
237
+ }
238
+
239
+ puts search_results.items[0].title
240
+ # => "<b>백과사전</b>"
241
+ ```
242
+
243
+ ### 영화
244
+ ```ruby
245
+ search_results = Naver::Search.movie(query: "킬빌")
246
+ # => #<Naver::ObjectifiedHash:70284982296880 {hash: {
247
+ "lastBuildDate"=>"Sat, 24 Jun 2017 20:15:41 +0900", "total"=>3, "start"=>1, "display"=>3,
248
+ "items"=>[
249
+ {
250
+ "title"=>"<b>킬 빌</b> - 2부",
251
+ "link"=>"http://movie.naver.com/movie/bi/mi/basic.nhn?code=37493",
252
+ "image"=>"http://imgmovie.naver.com/mdi/mit110/0374/C7493-00.jpg",
253
+ "subtitle"=>"Kill Bill: Vol. 2",
254
+ "pubDate"=>"2004",
255
+ "director"=>"쿠엔틴 타란티노|",
256
+ "actor"=>"우마 서먼|데이빗 캐러딘|",
257
+ "userRating"=>"7.48"
258
+ },
259
+ ...
260
+ ]
261
+ }
262
+
263
+ puts search_results.items[0].title
264
+ # => "<b>킬 빌</b> - 2부"
265
+ ```
266
+
267
+ ### 카페글
268
+ ```ruby
269
+ search_results = Naver::Search.cafearticle(query: "카페글")
270
+ # => #<Naver::ObjectifiedHash:70284982183260 {hash: {
271
+ "lastBuildDate"=>"Sat, 24 Jun 2017 20:17:56 +0900", "total"=>216425, "start"=>1, "display"=>10,
272
+ "items"=>[
273
+ {
274
+ "title"=>"예전 <b>카페글</b> 복습하기",
275
+ "link"=>"http://cafe.naver.com/cosmicordering/26633",
276
+ "description"=>"많아서 공유글도 나쁘지는 않지만 요즘 글들은 어째 예전 거보다 질적인 측면에서 많이 떨어진다는 생각이... 이것만큼은 꼭 읽으면 도움된다 하는 글들 위주로 쪽지, 혹은 <b>카페글</b>로 올려드릴게요. :) 그럼 한 주도 화잇팅~~~ ",
277
+ "cafename"=>"우루사 _ 우주 택배를 받고 소원을 이...",
278
+ "cafeurl"=>"http://cafe.ㅜver.com/cosmicordering"
279
+ },
280
+ ...
281
+ ]
282
+ }
283
+
284
+ puts search_results.items[0].title
285
+ # => "예전 <b>카페글</b> 복습하기"
286
+ ```
287
+
288
+ ### 지식 iN
289
+ ```ruby
290
+ search_results = Naver::Search.kin(query: "지식인")
291
+ # => #<Naver::ObjectifiedHash:70284982086840 {hash: {
292
+ "lastBuildDate"=>"Sat, 24 Jun 2017 20:20:19 +0900", "total"=>6931274, "start"=>1, "display"=>10,
293
+ "items"=>[
294
+ {
295
+ "title"=>"<b>지식인</b> 디렉토리 변경",
296
+ "link"=>"http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=1060101&docId=278622531&qb기KeA7Iud7J24&enc=utf8&section=kin.qna&rank=1&search_sort=0&spq=0",
297
+ "description"=>"<b>지식인</b> 디렉토리 변경 어떻게 하나요? 첫번째 화면에서 디렉토리 변경 요청을... 아오 <b>지식인</b> 서비스 진짜 불편해졌네 디렉토리 이동 권한이 없는... 분야별<b>지식인</b> 유저에게는 디렉토리 이동 방능이 있어 원하신다면 확인 후 제가... "
298
+ },
299
+ ...
300
+ ]
301
+ }
302
+
303
+ puts search_results.items[0].title
304
+ # => "<b>지식인</b> 디렉토리 변경"
305
+ ```
306
+
307
+ ### 지역
308
+ ```ruby
309
+ search_results = Naver::Search.local(query: "제주도")
310
+ # => #<Naver::ObjectifiedHash:70284981059020 {hash: {
311
+ "lastBuildDate"=>"Sat, 24 Jun 2017 20:51:22 +0900", "total"=>75791, "start"=>1, "display"=>10,
312
+ "items"=>[
313
+ {
314
+ "title"=>"제주특별자치도청",
315
+ "link"=>"http://www.jeju.go.kr/",
316
+ "category"=>"공공,사회기관>도청",
317
+ "description"=>"제주 뉴스, 생활민원, 여권발급, 문화, <b>제주도</b> 관광, 산업경제, 복지, 여성 정보 수록.",
318
+ "telephone"=>"",
319
+ "address"=>"제주특별자치도 제주시 연동 312-1 ",
320
+ "roadAddress"=>"제주특별자치도 제주시 문연로 6 ",
321
+ "mapx"=>"260641",
322
+ "mapy"=>"100237"
323
+ },
324
+ ...
325
+ ]
326
+ }
327
+
328
+ puts search_results.items[0].title
329
+ # => "제주특별자치도청"
330
+ ```
331
+
332
+ ### 오타변환
333
+ ```ruby
334
+ response = Naver::Search.errata(query: "집밥")
335
+ puts response.errata
336
+ # => ""
337
+
338
+ response = Naver::Search.errata(query: "wlqqkq")
339
+ puts response.errata
340
+ # => "집밥"
341
+ ```
342
+
343
+ ### 웹문서
344
+ ```ruby
345
+ search_results = Naver::Search.webkr(query: "웹문서")
346
+ # => #<Naver::ObjectifiedHash:70284981547180 {hash: {
347
+ "lastBuildDate"=>"Sat, 24 Jun 2017 20:53:29 +0900", "total"=>1904994, "start"=>1, "display"=>10,
348
+ "items"=>[
349
+ {
350
+ "title"=>"카카오톡 <b>웹문서</b> 수집 인정 &quot;다음 검색 연동 중단&quot; - 오마이뉴스",
351
+ "link"=>"http://www.ohmynews.com/NWS_Web/View/at_pg.aspx?CNTN_CD=A0002213337",
352
+ "description"=>"[보도 후] 카카오 &quot;1월부터 검색 노출, &lt;오마이뉴스&gt; 보도 우려 반영해 중지&quot;"
353
+ },
354
+ ...
355
+ ]
356
+ }
357
+
358
+ puts search_results.items[0].title
359
+ # => "카카오톡 <b>웹문서</b> 수집 인정 &quot;다음 검색 연동 중단&quot; - 오마이뉴스"
360
+ ```
361
+
362
+ ### 이미지
363
+ ```ruby
364
+ search_results = Naver::Search.image(query: "이미지")
365
+ # => #<Naver::ObjectifiedHash:70284981346800 {hash: {
366
+ "lastBuildDate"=>"Sat, 24 Jun 2017 20:54:58 +0900", "total"=>1627087, "start"=>1, "display"=>10,
367
+ "items"=>[
368
+ {
369
+ "title"=>"볼매뿌뿌's StyleShare",
370
+ "link"=>"https://usercontents-a.styleshare.kr/images/9764328/original",
371
+ "thumbnail"=>"http://tv02.search.naver.net/ugc?q=https://usercontents-a.styleshare.kr/images/9764328/original",
372
+ "sizeheight"=>"285",
373
+ "sizewidth"=>"420"
374
+ },
375
+ ...
376
+ ]
377
+ }
378
+
379
+ puts search_results.items[0].title
380
+ # => "볼매뿌뿌's StyleShare"
381
+ ```
382
+
383
+ ### 쇼핑
384
+ ```ruby
385
+ search_results = Naver::Search.shop(query: "쇼핑")
386
+ # => #<Naver::ObjectifiedHash:70284981152140 {hash: {
387
+ "lastBuildDate"=>"Sat, 24 Jun 2017 20:56:19 +0900", "total"=>8895965, "start"=>1, "display"=>10,
388
+ "items"=>[
389
+ {
390
+ "title"=>"팩앤롤 접이식 휴대용 핸드 <b>쇼핑</b>카트",
391
+ "link"=>"http://shopping.naver.com/gate.nhn?id=11449581836",
392
+ "image"=>"http://shopping.phinf.naver.net/main_1144958/11449581836.2.jpg",
393
+ "lprice"=>"10400",
394
+ "hprice"=>"0",
395
+ "mallName"=>"베이직기프트",
396
+ "productId"=>"11449581836",
397
+ "productType"=>"2"
398
+ },
399
+ ...
400
+ ]
401
+ }
402
+
403
+ puts search_results.items[0].title
404
+ # => "팩앤롤 접이식 휴대용 핸드 <b>쇼핑</b>카트"
405
+ ```
406
+
407
+ ### 전문자료
408
+ ```ruby
409
+ search_results = Naver::Search.doc(query: "전문자료")
410
+ # => #<Naver::ObjectifiedHash:70284980468480 {hash: {
411
+ "lastBuildDate"=>"Sat, 24 Jun 2017 20:57:34 +0900", "total"=>41554, "start"=>1, "display"=>10,
412
+ "items"=>[
413
+ {
414
+ "title"=>"이미지 검색 기능을 가진 문서간 <b>전문자료</b>의 유사도 검색 시스템",
415
+ "link"=>"http://academic.naver.com/view.nhn?doc_id=189708176",
416
+ "description"=>"The full-text document similarity retrieval system including image retrieval 표제지\n목차\n국문초록 9\nABSTRACT 11\n제1장 서"
417
+ },
418
+ ...
419
+ ]
420
+ }
421
+
422
+ puts search_results.items[0].title
423
+ # => "이미지 검색 기능을 가진 문서간 <b>전문자료</b>의 유사도 검색 시스템"
424
+ ```
425
+
426
+ ## Authentication
427
+
428
+ 네이버 아이디로 로그인 API는 네이버 로그인 인증 요청 API, 접근 토큰 발급/갱신/삭제 요청API로 구성되어 있습니다.
429
+
430
+ ### OAuth access tokens
431
+
432
+ 네이버 아이디로 로그인 API는 네이버 로그인 인증 요청 API, 접근 토큰 발급/갱신/삭제 요청API로 구성되어 있습니다.
433
+ 네이버 로그인 인증 요청 API는 여러분의 웹 또는 앱에 네이버 로그인 화면을 띄우는 API입니다.
434
+
435
+ ```ruby
436
+ oauth = Naver::Oauth.new(redirect_uri: "http://127.0.0.1/oauth/callback")
437
+ auth_url = oauth.authorization_url
438
+ puts auth_url
439
+ # => https://nid.naver.com/oauth2.0/authorize?client_id=GssyV0tCqRYPMRkDKsgG&redirect_uri=http%3A%2F%2F127.0.0.1%2Foauth%2Fcallback&response_type=code&scope=public
440
+ ```
441
+
442
+ Upon authorization, Naver will return to you an authentication code via your OAuth
443
+ callback handler. With that you can generate an access token:
444
+
445
+ 이용자가 네이버 회원 인증에 성공하면 API로부터 받은 code 값을 이용해서 접근 토큰 발급 요청 API를 호출합니다.
446
+
447
+ ```ruby
448
+ oauth = Naver::Oauth.new(redirect_uri: "http://127.0.0.1/oauth/callback")
449
+ oauth.authorize!("bdIdbpkuTwzk06Y3")
450
+ oauth.extract_token
451
+ # => {
452
+ "token_type"=>"bearer",
453
+ "access_token"=>"AAAAOrmgLwPV1AcF5UBThDNkruDPEMsAJ7gyyRneAgpwAPgdm2MQj1EYOiQ9femIhs9fGW2I2PNUgrc1ZFJuy5lFo6M=",
454
+ "refresh_token"=>"fXKPyKGM2zfAxfgrDQKBA60CKsM8h9BlfqisQvtTiiWnwF5vYlAghIBSu6WvNrSmDLCCmKrfVFipEbJurOxFLoW6NdohlIqCp4mSdviiHZxLTYR0aPwnbxWmkByk70ZisuX3A",
455
+ "expires_at"=>1498212486
456
+ }
457
+
458
+ response = Naver::Profile.me
459
+ # => {
460
+ "nickname"=>"갈루트",
461
+ "enc_id"=>"86744e27d4bfdb3cddb478293d295cf783ce9ed41f0ad7687bac26e97a1ed1b4",
462
+ "profile_image"=>"https://phinf.pstatic.net/contact/52/2016/2/11/kimsuerim_1455194287821.jpg",
463
+ "age"=>"30-39",
464
+ "gender"=>"M",
465
+ "id"=>"48189785",
466
+ "name"=>"JINxx",
467
+ "email"=>"kimsuerim@naver.com",
468
+ "birthday"=>"01-08"
469
+ }
470
+
471
+ puts response.nickname
472
+ # => "갈루트"
473
+ ```
474
+
475
+ 접근 토큰 발급 요청 API를 통해 받은 접근 토큰(access token) 값은 다음과 같이 회원 프로필 조회를 비롯하여 여러가지 로그인 오픈 API를 호출하는데 사용할 수 있습니다.
476
+
477
+ ## Advanced usage
478
+
479
+ Since naver-sdk employs [Faraday][faraday] under the hood, some behavior can be
480
+ extended via middleware.
481
+
482
+ ### Debugging
483
+
484
+ Often, it helps to know what naver-sdk is doing under the hood. You can add a
485
+ logger to the middleware that enables you to peek into the underlying HTTP
486
+ traffic:
487
+
488
+ ```ruby
489
+ Naver.configure do |config|
490
+ config.debug = true
491
+ end
492
+ Naver::Search.blog(query: "집밥")
493
+ ```
494
+ ```
495
+ I, [2017-06-24T11:59:40.920421 #54253] INFO -- : get https://openapi.naver.com/v1/search/blog?query=%EC%A7%91%EB%B0%A5
496
+ D, [2017-06-24T11:59:40.920569 #54253] DEBUG -- request: User-Agent: "NAVER SDK Ruby Gem 0.1.0"
497
+ X-Naver-Client-Id: "GssyV0tCqRYPMRkDKsgG"
498
+ X-Naver-Client-Secret: "ScVEl_cDJA"
499
+ I, [2017-06-24T11:59:41.182547 #54253] INFO -- Status: 200
500
+ D, [2017-06-24T11:59:41.182674 #54253] DEBUG -- response: server: "nginx"
501
+ date: "Sat, 24 Jun 2017 02:59:39 GMT"
502
+ content-type: "application/json;charset=UTF-8"
503
+ transfer-encoding: "chunked"
504
+ connection: "close"
505
+ vary: "Accept-Encoding"
506
+ x-powered-by: "Naver"
507
+ cache-control: "no-cache, no-store, must-revalidate"
508
+ pragma: "no-cache"
509
+ ...
510
+ ```
511
+
512
+ ## Development
513
+
514
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
515
+
516
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
517
+
518
+ ## Contributing
519
+
520
+ Bug reports and pull requests are welcome on GitHub at https://github.com/kimsuelim/naver-sdk-ruby. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
521
+
522
+ ## License
523
+
524
+ The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
525
+
526
+ ## Code of Conduct
527
+
528
+ Everyone interacting in the Naver::Sdk project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/kimsuelim/naver-sdk-ruby/blob/master/CODE_OF_CONDUCT.md).
529
+
530
+ [Faraday]: https://github.com/lostisland/faraday
data/Rakefile ADDED
@@ -0,0 +1,10 @@
1
+ require "bundler/gem_tasks"
2
+ require "rake/testtask"
3
+
4
+ Rake::TestTask.new(:test) do |t|
5
+ t.libs << "test"
6
+ t.libs << "lib"
7
+ t.test_files = FileList["test/**/*_test.rb"]
8
+ end
9
+
10
+ task :default => :test