adnruby 0.1 → 0.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.
- data/lib/adnruby.rb +143 -44
- metadata +2 -2
data/lib/adnruby.rb
CHANGED
@@ -1,8 +1,34 @@
|
|
1
|
+
#
|
2
|
+
# ADNRuby - A simple and easy to use App.net Ruby library
|
3
|
+
#
|
4
|
+
# Copyright (c) 2012 Kishyr Ramdial
|
5
|
+
#
|
6
|
+
# Permission is hereby granted, free of charge, to any person obtaining
|
7
|
+
# a copy of this software and associated documentation files (the
|
8
|
+
# "Software"), to deal in the Software without restriction, including
|
9
|
+
# without limitation the rights to use, copy, modify, merge, publish,
|
10
|
+
# distribute, sublicense, and/or sell copies of the Software, and to
|
11
|
+
# permit persons to whom the Software is furnished to do so, subject to
|
12
|
+
# the following conditions:
|
13
|
+
#
|
14
|
+
# The above copyright notice and this permission notice shall be
|
15
|
+
# included in all copies or substantial portions of the Software.
|
16
|
+
#
|
17
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
18
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
19
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
20
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
21
|
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
22
|
+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
23
|
+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
24
|
+
|
1
25
|
require 'net/https'
|
2
26
|
require 'uri'
|
3
27
|
require 'json'
|
4
28
|
|
5
29
|
API = "alpha-api.app.net"
|
30
|
+
ADNHTTP = Net::HTTP.new(API, 443)
|
31
|
+
ADNHTTP.use_ssl = true
|
6
32
|
|
7
33
|
module ADN
|
8
34
|
def self.token=(token)
|
@@ -14,50 +40,124 @@ module ADN
|
|
14
40
|
end
|
15
41
|
|
16
42
|
class User
|
17
|
-
|
18
|
-
|
43
|
+
attr_accessor :user_id
|
44
|
+
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
|
+
def initialize(user_id)
|
47
|
+
@user_id = user_id
|
48
|
+
details = self.details
|
49
|
+
if details.has_key? "data"
|
50
|
+
details["data"].each do |k, v|
|
51
|
+
self.instance_variable_set "@#{k}", v
|
52
|
+
end
|
53
|
+
end
|
19
54
|
end
|
20
55
|
|
21
|
-
def
|
22
|
-
|
56
|
+
def details
|
57
|
+
if self.id
|
58
|
+
h = {}
|
59
|
+
self.instance_variables.each { |iv| h[iv.to_s.gsub(/[^a-zA-Z0-9_]/, '')] = self.instance_variable_get(iv) }
|
60
|
+
h
|
61
|
+
else
|
62
|
+
ADN::Users.retrieve(@user_id)
|
63
|
+
end
|
23
64
|
end
|
24
65
|
|
25
|
-
|
26
|
-
|
66
|
+
|
67
|
+
# Followers/Users
|
68
|
+
|
69
|
+
def follow(user)
|
70
|
+
user_id = user.is_a?(ADN::User) ? user.id : user
|
71
|
+
result = ADN.post("/stream/0/users/#{user_id}/follow")
|
72
|
+
result["data"] unless result.has_error?
|
27
73
|
end
|
28
74
|
|
29
|
-
def
|
30
|
-
|
75
|
+
def unfollow(user)
|
76
|
+
user_id = user.is_a?(ADN::User) ? user.id : user
|
77
|
+
result = ADN.delete("/stream/0/users/#{user_id}/follow")
|
78
|
+
result["data"] unless result.has_error?
|
31
79
|
end
|
32
80
|
|
33
|
-
def
|
34
|
-
ADN.
|
81
|
+
def followers
|
82
|
+
result = ADN::Users.followers(@user_id)
|
83
|
+
result["data"] unless result.has_error?
|
84
|
+
end
|
85
|
+
|
86
|
+
def following
|
87
|
+
result = ADN::Users.following(@user_id)
|
88
|
+
result["data"] unless result.has_error?
|
89
|
+
end
|
90
|
+
|
91
|
+
|
92
|
+
# Mute
|
93
|
+
|
94
|
+
def mute(user)
|
95
|
+
user_id = user.is_a?(ADN::User) ? user.id : user
|
96
|
+
result = ADN.post("/stream/0/users/#{user_id}/mute")
|
97
|
+
result["data"] unless result.has_error?
|
98
|
+
end
|
99
|
+
|
100
|
+
def unmute(user)
|
101
|
+
user_id = user.is_a?(ADN::User) ? user.id : user
|
102
|
+
result = ADN.delete("/stream/0/users/#{user_id}/mute")
|
103
|
+
result["data"] unless result.has_error?
|
104
|
+
end
|
105
|
+
|
106
|
+
def mute_list
|
107
|
+
result = ADN.get("/stream/0/users/me/muted")
|
108
|
+
result["data"] unless result.has_error?
|
35
109
|
end
|
36
110
|
|
37
|
-
|
38
|
-
|
111
|
+
|
112
|
+
# Posts
|
113
|
+
|
114
|
+
def posts(params = nil)
|
115
|
+
result = ADN::Post.by_user(@user_id, params)
|
116
|
+
result["data"] unless result.has_error?
|
117
|
+
end
|
118
|
+
|
119
|
+
def stream(params = nil)
|
120
|
+
result = ADN::Post.stream(params)
|
121
|
+
result["data"] unless result.has_error?
|
39
122
|
end
|
40
123
|
|
41
|
-
def
|
42
|
-
ADN.
|
124
|
+
def mentions(params = nil)
|
125
|
+
result = ADN::Post.mentioning_user(@user_id, params)
|
126
|
+
result["data"] unless result.has_error?
|
127
|
+
end
|
128
|
+
|
129
|
+
# Errors
|
130
|
+
|
131
|
+
def has_error?
|
132
|
+
self.id.nil?
|
43
133
|
end
|
44
134
|
|
45
|
-
|
46
|
-
|
135
|
+
end
|
136
|
+
|
137
|
+
|
138
|
+
# Modules
|
139
|
+
|
140
|
+
module Users
|
141
|
+
|
142
|
+
def self.retrieve(user_id)
|
143
|
+
ADN.get("/stream/0/users/#{user_id}")
|
47
144
|
end
|
48
145
|
|
49
|
-
|
50
|
-
|
51
|
-
|
146
|
+
def self.by_id(user_id)
|
147
|
+
self.retrieve(user_id)
|
148
|
+
end
|
52
149
|
|
53
|
-
|
54
|
-
|
55
|
-
|
150
|
+
def self.following(user_id)
|
151
|
+
ADN.get("/stream/0/users/#{user_id}/following")
|
152
|
+
end
|
56
153
|
|
154
|
+
def self.followers(user_id)
|
155
|
+
ADN.get("/stream/0/users/#{user_id}/followers")
|
156
|
+
end
|
57
157
|
|
58
158
|
end
|
59
159
|
|
60
|
-
|
160
|
+
module Post
|
61
161
|
def self.new(params)
|
62
162
|
ADN.post("/stream/0/posts", params)
|
63
163
|
end
|
@@ -100,67 +200,66 @@ module ADN
|
|
100
200
|
|
101
201
|
end
|
102
202
|
|
103
|
-
|
203
|
+
module Stream
|
104
204
|
# Not Yet Implemented
|
105
205
|
# https://github.com/appdotnet/api-spec/blob/master/resources/streams.md
|
106
206
|
end
|
107
207
|
|
108
|
-
|
208
|
+
module Subscription
|
109
209
|
# Not Yet Implemented
|
110
210
|
# https://github.com/appdotnet/api-spec/blob/master/resources/subscriptions.md
|
111
211
|
end
|
112
212
|
|
113
|
-
|
213
|
+
module Filter
|
114
214
|
# Not Yet Implemented
|
115
215
|
# https://github.com/appdotnet/api-spec/blob/master/resources/filters.md
|
116
216
|
end
|
117
217
|
|
118
|
-
|
218
|
+
module Token
|
119
219
|
def self.current
|
120
|
-
ADN.get("/stream/0/token")
|
220
|
+
result = ADN.get("/stream/0/token")
|
221
|
+
result["data"] unless result.has_error?
|
121
222
|
end
|
122
223
|
end
|
123
224
|
|
124
|
-
def self.get(url, params = nil)
|
125
|
-
http = Net::HTTP.new(API, 443)
|
126
|
-
http.use_ssl = true
|
127
225
|
|
226
|
+
|
227
|
+
private
|
228
|
+
|
229
|
+
def self.get(url, params = nil)
|
128
230
|
get_url = params.nil? ? url : "#{url}?#{URI.encode_www_form(params)}"
|
129
231
|
request = Net::HTTP::Get.new(get_url)
|
130
232
|
request.add_field("Authorization", "Bearer #{ADN.token}")
|
131
|
-
response =
|
233
|
+
response = ADNHTTP.request(request)
|
132
234
|
return JSON.parse(response.body)
|
133
235
|
end
|
134
236
|
|
135
237
|
def self.post(url, params = nil)
|
136
|
-
http = Net::HTTP.new(API, 443)
|
137
|
-
http.use_ssl = true
|
138
|
-
|
139
238
|
request = Net::HTTP::Post.new(url)
|
140
239
|
request.set_form_data(params) if params
|
141
240
|
request.add_field("Authorization", "Bearer #{ADN.token}")
|
142
|
-
response =
|
241
|
+
response = ADNHTTP.request(request)
|
143
242
|
return JSON.parse(response.body)
|
144
243
|
end
|
145
244
|
|
146
245
|
def self.put(url, params = nil)
|
147
|
-
http = Net::HTTP.new(API, 443)
|
148
|
-
http.use_ssl = true
|
149
|
-
|
150
246
|
request = Net::HTTP::Put.new(url)
|
151
247
|
request.set_form_data(params) if params
|
152
248
|
request.add_field("Authorization", "Bearer #{ADN.token}")
|
153
|
-
response =
|
249
|
+
response = ADNHTTP.request(request)
|
154
250
|
return JSON.parse(response.body)
|
155
251
|
end
|
156
252
|
|
157
253
|
def self.delete(url, params = nil)
|
158
|
-
http = Net::HTTP.new(API, 443)
|
159
|
-
http.use_ssl = true
|
160
|
-
|
161
254
|
request = Net::HTTP::Delete.new(url)
|
162
255
|
request.add_field("Authorization", "Bearer #{ADN.token}")
|
163
|
-
response =
|
256
|
+
response = ADNHTTP.request(request)
|
164
257
|
return JSON.parse(response.body)
|
165
258
|
end
|
166
259
|
end
|
260
|
+
|
261
|
+
class Hash
|
262
|
+
def has_error?
|
263
|
+
self.has_key? "error"
|
264
|
+
end
|
265
|
+
end
|
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.2'
|
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-26 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
|