kakao-rest-api 0.9.1 → 0.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: de0f57ef24ccf97384a7dac95ff9796af913bbf1
4
- data.tar.gz: c2d83f58c7e7dca065d7c9b62a61795810f04433
3
+ metadata.gz: 105affffd19f6cc67f3bd6df7c52d2d448f0b79e
4
+ data.tar.gz: 3a46d5b90e41f2eaa4072f95a81026aacfad9477
5
5
  SHA512:
6
- metadata.gz: 507bd3442b357be53f2bea8177f1fff916e8a75be6d0360aa41b11190fdd07f62835862fbdf7fda88bde1a4d5f8025e66f856e846c2b183c97712d0a6290093c
7
- data.tar.gz: 115752456445a9bd0cd40f6855ae54fd2e8500181ea5d04c4a01ed37c6a780869af38e05f7d02213c57d0b68dc08a9f4cddd53364295edddd03af06b0ff22161
6
+ metadata.gz: 11fe08ef54072d2056ccbe5e88219927bcfdf1d3efc9dceae1565f14df09696e516adfd20d542d9228550206886b505c81c71539e71b69f5d8bf9bbde1716193
7
+ data.tar.gz: 19ad641b3841030da0dfa6019c73e94db13116fe25ccc961945d14f9f59b3f0b4159fe8c0579ea3172f3030056d47e5b86e95ce6cfcf5b4f610968f0b3bbb65c
@@ -1,14 +1,15 @@
1
1
  require 'rest-client'
2
+ require 'v1/user'
3
+ require 'v1/api/story'
4
+ require 'v1/api/talk'
2
5
 
3
6
  class KakaoRestApi
4
7
  attr_accessor :app_key, :admin_key, :authorize_code, :redirect_uri
5
8
 
6
- STORY_POST_TYPE_NOTE = 0
7
- STORY_POST_TYPE_IMAGE = 1
8
- STORY_POST_TYPE_LINK = 2
9
+ HOST_KAUTH = 'https://kauth.kakao.com'.freeze
10
+ HOST_KAPI = 'https://kapi.kakao.com'.freeze
9
11
 
10
12
  def initialize(app_key, admin_key, redirect_uri)
11
- # raise ArgumentError 'required parameter is blank' if app_key.blank? || admin_key.blank?
12
13
  self.app_key = app_key
13
14
  self.admin_key = admin_key
14
15
  self.redirect_uri = redirect_uri
@@ -18,13 +19,13 @@ class KakaoRestApi
18
19
  self.authorize_code = authorize_code
19
20
  end
20
21
 
21
- def login(state=nil, encode_state=nil)
22
- # raise ArgumentError 'required parameter is blank' if redirect_uri.blank?
22
+ def login(state = nil, encode_state = false)
23
23
  response_type = 'code'
24
- host = 'https://kauth.kakao.com'
25
24
  path = "/oauth/authorize?client_id=#{app_key}&redirect_uri=#{redirect_uri}&response_type=#{response_type}"
25
+ path.concat("&state=#{state}") unless state.nil?
26
+ path.concat('&encode_state=true') if encode_state
26
27
 
27
- "#{host}#{path}"
28
+ "#{HOST_KAUTH}#{path}"
28
29
  end
29
30
 
30
31
  def token
@@ -34,8 +35,7 @@ class KakaoRestApi
34
35
  redirect_uri: redirect_uri,
35
36
  code: authorize_code
36
37
  }
37
-
38
- request_url = 'https://kauth.kakao.com/oauth/token'
38
+ request_url = "#{HOST_KAUTH}/oauth/token"
39
39
  RestClient.post(request_url, query_params)
40
40
  end
41
41
 
@@ -45,203 +45,89 @@ class KakaoRestApi
45
45
  client_id: app_key,
46
46
  refresh_token: refresh_token
47
47
  }
48
-
49
- request_url = 'https://kauth.kakao.com/oauth/token'
48
+ request_url = "#{HOST_KAUTH}/oauth/token"
50
49
  RestClient.post(request_url, query_params)
51
50
  end
52
51
 
53
52
  def logout(access_token)
