Class: Ayadn::Post
- Inherits:
-
Object
- Object
- Ayadn::Post
- Defined in:
- lib/ayadn/post.rb
Instance Method Summary collapse
- #annotations ⇒ Object
- #annotations_embedded(dic) ⇒ Object
- #auto_readline ⇒ Object
- #check_length(lines_array, max_size) ⇒ Object
- #check_message_length(lines_array) ⇒ Object
- #check_post_length(lines_array) ⇒ Object
- #compose ⇒ Object
- #entities ⇒ Object
- #error_text_empty ⇒ Object
- #get_markdown_text(str) ⇒ Object
- #markdown_extract(str) ⇒ Object
- #payload_basic(text) ⇒ Object
- #payload_embedded(dic) ⇒ Object
- #payload_nowplaying(dic) ⇒ Object
- #payload_pm(username, text) ⇒ Object
- #payload_pm_embedded(dic) ⇒ Object
- #payload_reply(text, reply_to) ⇒ Object
- #payload_reply_embedded(dic) ⇒ Object
- #post(args) ⇒ Object
- #readline ⇒ Object
- #reply(new_post, replied_to) ⇒ Object
- #send_content(url, payload) ⇒ Object
- #send_embedded(text, files) ⇒ Object
- #send_embedded_pictures(dic) ⇒ Object
- #send_message(channel_id, text) ⇒ Object
- #send_nowplaying(dic) ⇒ Object
- #send_pm(username, text) ⇒ Object
- #send_pm_embedded(username, text, files) ⇒ Object
- #send_pm_embedded_pictures(dic) ⇒ Object
-
#send_post(text) ⇒ Object
def send_log(data) url = Endpoints.new.ayadnlog send_content(url, payload_log(data)) end.
- #send_reply(text, post_id) ⇒ Object
- #send_reply_embedded(text, reply_to, files) ⇒ Object
- #send_reply_embedded_pictures(dic) ⇒ Object
- #text_is_empty?(args) ⇒ Boolean
Instance Method Details
#annotations ⇒ Object
221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 |
# File 'lib/ayadn/post.rb', line 221 def annotations [ { "type" => "com.ayadn.user", "value" => { "+net.app.core.user" => { "user_id" => "#{Settings.config[:identity][:handle]}", "format" => "basic" } } }, { "type" => "com.ayadn.client", "value" => { "url" => "http://ayadn-app.net", "author" => { "name" => "Eric Dejonckheere", "username" => "ericd", "id" => "69904", "email" => "[email protected]" }, "version" => "#{Settings.config[:version]}" } } ] end |
#annotations_embedded(dic) ⇒ Object
99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 |
# File 'lib/ayadn/post.rb', line 99 def dic base = annotations() dic['data'].each do |obj| base << { "type" => "net.app.core.oembed", "value" => { "+net.app.core.file" => { "file_id" => obj['data']['id'], "file_token" => obj['data']['file_token'], "format" => "oembed" } } } end return base end |
#auto_readline ⇒ Object
116 117 118 119 120 121 122 123 124 125 126 127 128 |
# File 'lib/ayadn/post.rb', line 116 def auto_readline loop do begin #while buffer = Readline.readline("#{Settings.config[:identity][:handle]} >> ".color(:red)) while buffer = Readline.readline(">> ".color(:red)) send_post(buffer) puts Status.done end rescue Interrupt abort(Status.canceled) end end end |
#check_length(lines_array, max_size) ⇒ Object
190 191 192 193 194 195 196 197 198 199 200 201 |
# File 'lib/ayadn/post.rb', line 190 def check_length(lines_array, max_size) words_array = [] lines_array.each { |word| words_array << get_markdown_text(word) } size = words_array.join.length if size < 1 error_text_empty exit elsif size > max_size Errors.warn "Canceled: too long (#{size - max_size}chars)" abort(Status.too_long(size, max_size)) end end |
#check_message_length(lines_array) ⇒ Object
186 187 188 |
# File 'lib/ayadn/post.rb', line 186 def (lines_array) check_length(lines_array, Settings.config[:message_max_length]) end |
#check_post_length(lines_array) ⇒ Object
182 183 184 |
# File 'lib/ayadn/post.rb', line 182 def check_post_length(lines_array) check_length(lines_array, Settings.config[:post_max_length]) end |
#compose ⇒ Object
13 14 15 |
# File 'lib/ayadn/post.rb', line 13 def compose readline() end |
#entities ⇒ Object
248 249 250 251 252 253 |
# File 'lib/ayadn/post.rb', line 248 def entities { "parse_markdown_links" => true, "parse_links" => true } end |
#error_text_empty ⇒ Object
216 217 218 219 |
# File 'lib/ayadn/post.rb', line 216 def error_text_empty puts Status.no_text Errors.warn "-Post without text-" end |
#get_markdown_text(str) ⇒ Object
203 204 205 |
# File 'lib/ayadn/post.rb', line 203 def get_markdown_text(str) str.gsub(/\[([^\]]+)\]\(([^)]+)\)/, '\1') end |
#markdown_extract(str) ⇒ Object
207 208 209 210 |
# File 'lib/ayadn/post.rb', line 207 def markdown_extract(str) result = str.gsub(/\[([^\]]+)\]\(([^)]+)\)/, '\1|||\2') result.split('|||') #=> [text, link] end |
#payload_basic(text) ⇒ Object
257 258 259 260 261 262 263 |
# File 'lib/ayadn/post.rb', line 257 def payload_basic(text) { "text" => text, "entities" => entities, "annotations" => annotations } end |
#payload_embedded(dic) ⇒ Object
73 74 75 76 77 78 79 |
# File 'lib/ayadn/post.rb', line 73 def dic { "text" => dic['text'], "entities" => entities, "annotations" => (dic) } end |
#payload_nowplaying(dic) ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/ayadn/post.rb', line 45 def dic ann = annotations() if dic['visible'] == true ann << { "type" => "net.app.core.oembed", "value" => { "version" => "1.0", "type" => "photo", "width" => dic['width'], "height" => dic['height'], "title" => dic['title'], "url" => dic['artwork'], "embeddable_url" => dic['artwork'], "provider_url" => "https://itunes.apple.com", "provider_name" => "iTunes", "thumbnail_url" => dic['artwork_thumb'], "thumbnail_width" => dic['width_thumb'], "thumbnail_height" => dic['height_thumb'] } } end { "text" => dic['text'], "entities" => entities, "annotations" => ann } end |
#payload_pm(username, text) ⇒ Object
265 266 267 268 269 270 271 272 |
# File 'lib/ayadn/post.rb', line 265 def payload_pm(username, text) { "text" => text, "entities" => entities, "destinations" => username, "annotations" => annotations } end |
#payload_pm_embedded(dic) ⇒ Object
90 91 92 93 94 95 96 97 |
# File 'lib/ayadn/post.rb', line 90 def dic { "text" => dic['text'], "entities" => entities, "destinations" => dic['username'], "annotations" => (dic) } end |
#payload_reply(text, reply_to) ⇒ Object
274 275 276 277 278 279 280 281 |
# File 'lib/ayadn/post.rb', line 274 def payload_reply(text, reply_to) { "text" => text, "reply_to" => reply_to, "entities" => entities, "annotations" => annotations } end |
#payload_reply_embedded(dic) ⇒ Object
81 82 83 84 85 86 87 88 |
# File 'lib/ayadn/post.rb', line 81 def dic { "text" => dic['text'], "reply_to" => dic['reply_to'], "entities" => entities, "annotations" => (dic) } end |
#post(args) ⇒ Object
5 6 7 8 9 10 11 |
# File 'lib/ayadn/post.rb', line 5 def post(args) unless text_is_empty?(args) send_post(args.join(" ")) else error_text_empty end end |
#readline ⇒ Object
130 131 132 133 134 135 136 137 138 139 140 141 |
# File 'lib/ayadn/post.rb', line 130 def readline puts Status.readline post = [] begin while buffer = Readline.readline("> ") post << buffer end rescue Interrupt abort(Status.canceled) end post end |
#reply(new_post, replied_to) ⇒ Object
143 144 145 146 147 148 149 150 151 152 153 154 |
# File 'lib/ayadn/post.rb', line 143 def reply(new_post, replied_to) replied_to = replied_to.values[0] reply = replied_to[:handle].dup reply << " #{new_post}" replied_to[:mentions].uniq! replied_to[:mentions].each do |m| next if m == replied_to[:username] next if m == Settings.config[:identity][:username] reply << " @#{m}" end reply end |
#send_content(url, payload) ⇒ Object
177 178 179 180 |
# File 'lib/ayadn/post.rb', line 177 def send_content(url, payload) url << "?include_annotations=1&access_token=#{Ayadn::Settings.user_token}" JSON.parse(CNX.post(url, payload)) end |
#send_embedded(text, files) ⇒ Object
17 18 19 |
# File 'lib/ayadn/post.rb', line 17 def text, files ({'text' => text, 'data' => FileOps.upload_files(files)}) end |
#send_embedded_pictures(dic) ⇒ Object
29 30 31 |
# File 'lib/ayadn/post.rb', line 29 def dic send_content(Endpoints.new.posts_url, (dic)) end |
#send_message(channel_id, text) ⇒ Object
160 161 162 |
# File 'lib/ayadn/post.rb', line 160 def (channel_id, text) send_content(Endpoints.new.(channel_id, {}), payload_basic(text)) end |
#send_nowplaying(dic) ⇒ Object
41 42 43 |
# File 'lib/ayadn/post.rb', line 41 def dic send_content(Endpoints.new.posts_url, (dic)) end |
#send_pm(username, text) ⇒ Object
156 157 158 |
# File 'lib/ayadn/post.rb', line 156 def send_pm(username, text) send_content(Endpoints.new.pm_url, payload_pm(username, text)) end |
#send_pm_embedded(username, text, files) ⇒ Object
25 26 27 |
# File 'lib/ayadn/post.rb', line 25 def username, text, files ({'text' => text, 'username' => username, 'data' => FileOps.upload_files(files)}) end |
#send_pm_embedded_pictures(dic) ⇒ Object
37 38 39 |
# File 'lib/ayadn/post.rb', line 37 def dic send_content(Endpoints.new.pm_url, (dic)) end |
#send_post(text) ⇒ Object
169 170 171 |
# File 'lib/ayadn/post.rb', line 169 def send_post(text) send_content(Endpoints.new.posts_url, payload_basic(text)) end |
#send_reply(text, post_id) ⇒ Object
173 174 175 |
# File 'lib/ayadn/post.rb', line 173 def send_reply(text, post_id) send_content(Endpoints.new.posts_url, payload_reply(text, post_id)) end |
#send_reply_embedded(text, reply_to, files) ⇒ Object
21 22 23 |
# File 'lib/ayadn/post.rb', line 21 def text, reply_to, files ({'text' => text, 'reply_to' => reply_to, 'data' => FileOps.upload_files(files)}) end |
#send_reply_embedded_pictures(dic) ⇒ Object
33 34 35 |
# File 'lib/ayadn/post.rb', line 33 def dic send_content(Endpoints.new.posts_url, (dic)) end |
#text_is_empty?(args) ⇒ Boolean
212 213 214 |
# File 'lib/ayadn/post.rb', line 212 def text_is_empty?(args) args.empty? || args[0] == "" end |