Class: Ayadn::CNX
- Inherits:
-
Object
- Object
- Ayadn::CNX
- Defined in:
- lib/ayadn/cnx.rb
Class Method Summary collapse
- .check(response) ⇒ Object
- .check_nr(response, url) ⇒ Object
- .delete(url) ⇒ Object
- .download(url) ⇒ Object
- .get(url) ⇒ Object
- .get_response_from(url) ⇒ Object
- .patch(url, payload) ⇒ Object
- .post(url, payload = nil) ⇒ Object
- .put(url, payload) ⇒ Object
- .retry_adn(seconds, try_cnx) ⇒ Object
Class Method Details
.check(response) ⇒ Object
109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 |
# File 'lib/ayadn/cnx.rb', line 109 def self.check response if response.code != 200 res = JSON.parse(response) = res['meta']['error_message'] thor = Thor::Shell::Color.new puts "\n" end case response.code when 200 response when 204, 400, 401, 403, 405, 500, 502, 504 thor.say_status :error, .upcase, :red Errors.global_error({error: , caller: caller, data: [res]}) when 429 thor.say_status :error, .upcase, :red puts "\n\nAyadn made too many requests to the App.net API. You should wait at least ".color(:cyan) + "#{response.headers[:retry_after]} ".color(:red) + "seconds before trying again. Maybe you launched a lot of Ayadn instances at the same time? That's no problem, but in this case you should increase the value of the scroll timer (with `ayadn set scroll timer 5` for example). App.net allows 5000 requests per hour per account maximum.".color(:cyan) Errors.global_error({error: , caller: caller, data: [res]}) else response end end |
.check_nr(response, url) ⇒ Object
57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/ayadn/cnx.rb', line 57 def self.check_nr response, url case response.code when 200 response when 204 puts "\nError: the NiceRank filter made too many requests to the server. You may either wait for a little while before scrolling the filtered Global again, or set the scroll timer to a greater value (example: `ayadn set scroll timer 5`). (see http://ayadn-app.net/doc).\n".color(:red) Errors.global_error({error: "NiceRank: TOO MANY REQUESTS", caller: caller, data: [url, response.inspect, response.headers]}) else response end end |
.delete(url) ⇒ Object
131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 |
# File 'lib/ayadn/cnx.rb', line 131 def self.delete(url) begin RestClient.delete(url) do |response, request, result| Debug.http response, url check response end rescue SocketError, SystemCallError => e Thor::Shell::Color.new.say_status :error, "connection problem", :red Errors.global_error({error: e, caller: caller, data: [url]}) rescue Interrupt thor = Thor::Shell::Color.new puts "\n" thor.say_status :canceled, "connection canceled", :red puts "\n" exit rescue => e Errors.global_error({error: e, caller: caller, data: [url]}) end end |
.download(url) ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/ayadn/cnx.rb', line 5 def self.download url working = true begin RestClient.get(url) {|response, request, result| response} rescue SocketError, SystemCallError, OpenSSL::SSL::SSLError, RestClient::RequestTimeout => e thor = Thor::Shell::Color.new if working == true working = false thor.say_status :error, "'#{url}' didn't respond", :red thor.say_status :info, "trying again in 5 secs", :yellow sleep 5 retry end thor.say_status :error, "connection problem", :red Errors.global_error({error: e, caller: caller, data: [url]}) rescue Interrupt thor = Thor::Shell::Color.new puts "\n" thor.say_status :canceled, "connection canceled", :red puts "\n" exit rescue => e Errors.global_error({error: e, caller: caller, data: [url]}) end end |
.get(url) ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/ayadn/cnx.rb', line 31 def self.get url working = true begin RestClient.get(url) do |response, request, result| Debug.http response, url check_nr response, url end rescue SocketError, SystemCallError, OpenSSL::SSL::SSLError, RestClient::RequestTimeout => e if working == true working = false sleep 0.5 retry end Errors.nr "URL: #{url}" return {'meta' => {'code' => 666}, 'data' => "#{e}"}.to_json rescue Interrupt thor = Thor::Shell::Color.new puts "\n" thor.say_status :canceled, "connection canceled", :red puts "\n" exit rescue => e Errors.global_error({error: e, caller: caller, data: [url]}) end end |
.get_response_from(url) ⇒ Object
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/ayadn/cnx.rb', line 69 def self.get_response_from(url) try_cnx = 1 begin RestClient::Request.execute(:method => :get, :url => url, :timeout => 20) do |response, request, result| #RestClient.get(url) do |response, request, result| #, :verify_ssl => OpenSSL::SSL::VERIFY_NONE Debug.http response, url check response end rescue SocketError, SystemCallError, OpenSSL::SSL::SSLError, RestClient::RequestTimeout => e if try_cnx < 4 try_cnx = retry_adn 10, try_cnx retry end Thor::Shell::Color.new.say_status :error, "connection problem", :red Errors.global_error({error: e, caller: caller, data: [url]}) rescue URI::InvalidURIError => e Thor::Shell::Color.new.say_status :error, "connection or authorization problem", :red Errors.global_error({error: e, caller: caller, data: [url]}) rescue Interrupt thor = Thor::Shell::Color.new puts "\n" thor.say_status :canceled, "connection canceled", :red puts "\n" exit rescue => e Errors.global_error({error: e, caller: caller, data: [url]}) end end |
.patch(url, payload) ⇒ Object
191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 |
# File 'lib/ayadn/cnx.rb', line 191 def self.patch(url, payload) begin RestClient.patch(url, payload.to_json, :content_type => :json, :accept => :json) do |response, request, result| Debug.http response, url check response end rescue SocketError, SystemCallError => e Thor::Shell::Color.new.say_status :error, "connection problem", :red Errors.global_error({error: e, caller: caller, data: [url, payload]}) rescue Interrupt thor = Thor::Shell::Color.new puts "\n" thor.say_status :canceled, "connection canceled", :red puts "\n" exit rescue => e Errors.global_error({error: e, caller: caller, data: [url, payload]}) end end |
.post(url, payload = nil) ⇒ Object
151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 |
# File 'lib/ayadn/cnx.rb', line 151 def self.post(url, payload = nil) begin RestClient.post(url, payload.to_json, :content_type => :json, :accept => :json) do |response, request, result| Debug.http response, url check response end rescue SocketError, SystemCallError => e Thor::Shell::Color.new.say_status :error, "connection problem", :red Errors.global_error({error: e, caller: caller, data: [url, payload]}) rescue Interrupt thor = Thor::Shell::Color.new puts "\n" thor.say_status :canceled, "connection canceled", :red puts "\n" exit rescue => e Errors.global_error({error: e, caller: caller, data: [url, payload]}) end end |
.put(url, payload) ⇒ Object
171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 |
# File 'lib/ayadn/cnx.rb', line 171 def self.put(url, payload) begin RestClient.put(url, payload.to_json, :content_type => :json, :accept => :json) do |response, request, result| Debug.http response, url check response end rescue SocketError, SystemCallError => e Thor::Shell::Color.new.say_status :error, "connection problem", :red Errors.global_error({error: e, caller: caller, data: [url, payload]}) rescue Interrupt thor = Thor::Shell::Color.new puts "\n" thor.say_status :canceled, "connection canceled", :red puts "\n" exit rescue => e Errors.global_error({error: e, caller: caller, data: [url, payload]}) end end |
.retry_adn(seconds, try_cnx) ⇒ Object
98 99 100 101 102 103 104 105 106 107 |
# File 'lib/ayadn/cnx.rb', line 98 def self.retry_adn seconds, try_cnx thor = Thor::Shell::Color.new thor.say_status :error, "unable to connect to App.net", :red thor.say_status :info, "trying again in #{seconds} seconds (#{try_cnx}/3)", :yellow Errors.warn "Unable to connect to App.net" try_cnx += 1 sleep seconds puts "\e[H\e[2J" try_cnx end |