54
- authorization = "Bearer #{access_token}"
55
-
56
- request_url = 'https://kapi.kakao.com/v1/user/logout'
57
- RestClient.post(request_url, nil, Authorization: authorization)
53
+ User.logout access_token
58
54
  end
59
55
 
60
56
  def signup(access_token, properties = {})
61
- authorization = "Bearer #{access_token}"
62
-
63
- query_params = {
64
- properties: properties.to_json
65
- }
66
-
67
- request_url = 'https://kapi.kakao.com/v1/user/signup'
68
- RestClient.post(request_url, query_params, Authorization: authorization)
57
+ User.signup access_token, properties
69
58
  end
70
59
 
71
60
  def unlink(access_token)
72
- authorization = "Bearer #{access_token}"
73
-
74
- request_url = 'https://kapi.kakao.com/v1/user/unlink'
75
- RestClient.post(request_url, nil, Authorization: authorization)
61
+ User.unlink access_token
76
62
  end
77
63
 
78
64
  def me(access_token, property_keys = [], secure_resource = false)
79
- authorization = "Bearer #{access_token}"
80
-
81
- request_url = 'https://kapi.kakao.com/v1/user/me'
82
- RestClient.post(request_url, nil, Authorization: authorization)
65
+ User.me access_token, property_keys, secure_resource
83
66
  end
84
67
 
85
68
  def update_profile(access_token, props = {})
86
- authorization = "Bearer #{access_token}"
87
- params = {
88
- properties: props.to_json
89
- }
90
- request_url = 'https://kapi.kakao.com/v1/user/update_profile'
91
- RestClient.post(request_url, params, Authorization: authorization)
69
+ User.update_profile access_token, props
92
70
  end
93
71
 
94
72
  def user_ids(limit = 100, from_id = 0, order = 'asc')
95
- authorization = "KakaoAK #{admin_key}"
96
- params = {}
97
- params[:limit] = limit
98
- params[:from_id] = from_id if from_id > 0
99
- params[:order] = order
100
-
101
- request_url = 'https://kapi.kakao.com/v1/user/ids'
102
- RestClient.post(request_url, params, Authorization: authorization)
73
+ User.ids admin_key, limit, from_id, order
103
74
  end
104
75
 
105
76
  def access_token_info(access_token)
106
- authorization = "Bearer #{access_token}"
107
-
108
- request_url = 'https://kapi.kakao.com/v1/user/access_token_info'
109
- RestClient.get(request_url, Authorization: authorization)
77
+ User.access_token_info access_token
110
78
  end
111
79
 
112
80
  def is_story_user?(access_token)
113
- authorization = "Bearer #{access_token}"
114
-
115
- request_url = 'https://kapi.kakao.com/v1/api/story/isstoryuser'
116
- RestClient.get(request_url, Authorization: authorization)
81
+ Story.story_user? access_token
117
82
  end
118
83
 
119
84
  def story_profile(access_token, secure_resource = false)
120
- authorization = "Bearer #{access_token}"
121
-
122
- request_url = 'https://kapi.kakao.com/v1/api/story/profile'
123
- RestClient.get(request_url, Authorization: authorization)
85
+ Story.story_profile access_token, secure_resource
124
86
  end
125
87
 
126
- def story_write_post(access_token, type, required_params, options = {})
88
+ def story_post(access_token, type, required_params, options = {})
127
89
  required_params[:access_token] = access_token
128
90
 
129
91
  case type
130
- when STORY_POST_TYPE_NOTE
131
- story_write_note_post required_params, options
132
- when STORY_POST_TYPE_IMAGE
92
+ when Story::POST_TYPE_NOTE
93
+ Story.post_note required_params, options
94
+ when Story::POST_TYPE_IMAGE
133
95
  file_paths = required_params[:image_url_list]
134
96
  required_params[:image_url_list] = upload_multi(access_token, file_paths)
135
- story_write_photo_post required_params, options
136
- when STORY_POST_TYPE_LINK
97
+ Story.post_photo required_params, options
98
+ when Story::POST_TYPE_LINK
137
99
  url = required_params[:url]
138
100
  required_params[:link_info] = link_info(access_token, url)
139
- story_write_link_post required_params, options
101
+ Story.post_link required_params, options
140
102
  end
141
103
  end
142
104
 
143
105
  def my_story(access_token, story_id)
