adnruby 0.2 → 0.3
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.
- data/lib/adnruby.rb +148 -79
- metadata +2 -2
data/lib/adnruby.rb
CHANGED
@@ -25,6 +25,7 @@
|
|
25
25
|
require 'net/https'
|
26
26
|
require 'uri'
|
27
27
|
require 'json'
|
28
|
+
require 'date'
|
28
29
|
|
29
30
|
API = "alpha-api.app.net"
|
30
31
|
ADNHTTP = Net::HTTP.new(API, 443)
|
@@ -43,13 +44,20 @@ module ADN
|
|
43
44
|
attr_accessor :user_id
|
44
45
|
attr_accessor :avatar_image, :counts, :cover_image, :created_at, :description, :follows_you, :id, :is_follower, :is_following, :is_muted, :locale, :name, :timezone, :type, :username, :you_follow, :you_muted
|
45
46
|
|
46
|
-
def initialize(
|
47
|
-
|
48
|
-
|
49
|
-
if details.has_key? "data"
|
50
|
-
details["data"].each do |k, v|
|
47
|
+
def initialize(user)
|
48
|
+
if user.is_a? Hash
|
49
|
+
user.each do |k, v|
|
51
50
|
self.instance_variable_set "@#{k}", v
|
52
51
|
end
|
52
|
+
@user_id = self.id
|
53
|
+
else
|
54
|
+
@user_id = user
|
55
|
+
details = self.details
|
56
|
+
if details.has_key? "data"
|
57
|
+
details["data"].each do |k, v|
|
58
|
+
self.instance_variable_set "@#{k}", v
|
59
|
+
end
|
60
|
+
end
|
53
61
|
end
|
54
62
|
end
|
55
63
|
|
@@ -59,7 +67,7 @@ module ADN
|
|
59
67
|
self.instance_variables.each { |iv| h[iv.to_s.gsub(/[^a-zA-Z0-9_]/, '')] = self.instance_variable_get(iv) }
|
60
68
|
h
|
61
69
|
else
|
62
|
-
ADN::
|
70
|
+
ADN::API::User.retrieve(@user_id)
|
63
71
|
end
|
64
72
|
end
|
65
73
|
|
@@ -69,23 +77,23 @@ module ADN
|
|
69
77
|
def follow(user)
|
70
78
|
user_id = user.is_a?(ADN::User) ? user.id : user
|
71
79
|
result = ADN.post("/stream/0/users/#{user_id}/follow")
|
72
|
-
result["data"] unless result.has_error?
|
80
|
+
User.new(result["data"]) unless result.has_error?
|
73
81
|
end
|
74
82
|
|
75
83
|
def unfollow(user)
|
76
84
|
user_id = user.is_a?(ADN::User) ? user.id : user
|
77
85
|
result = ADN.delete("/stream/0/users/#{user_id}/follow")
|
78
|
-
result["data"] unless result.has_error?
|
86
|
+
User.new(result["data"]) unless result.has_error?
|
79
87
|
end
|
80
88
|
|
81
89
|
def followers
|
82
|
-
result = ADN::
|
83
|
-
result["data"] unless result.has_error?
|
90
|
+
result = ADN::API::User.followers(@user_id)
|
91
|
+
result["data"].collect { |u| User.new(u) } unless result.has_error?
|
84
92
|
end
|
85
93
|
|
86
94
|
def following
|
87
|
-
result = ADN::
|
88
|
-
result["data"] unless result.has_error?
|
95
|
+
result = ADN::API::User.following(@user_id)
|
96
|
+
result["data"].collect { |u| User.new(u) } unless result.has_error?
|
89
97
|
end
|
90
98
|
|
91
99
|
|
@@ -94,36 +102,36 @@ module ADN
|
|
94
102
|
def mute(user)
|
95
103
|
user_id = user.is_a?(ADN::User) ? user.id : user
|
96
104
|
result = ADN.post("/stream/0/users/#{user_id}/mute")
|
97
|
-
result["data"] unless result.has_error?
|
105
|
+
User.new(result["data"]) unless result.has_error?
|
98
106
|
end
|
99
107
|
|
100
108
|
def unmute(user)
|
101
109
|
user_id = user.is_a?(ADN::User) ? user.id : user
|
102
110
|
result = ADN.delete("/stream/0/users/#{user_id}/mute")
|
103
|
-
result["data"] unless result.has_error?
|
111
|
+
User.new(result["data"]) unless result.has_error?
|
104
112
|
end
|
105
113
|
|
106
114
|
def mute_list
|
107
115
|
result = ADN.get("/stream/0/users/me/muted")
|
108
|
-
result["data"] unless result.has_error?
|
116
|
+
result["data"].collect { |u| User.new(u) } unless result.has_error?
|
109
117
|
end
|
110
118
|
|
111
119
|
|
112
120
|
# Posts
|
113
121
|
|
114
122
|
def posts(params = nil)
|
115
|
-
result = ADN::Post.by_user(@user_id, params)
|
116
|
-
result["data"] unless result.has_error?
|
123
|
+
result = ADN::API::Post.by_user(@user_id, params)
|
124
|
+
result["data"].collect { |p| Post.new(p) } unless result.has_error?
|
117
125
|
end
|
118
126
|
|
119
127
|
def stream(params = nil)
|
120
|
-
result = ADN::Post.stream(params)
|
121
|
-
result["data"] unless result.has_error?
|
128
|
+
result = ADN::API::Post.stream(params)
|
129
|
+
result["data"].collect { |p| Post.new(p) } unless result.has_error?
|
122
130
|
end
|
123
131
|
|
124
132
|
def mentions(params = nil)
|
125
|
-
result = ADN::Post.mentioning_user(@user_id, params)
|
126
|
-
result["data"] unless result.has_error?
|
133
|
+
result = ADN::API::Post.mentioning_user(@user_id, params)
|
134
|
+
result["data"].collect { |p| Post.new(p) } unless result.has_error?
|
127
135
|
end
|
128
136
|
|
129
137
|
# Errors
|
@@ -134,94 +142,155 @@ module ADN
|
|
134
142
|
|
135
143
|
end
|
136
144
|
|
145
|
+
class Post
|
146
|
+
attr_accessor :post_id, :created_at, :entities, :html, :id, :num_replies, :reply_to, :source, :text, :thread_id, :user
|
137
147
|
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
def self.retrieve(user_id)
|
143
|
-
ADN.get("/stream/0/users/#{user_id}")
|
148
|
+
def self.send(params)
|
149
|
+
result = ADN::API::Post.new(params)
|
150
|
+
Post.new(result["data"]) unless result.has_error?
|
144
151
|
end
|
145
152
|
|
146
|
-
def
|
147
|
-
|
153
|
+
def initialize(raw_post)
|
154
|
+
if raw_post.is_a? Hash
|
155
|
+
raw_post.each do |k, v|
|
156
|
+
self.instance_variable_set "@#{k}", v
|
157
|
+
end
|
158
|
+
@post_id = @id
|
159
|
+
else
|
160
|
+
@post_id = raw_post
|
161
|
+
details = self.details
|
162
|
+
if details.has_key? "data"
|
163
|
+
details["data"].each do |k, v|
|
164
|
+
self.instance_variable_set "@#{k}", v
|
165
|
+
end
|
166
|
+
end
|
167
|
+
end
|
148
168
|
end
|
149
169
|
|
150
|
-
def
|
151
|
-
|
170
|
+
def details
|
171
|
+
if self.id
|
172
|
+
h = {}
|
173
|
+
self.instance_variables.each { |iv| h[iv.to_s.gsub(/[^a-zA-Z0-9_]/, '')] = self.instance_variable_get(iv) }
|
174
|
+
h
|
175
|
+
else
|
176
|
+
ADN::API::Post.by_id(@post_id)
|
177
|
+
end
|
152
178
|
end
|
153
179
|
|
154
|
-
def
|
155
|
-
|
180
|
+
def created_at
|
181
|
+
DateTime.parse(@created_at)
|
156
182
|
end
|
157
183
|
|
158
|
-
|
159
|
-
|
160
|
-
module Post
|
161
|
-
def self.new(params)
|
162
|
-
ADN.post("/stream/0/posts", params)
|
184
|
+
def user
|
185
|
+
ADN::User.new @user
|
163
186
|
end
|
164
187
|
|
165
|
-
def
|
166
|
-
ADN.
|
188
|
+
def reply_to_post
|
189
|
+
result = ADN::API::Post.by_id @reply_to
|
190
|
+
Post.new(result["data"]) unless result.has_error?
|
167
191
|
end
|
168
192
|
|
169
|
-
def
|
170
|
-
|
193
|
+
def replies(params = nil)
|
194
|
+
result = ADN::API::Post.replies(@id, params)
|
195
|
+
result["data"].collect { |p| Post.new(p) } unless result.has_error?
|
171
196
|
end
|
172
197
|
|
173
|
-
def
|
174
|
-
ADN.delete(
|
198
|
+
def delete
|
199
|
+
result = ADN::API::Post.delete(@id)
|
200
|
+
Post.new(result["data"]) unless result.has_error?
|
175
201
|
end
|
176
202
|
|
177
|
-
|
178
|
-
ADN.get("/stream/0/posts/#{post_id}/replies", params)
|
179
|
-
end
|
203
|
+
end
|
180
204
|
|
181
|
-
def self.by_user(user_id, params = nil)
|
182
|
-
ADN.get("/stream/0/users/#{user_id}/posts", params)
|
183
|
-
end
|
184
205
|
|
185
|
-
|
186
|
-
ADN.get("/stream/0/users/#{user_id}/mentions", params)
|
187
|
-
end
|
206
|
+
# API Modules
|
188
207
|
|
189
|
-
|
190
|
-
|
191
|
-
end
|
208
|
+
module API
|
209
|
+
module User
|
192
210
|
|
193
|
-
|
194
|
-
|
195
|
-
|
211
|
+
def self.retrieve(user_id)
|
212
|
+
ADN.get("/stream/0/users/#{user_id}")
|
213
|
+
end
|
214
|
+
|
215
|
+
def self.by_id(user_id)
|
216
|
+
self.retrieve(user_id)
|
217
|
+
end
|
218
|
+
|
219
|
+
def self.following(user_id)
|
220
|
+
ADN.get("/stream/0/users/#{user_id}/following")
|
221
|
+
end
|
222
|
+
|
223
|
+
def self.followers(user_id)
|
224
|
+
ADN.get("/stream/0/users/#{user_id}/followers")
|
225
|
+
end
|
196
226
|
|
197
|
-
def self.by_hashtag(hashtag, params = nil)
|
198
|
-
ADN.get("/stream/0/posts/tag/#{hashtag}", params)
|
199
227
|
end
|
200
228
|
|
201
|
-
|
229
|
+
module Post
|
230
|
+
def self.new(params)
|
231
|
+
ADN.post("/stream/0/posts", params)
|
232
|
+
end
|
202
233
|
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
end
|
234
|
+
def self.retrieve(post_id)
|
235
|
+
ADN.get("/stream/0/posts/#{post_id}")
|
236
|
+
end
|
207
237
|
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
end
|
238
|
+
def self.by_id(post_id)
|
239
|
+
self.retrieve(post_id)
|
240
|
+
end
|
212
241
|
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
242
|
+
def self.delete(post_id)
|
243
|
+
ADN.delete("/stream/0/posts/#{post_id}")
|
244
|
+
end
|
245
|
+
|
246
|
+
def self.replies(post_id, params = nil)
|
247
|
+
ADN.get("/stream/0/posts/#{post_id}/replies", params)
|
248
|
+
end
|
249
|
+
|
250
|
+
def self.by_user(user_id, params = nil)
|
251
|
+
ADN.get("/stream/0/users/#{user_id}/posts", params)
|
252
|
+
end
|
253
|
+
|
254
|
+
def self.mentioning_user(user_id, params = nil)
|
255
|
+
ADN.get("/stream/0/users/#{user_id}/mentions", params)
|
256
|
+
end
|
257
|
+
|
258
|
+
def self.stream(params = nil)
|
259
|
+
ADN.get("/stream/0/posts/stream", params)
|
260
|
+
end
|
261
|
+
|
262
|
+
def self.global_stream(params = nil)
|
263
|
+
ADN.get("/stream/0/posts/stream/global", params)
|
264
|
+
end
|
265
|
+
|
266
|
+
def self.by_hashtag(hashtag, params = nil)
|
267
|
+
ADN.get("/stream/0/posts/tag/#{hashtag}", params)
|
268
|
+
end
|
217
269
|
|
218
|
-
module Token
|
219
|
-
def self.current
|
220
|
-
result = ADN.get("/stream/0/token")
|
221
|
-
result["data"] unless result.has_error?
|
222
270
|
end
|
223
|
-
end
|
224
271
|
|
272
|
+
module Stream
|
273
|
+
# Not Yet Implemented
|
274
|
+
# https://github.com/appdotnet/api-spec/blob/master/resources/streams.md
|
275
|
+
end
|
276
|
+
|
277
|
+
module Subscription
|
278
|
+
# Not Yet Implemented
|
279
|
+
# https://github.com/appdotnet/api-spec/blob/master/resources/subscriptions.md
|
280
|
+
end
|
281
|
+
|
282
|
+
module Filter
|
283
|
+
# Not Yet Implemented
|
284
|
+
# https://github.com/appdotnet/api-spec/blob/master/resources/filters.md
|
285
|
+
end
|
286
|
+
|
287
|
+
module Token
|
288
|
+
def self.current
|
289
|
+
result = ADN.get("/stream/0/token")
|
290
|
+
result["data"] unless result.has_error?
|
291
|
+
end
|
292
|
+
end
|
293
|
+
end
|
225
294
|
|
226
295
|
|
227
296
|
private
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: adnruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
4
|
+
version: '0.3'
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-08-
|
12
|
+
date: 2012-08-27 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: A simple and easy to use library to interact with App.net's API
|
15
15
|
email: kishyr@gmail.com
|