lull 0.0.0

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.
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: []