lull 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/lull.rb +73 -0
  3. metadata +63 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 0763216dad2562c3e4c28117fde89340bc23d57a085fa382a2e491b35442ce54
4
+ data.tar.gz: e081fee19fbe4895d0da5d8c5ada4328b27c333fd025c9463d638e91dd260a78
5
+ SHA512:
6
+ metadata.gz: a9d93d402eb78cb5197522b70fd0d39edfe63e345d6f0face59d728bc53117bf87563a8e27788caabcae6ec52a441f2695d1008714dabe1668bc0432e2e3957a
7
+ data.tar.gz: 3bb756bcb6423d79d005ee6325988a11f45a7cceef5835ea66cd2a2c9f66a82574ecc99165df011169f992aa8544c97b0f8f573c9b36f1996864bfc6e6f43ada
data/lib/lull.rb ADDED
@@ -0,0 +1,73 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rest-client'
4
+
5
+ # Helper class for making rest calls
6
+ class Lull
7
+ attr_accessor :headers, :meth, :params, :url, :config
8
+
9
+ def initialize(headers: {}, meth: 'Get', params: {}, url: 'https://test/', config: {})
10
+ @headers = headers
11
+ @meth = meth.capitalize.to_sym
12
+ @params = params
13
+ @url = url
14
+ @config = config
15
+ @config['timeout'] = @config['timeout'] ||= 30
16
+ end
17
+
18
+ def make_call
19
+ response = RestClient::Request.execute(headers: @headers,
20
+ method: @meth, payload: @params,
21
+ timeout: @config['timeout'], url: @url, verify_ssl: false)
22
+ rescue SocketError, IOError => e
23
+ puts "#{e.class}: #{e.message}"
24
+ rescue StandardError => e
25
+ e.response
26
+ else
27
+ response
28
+ end
29
+
30
+ def cookie
31
+ if @url =~ %r{auth/session}
32
+ response = make_call
33
+ raise 'There was an issue getting a cookie!' unless response.code == 200
34
+
35
+ (response.cookies.map { |key, val| "#{key}=#{val}" })[0]
36
+ else
37
+ error_text('cookie', @url.to_s, 'auth/session')
38
+ end
39
+ end
40
+
41
+ # use rest-client with retry
42
+ def rest_try(tries = 3)
43
+ tries.times do |i|
44
+ response = make_call
45
+ unless response.nil?
46
+ break response if (200..299).include? response.code
47
+ break response if i > 1
48
+ end
49
+ puts "Failed #{@meth} on #{@url}, retry...#{i + 1}"
50
+ sleep 3 unless i > 1
51
+ return nil if i > 1 # Handles socket errors, etc. where there is no response.
52
+ end
53
+ end
54
+
55
+ private
56
+
57
+ def error_text(method_name, url, wanted)
58
+ {
59
+ 'response' =>
60
+ "ERROR: Wrong url for the #{method_name} method.\n"\
61
+ "Sent: #{url}\n"\
62
+ "Expected: \"#{wanted}\" as part of the url.",
63
+ 'status' => 400
64
+ }
65
+ end
66
+
67
+ def responder(response)
68
+ {
69
+ 'response' => JSON.parse(response.body),
70
+ 'status' => response.code.to_i
71
+ }
72
+ end
73
+ end
metadata ADDED
@@ -0,0 +1,63 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: lull
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Kody Wilson
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2021-04-02 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rest-client
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 2.1.0
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 2.1.0
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: 2.1.0
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 2.1.0
33
+ description: A simple wrapper for rest-client
34
+ email: kodywilson@gmail.com
35
+ executables: []
36
+ extensions: []
37
+ extra_rdoc_files: []
38
+ files:
39
+ - lib/lull.rb
40
+ homepage: https://github.com/kodywilson/lull
41
+ licenses:
42
+ - MIT
43
+ metadata: {}
44
+ post_install_message:
45
+ rdoc_options: []
46
+ require_paths:
47
+ - lib
48
+ required_ruby_version: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 2.7.0
53
+ required_rubygems_version: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ version: '0'
58
+ requirements: []
59
+ rubygems_version: 3.1.4
60
+ signing_key:
61
+ specification_version: 4
62
+ summary: Rest helper
63
+ test_files: []