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 +4 -4
- data/lib/kakao-rest-api.rb +34 -148
- data/lib/v1/api/story.rb +113 -0
- data/lib/v1/api/talk.rb +11 -0
- data/lib/v1/user.rb +71 -0
- metadata +4 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 105affffd19f6cc67f3bd6df7c52d2d448f0b79e
|
4
|
+
data.tar.gz: 3a46d5b90e41f2eaa4072f95a81026aacfad9477
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 11fe08ef54072d2056ccbe5e88219927bcfdf1d3efc9dceae1565f14df09696e516adfd20d542d9228550206886b505c81c71539e71b69f5d8bf9bbde1716193
|
7
|
+
data.tar.gz: 19ad641b3841030da0dfa6019c73e94db13116fe25ccc961945d14f9f59b3f0b4159fe8c0579ea3172f3030056d47e5b86e95ce6cfcf5b4f610968f0b3bbb65c
|
data/lib/kakao-rest-api.rb
CHANGED
@@ -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
|
-
|
7
|
-
|
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=
|
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
|
-
"#{
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
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
|
131
|
-
|
132
|
-
when
|
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
|
-
|
136
|
-
when
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
172
|
-
|
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
|
-
|
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
|
-
|
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
|
data/lib/v1/api/story.rb
ADDED
@@ -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
|
data/lib/v1/api/talk.rb
ADDED
@@ -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
|
data/lib/v1/user.rb
ADDED
@@ -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.
|
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
|