144
- authorization = "Bearer #{access_token}"
145
-
146
- request_url = "https://kapi.kakao.com/v1/api/story/mystory?id=#{story_id}"
147
- RestClient.get(request_url, Authorization: authorization)
106
+ Story.my_story access_token, story_id
148
107
  end
149
108
 
150
109
  def my_stories(access_token, last_id)
151
- authorization = "Bearer #{access_token}"
152
-
153
- request_url = "https://kapi.kakao.com/v1/api/story/mystories?last_id=#{last_id}"
154
- RestClient.get(request_url, Authorization: authorization)
110
+ Story.my_stories access_token, last_id
155
111
  end
156
112
 
157
113
  def delete_my_story(access_token, id)
158
- authorization = "Bearer #{access_token}"
159
-
160
- request_url = "https://kapi.kakao.com/v1/api/story/delete/mystory?id=#{id}"
161
- RestClient.delete(request_url, Authorization: authorization)
162
- end
163
-
164
- def talk_profile(access_token, secure_resource=false)
165
- authorization = "Bearer #{access_token}"
166
-
167
- request_url = 'https://kapi.kakao.com/v1/api/talk/profile'
168
- RestClient.get(request_url, Authorization: authorization)
114
+ Story.delete_my_story access_token, id
169
115
  end
170
116
 
171
- def self.default_story_post_options
172
- # TODO. add app schemes
173
- {
174
- permission: 'A',
175
- enable_share: false,
176
- }
117
+ def talk_profile(access_token, secure_resource = false)
118
+ Talk.talk_profile access_token, secure_resource
177
119
  end
178
120
 
179
121
  def upload_multi(access_token, file_paths)
180
- authorization = "Bearer #{access_token}"
181
- content_type = 'multipart/form-data; boundary=---------------------------012345678901234567890123456'
182
-
183
122
  files = []
184
123
  file_paths.each do |path|
185
124
  files << File.new(path, 'rb')
186
125
  end
187
126
 
188
- params = {
189
- file: files,
190
- multipart: true
191
- }
192
- request_url = 'https://kapi.kakao.com/v1/api/story/upload/multi'
193
- RestClient.post(request_url, params, Authorization: authorization, content_type: content_type)
127
+ Story.upload_multi access_token, files
194
128
  end
195
129
 
196
130
  def link_info(access_token, url)
197
- authorization = "Bearer #{access_token}"
198
-
199
- request_url = "https://kapi.kakao.com/v1/api/story/linkinfo?url=#{url}"
200
- RestClient.get(request_url, Authorization: authorization)
201
- end
202
-
203
- private
204
-
205
- def story_write_note_post(required_params, options)
206
- content = required_params[:content]
207
- access_token = required_params[:access_token]
208
- authorization = "Bearer #{access_token}"
209
-
210
- params = {}
211
- params[:content] = content
212
- params.merge!(options)
213
-
214
- request_url = 'https://kapi.kakao.com/v1/api/story/post/note'
215
- RestClient.post(request_url, params, Authorization: authorization)
216
- end
217
-
218
- def story_write_photo_post(required_params, options)
219
- content = required_params[:content]
220
- image_url_list = required_params[:image_url_list]
221
- access_token = required_params[:access_token]
222
- authorization = "Bearer #{access_token}"
223
-
224
- params = {}
225
- params[:content] = content || ''
226
- params[:image_url_list] = image_url_list
227
- params.merge!(options)
228
-
229
- request_url = 'https://kapi.kakao.com/v1/api/story/post/photo'
230
- RestClient.post(request_url, params, Authorization: authorization)
231
- end
232
-
233
- def story_write_link_post(required_params, options)
234
- link_info = required_params[:link_info]
235
- content = required_params[:content]
236
- access_token = required_params[:access_token]
237
- authorization = "Bearer #{access_token}"
238
-
239
- params = {}
240
- params[:content] = content || ''
241
- params[:link_info] = link_info
242
- params.merge!(options)
243
-
244
- request_url = 'https://kapi.kakao.com/v1/api/story/post/link'
245
- RestClient.post(request_url, params, Authorization: authorization)
131
+ Story.link_info access_token, url
246
132
  end
247
133
  end
