Class: Ayadn::Post
- Inherits:
-
Object
- Object
- Ayadn::Post
- Defined in:
- lib/ayadn/post.rb
Instance Method Summary collapse
- #auto_readline ⇒ Object
- #bad_text_size(post, size, max_size) ⇒ Object
-
#compose ⇒ Object
—–.
- #entities ⇒ Object
- #error_text_empty ⇒ Object
-
#initialize ⇒ Post
constructor
A new instance of Post.
- #keep_text_from_markdown_links(str) ⇒ Object
- #markdown_extract(str) ⇒ Object
- #message(dic) ⇒ Object
- #message_size_error(message) ⇒ Object
-
#message_size_ok?(message) ⇒ Boolean
works on a string, returns boolean.
-
#payload_basic(dic) ⇒ Object
—–.
- #payload_pm(dic) ⇒ Object
- #payload_reply(dic) ⇒ Object
- #pm(dic) ⇒ Object
- #post(dic) ⇒ Object
- #post_size_error(post) ⇒ Object
-
#post_size_ok?(post) ⇒ Boolean
works on a string, returns boolean.
- #readline ⇒ Object
- #reply(dic) ⇒ Object
-
#send_content(url, payload) ⇒ Object
—–.
Constructor Details
#initialize ⇒ Post
5 6 7 |
# File 'lib/ayadn/post.rb', line 5 def initialize @status = Status.new end |
Instance Method Details
#auto_readline ⇒ Object
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
# File 'lib/ayadn/post.rb', line 85 def auto_readline loop do begin #while buffer = Readline.readline("#{Settings.config[:identity][:handle]} >> ".color(:red)) while buffer = Readline.readline(">> ".color(:red)) resp = post({text: buffer}) FileOps.save_post(resp) if Settings.[:backup][:posts] @status.done end rescue Interrupt @status.canceled exit end end end |
#bad_text_size(post, size, max_size) ⇒ Object
139 140 141 142 143 144 145 146 147 148 149 |
# File 'lib/ayadn/post.rb', line 139 def bad_text_size(post, size, max_size) if size < 1 error_text_empty() elsif size > max_size Errors.warn "Canceled: too long (#{size - max_size}chars)" @status.info("info", "your text:", "cyan") puts post @status.too_long(size, max_size) exit end end |
#compose ⇒ Object
81 82 83 |
# File 'lib/ayadn/post.rb', line 81 def compose readline() end |
#entities ⇒ Object
65 66 67 68 69 70 |
# File 'lib/ayadn/post.rb', line 65 def entities { "parse_markdown_links" => true, "parse_links" => true } end |
#error_text_empty ⇒ Object
160 161 162 163 164 |
# File 'lib/ayadn/post.rb', line 160 def error_text_empty @status.no_text Errors.warn "-No text-" exit end |
#keep_text_from_markdown_links(str) ⇒ Object
151 152 153 |
# File 'lib/ayadn/post.rb', line 151 def keep_text_from_markdown_links(str) str.gsub(/\[([^\]]+)\]\(([^)]+)\)/, '\1') end |
#markdown_extract(str) ⇒ Object
155 156 157 158 |
# File 'lib/ayadn/post.rb', line 155 def markdown_extract(str) result = str.gsub(/\[([^\]]+)\]\(([^)]+)\)/, '\1|||\2') result.split('|||') #=> [text, link] end |
#message(dic) ⇒ Object
33 34 35 |
# File 'lib/ayadn/post.rb', line 33 def (dic) send_content(Endpoints.new.(dic[:id]), payload_basic(dic)) end |
#message_size_error(message) ⇒ Object
133 134 135 136 137 |
# File 'lib/ayadn/post.rb', line 133 def () text = keep_text_from_markdown_links() size, max_size = text.length, Settings.config[:message_max_length] bad_text_size(, size, max_size) end |
#message_size_ok?(message) ⇒ Boolean
works on a string, returns boolean
121 122 123 124 125 |
# File 'lib/ayadn/post.rb', line 121 def () # works on a string, returns boolean text = keep_text_from_markdown_links() size, max_size = text.length, Settings.config[:message_max_length] (size >= 1 && size <= max_size) end |
#payload_basic(dic) ⇒ Object
39 40 41 42 43 44 45 |
# File 'lib/ayadn/post.rb', line 39 def payload_basic(dic) { "text" => dic[:text], "entities" => entities(), "annotations" => Annotations.new(dic).content } end |
#payload_pm(dic) ⇒ Object
47 48 49 50 51 52 53 54 |
# File 'lib/ayadn/post.rb', line 47 def payload_pm(dic) { "text" => dic[:text], "entities" => entities(), "destinations" => dic[:username], "annotations" => Annotations.new(dic).content } end |
#payload_reply(dic) ⇒ Object
56 57 58 59 60 61 62 63 |
# File 'lib/ayadn/post.rb', line 56 def payload_reply(dic) { "text" => dic[:text], "reply_to" => dic[:reply_to], "entities" => entities(), "annotations" => Annotations.new(dic).content } end |
#pm(dic) ⇒ Object
29 30 31 |
# File 'lib/ayadn/post.rb', line 29 def pm(dic) send_content(Endpoints.new.pm_url, payload_pm(dic)) end |
#post(dic) ⇒ Object
9 10 11 |
# File 'lib/ayadn/post.rb', line 9 def post(dic) send_content(Endpoints.new.posts_url, payload_basic(dic)) end |
#post_size_error(post) ⇒ Object
127 128 129 130 131 |
# File 'lib/ayadn/post.rb', line 127 def post_size_error(post) text = keep_text_from_markdown_links(post) size, max_size = text.length, Settings.config[:post_max_length] bad_text_size(post, size, max_size) end |
#post_size_ok?(post) ⇒ Boolean
works on a string, returns boolean
115 116 117 118 119 |
# File 'lib/ayadn/post.rb', line 115 def post_size_ok?(post) # works on a string, returns boolean text = keep_text_from_markdown_links(post) size, max_size = text.length, Settings.config[:post_max_length] (size >= 1 && size <= max_size) end |
#readline ⇒ Object
101 102 103 104 105 106 107 108 109 110 111 112 113 |
# File 'lib/ayadn/post.rb', line 101 def readline @status.readline post = [] begin while buffer = Readline.readline("> ") post << buffer end rescue Interrupt @status.canceled exit end post end |
#reply(dic) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/ayadn/post.rb', line 13 def reply(dic) replied_to = dic[:reply_to].values[0] reply = replied_to[:handle].dup reply << " #{dic[:text]}" 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 post_size_error(reply) if post_size_ok?(reply) == false dic[:text] = reply dic[:reply_to] = dic[:id] send_content(Endpoints.new.posts_url, payload_reply(dic)) end |
#send_content(url, payload) ⇒ Object
74 75 76 77 |
# File 'lib/ayadn/post.rb', line 74 def send_content(url, payload) url << "?include_annotations=1&access_token=#{Ayadn::Settings.user_token}" JSON.parse(CNX.post(url, payload)) end |