kakao-rest-api 0.9.1 → 0.9.2

Sign up to get free protection for your applications and to get access to all the features.
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