@@ -0,0 +1,113 @@
1
+ class Story
2
+ POST_TYPE_NOTE = 0
3
+ POST_TYPE_IMAGE = 1
4
+ POST_TYPE_LINK = 2
5
+
6
+ HOST_KAUTH = 'https://kauth.kakao.com'.freeze
7
+ HOST_KAPI = 'https://kapi.kakao.com'.freeze
8
+
9
+ def self.story_user?(access_token)
10
+ authorization = "Bearer #{access_token}"
11
+
12
+ request_url = "#{HOST_KAPI}/v1/api/story/isstoryuser"
13
+ RestClient.get(request_url, Authorization: authorization)
14
+ end
15
+
16
+ def self.story_profile(access_token, secure_resource = false)
17
+ authorization = "Bearer #{access_token}"
18
+
19
+ request_url = "#{HOST_KAPI}/v1/api/story/profile"
20
+ request_url.concat('?secure_resource=true') if secure_resource
21
+ RestClient.get(request_url, Authorization: authorization)
22
+ end
23
+
24
+ def self.my_story(access_token, story_id)
25
+ authorization = "Bearer #{access_token}"
26
+
27
+ request_url = "#{HOST_KAPI}/v1/api/story/mystory?id=#{story_id}"
28
+ RestClient.get(request_url, Authorization: authorization)
29
+ end
30
+
31
+ def self.my_stories(access_token, last_id)
32
+ authorization = "Bearer #{access_token}"
33
+
34
+ request_url = "#{HOST_KAPI}/v1/api/story/mystories?last_id=#{last_id}"
35
+ RestClient.get(request_url, Authorization: authorization)
36
+ end
37
+
38
+ def self.delete_my_story(access_token, id)
39
+ authorization = "Bearer #{access_token}"
40
+
41
+ request_url = "#{HOST_KAPI}/v1/api/story/delete/mystory?id=#{id}"
42
+ RestClient.delete(request_url, Authorization: authorization)
43
+ end
44
+
45
+ def self.default_story_post_options
46
+ {
47
+ permission: 'A',
48
+ enable_share: false
49
+ }
50
+ end
51
+
52
+ def self.link_info(access_token, url)
53
+ authorization = "Bearer #{access_token}"
54
+
55
+ request_url = "#{HOST_KAPI}/v1/api/story/linkinfo?url=#{url}"
56
+ RestClient.get(request_url, Authorization: authorization)
57
+ end
58
+
59
+ def self.upload_multi(access_token, files)
60
+ authorization = "Bearer #{access_token}"
61
+ content_type = 'multipart/form-data; boundary=---------------------------012345678901234567890123456'
62
+
63
+ params = {
64
+ file: files,
65
+ multipart: true
66
+ }
67
+ request_url = "#{HOST_KAPI}/v1/api/story/upload/multi"
68
+ RestClient.post(request_url, params, Authorization: authorization, content_type: content_type)
69
+ end
70
+
71
+ def self.post_note(required_params, options)
72
+ content = required_params[:content]
73
+ access_token = required_params[:access_token]
74
+ authorization = "Bearer #{access_token}"
75
+
76
+ params = {}
77
+ params[:content] = content
78
+ params.merge!(options)
79
+
80
+ request_url = "#{HOST_KAPI}/v1/api/story/post/note"
81
+ RestClient.post(request_url, params, Authorization: authorization)
82
+ end
83
+
84
+ def self.post_photo(required_params, options)
85
+ content = options[:content]
86
+ image_url_list = required_params[:image_url_list]
87
+ access_token = required_params[:access_token]
88
+ authorization = "Bearer #{access_token}"
89
+
90
+ params = {}
91
+ params[:content] = content || ''
92
+ params[:image_url_list] = image_url_list
93
+ params.merge!(options)
94
+
95
+ request_url = "#{HOST_KAPI}/v1/api/story/post/photo"
96
+ RestClient.post(request_url, params, Authorization: authorization)
97
+ end
98
+
99
+ def self.post_link(required_params, options)
100
+ link_info = required_params[:link_info]
101
+ content = options[:content]
102
+ access_token = required_params[:access_token]
103
+ authorization = "Bearer #{access_token}"
104
+
105
+ params = {}
106
+ params[:content] = content || ''
107
+ params[:link_info] = link_info
108
+ params.merge!(options)
109
+
110
+ request_url = "#{HOST_KAPI}/v1/api/story/post/link"
111
+ RestClient.post(request_url, params, Authorization: authorization)
112
+ end
113
+ end
@@ -0,0 +1,11 @@
1
+ class Talk
2
+ HOST_KAUTH = 'https://kauth.kakao.com'.freeze
3
+ HOST_KAPI = 'https://kapi.kakao.com'.freeze
4
+
5
+ def self.talk_profile(access_token, secure_resource = false)
6
+ authorization = "Bearer #{access_token}"
7
+ request_url = "#{HOST_KAPI}/v1/api/talk/profile"
8
+ request_url.concat('&secure_resource=true') if secure_resource
9
+ RestClient.get(request_url, Authorization: authorization)
10
+ end
11
+ end
@@ -0,0 +1,71 @@
1
+ class User
2
+ HOST_KAUTH = 'https://kauth.kakao.com'.freeze
3
+ HOST_KAPI = 'https://kapi.kakao.com'.freeze
4
+
5
+ def self.logout(access_token)
6
+ authorization = "Bearer #{access_token}"
7
+
8
+ request_url = "#{HOST_KAPI}/v1/user/logout"
9
+ RestClient.post(request_url, nil, Authorization: authorization)
10
+ end
11
+
12
+ def self.signup(access_token, properties = {})
13
+ authorization = "Bearer #{access_token}"
14
+
15
+ query_params = {
16
+ properties: properties.to_json
17
+ }
18
+
19
+ request_url = "#{HOST_KAPI}/v1/user/signup"
20
+ RestClient.post(request_url, query_params, Authorization: authorization)
21
+ end
22
+
23
+ def self.unlink(access_token)
24
+ authorization = "Bearer #{access_token}"
25
+
26
+ request_url = "#{HOST_KAPI}/v1/user/unlink"
27
+ RestClient.post(request_url, nil, Authorization: authorization)
28
+ end
29
+
30
+ def self.me(access_token, property_keys = [], secure_resource = false, user_id = 0)
31
+ authorization = "Bearer #{access_token}"
32
+ params = {
33
+ propertyKeys: property_keys,
34
+ secure_resource: secure_resource
35
+ }
36
+ if user_id > 0
37
+ params[:target_id_type] = 'user_id'
38
+ params[:target_id] = user_id
39
+ end
40
+
41
+ request_url = "#{HOST_KAPI}/v1/user/me"
42
+ RestClient.post(request_url, params, Authorization: authorization)
43
+ end
44
+
45
+ def self.update_profile(access_token, props = {})
46
+ authorization = "Bearer #{access_token}"
47
+ params = {
48
+ properties: props.to_json
49
+ }
50
+ request_url = "#{HOST_KAPI}/v1/user/update_profile"
51
+ RestClient.post(request_url, params, Authorization: authorization)
52
+ end
53
+
54
+ def self.ids(admin_key, limit = 100, from_id = 0, order = 'asc')
55
+ authorization = "KakaoAK #{admin_key}"
56
+ params = {}
57
+ params[:limit] = limit
58
+ params[:from_id] = from_id if from_id > 0
59
+ params[:order] = order
60
+
61
+ request_url = "#{HOST_KAPI}/v1/user/ids"
62
+ RestClient.post(request_url, params, Authorization: authorization)
63
+ end
64
+
65
+ def self.access_token_info(access_token)
66
+ authorization = "Bearer #{access_token}"
67
+
68
+ request_url = "#{HOST_KAPI}/v1/user/access_token_info"
69
+ RestClient.get(request_url, Authorization: authorization)
70
+ end
71
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kakao-rest-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.1
4
+ version: 0.9.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kyoungwon Lee
@@ -37,6 +37,9 @@ extensions: []
37
37
  extra_rdoc_files: []
38
38
  files:
39
39
  - lib/kakao-rest-api.rb
40
+ - lib/v1/api/story.rb
41
+ - lib/v1/api/talk.rb
42
+ - lib/v1/user.rb
40
43
  homepage: http://rubygems.org/gems/kakao-rest-api
41
44
  licenses:
42
45
  - MIT