okay 8.0.0 → 12.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.
- checksums.yaml +4 -4
- data/.cirrus.yml +23 -0
- data/.gitignore +0 -1
- data/Gemfile +11 -0
- data/Gemfile.lock +40 -0
- data/README.md +21 -1
- data/Rakefile +2 -0
- data/bin/httpbin +3 -0
- data/bors.toml +5 -0
- data/lib/okay.rb +5 -0
- data/lib/okay/default.rb +4 -0
- data/lib/okay/graphql.rb +23 -6
- data/lib/okay/http.rb +34 -12
- data/lib/okay/simple_opts.rb +31 -0
- data/lib/okay/template.rb +46 -0
- data/lib/okay/version.rb +3 -1
- data/lib/okay/warning_helpers.rb +21 -0
- data/okay.gemspec +14 -5
- metadata +20 -43
- data/.travis.yml +0 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d440392d2c9d86cd93c694b618d46f18935339c70897e5b6869a8b556ed17953
|
4
|
+
data.tar.gz: 63cb6c74cacfa7985707ae8bae9213b680ec5b097c184d588199ed7b7f5d6a21
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f45cc9fe3188a53c2492459b1e4c614ab0d7400a0b891a5b1324304b0d34c5650e9a6f048c71427c770bc7205fd283f167e537244efd31df299454445ddfb477
|
7
|
+
data.tar.gz: e6d44d3186e410d8e9f95050534c4e1f13f7c86a53d6b0e4eb6197d0e3e053ba7184251166d21495b537b86bde07ea757fc37d0f246950f4027a734a103467c8
|
data/.cirrus.yml
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
# Allow compute credits usage by collaborators and bors.
|
2
|
+
use_compute_credits: $CIRRUS_USER_COLLABORATOR == 'true' || $CIRRUS_BRANCH == 'master' || $CIRRUS_BRANCH == 'staging' || $CIRRUS_BRANCH == 'trying'
|
3
|
+
|
4
|
+
Linux_task:
|
5
|
+
container:
|
6
|
+
matrix:
|
7
|
+
- image: ruby:2.6-slim
|
8
|
+
- image: ruby:2.7-slim
|
9
|
+
- image: ruby:3.0-slim
|
10
|
+
install_script:
|
11
|
+
# git is installed since the gemspec uses it.
|
12
|
+
- apt-get update && apt-get install -y git
|
13
|
+
- gem install bundler
|
14
|
+
- bundle install
|
15
|
+
script:
|
16
|
+
- ruby --version
|
17
|
+
- bundle exec rake spec
|
18
|
+
|
19
|
+
task:
|
20
|
+
name: CI Success
|
21
|
+
container: {image: "busybox"}
|
22
|
+
depends_on:
|
23
|
+
- Linux
|
data/.gitignore
CHANGED
data/Gemfile
CHANGED
@@ -1,4 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
source "https://rubygems.org"
|
2
4
|
|
5
|
+
# Okay only supports Ruby versions under "normal maintenance".
|
6
|
+
# This number should be updated when a Ruby version goes into security
|
7
|
+
# maintenance.
|
8
|
+
#
|
9
|
+
# Ruby maintenance info: https://www.ruby-lang.org/en/downloads/branches/
|
10
|
+
#
|
11
|
+
# NOTE: Update how_is.gemspec when this is updated!
|
12
|
+
ruby ">= 2.6"
|
13
|
+
|
3
14
|
# Specify your gem's dependencies in okay.gemspec
|
4
15
|
gemspec
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
okay (11.0.0)
|
5
|
+
cacert
|
6
|
+
|
7
|
+
GEM
|
8
|
+
remote: https://rubygems.org/
|
9
|
+
specs:
|
10
|
+
cacert (0.6.0)
|
11
|
+
diff-lcs (1.4.4)
|
12
|
+
rake (12.3.3)
|
13
|
+
rspec (3.10.0)
|
14
|
+
rspec-core (~> 3.10.0)
|
15
|
+
rspec-expectations (~> 3.10.0)
|
16
|
+
rspec-mocks (~> 3.10.0)
|
17
|
+
rspec-core (3.10.1)
|
18
|
+
rspec-support (~> 3.10.0)
|
19
|
+
rspec-expectations (3.10.1)
|
20
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
21
|
+
rspec-support (~> 3.10.0)
|
22
|
+
rspec-mocks (3.10.2)
|
23
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
24
|
+
rspec-support (~> 3.10.0)
|
25
|
+
rspec-support (3.10.2)
|
26
|
+
|
27
|
+
PLATFORMS
|
28
|
+
x86_64-freebsd-13
|
29
|
+
|
30
|
+
DEPENDENCIES
|
31
|
+
bundler (~> 2.0)
|
32
|
+
okay!
|
33
|
+
rake (~> 12.3)
|
34
|
+
rspec (~> 3.8)
|
35
|
+
|
36
|
+
RUBY VERSION
|
37
|
+
ruby 3.0.1p64
|
38
|
+
|
39
|
+
BUNDLED WITH
|
40
|
+
2.2.15
|
data/README.md
CHANGED
@@ -43,7 +43,7 @@ Or install it yourself as:
|
|
43
43
|
### HTTP
|
44
44
|
|
45
45
|
* `GET` and `POST` requests supported.
|
46
|
-
* TLS is
|
46
|
+
* TLS is used automatically for HTTPS URLs.
|
47
47
|
* Does not handle HTTP 307 redirects correctly. (Because it changes it to a GET
|
48
48
|
request.)
|
49
49
|
|
@@ -108,6 +108,26 @@ response.body.from_json
|
|
108
108
|
|
109
109
|
```
|
110
110
|
|
111
|
+
### Template Engine
|
112
|
+
|
113
|
+
Okay also provides a basic templating engine.
|
114
|
+
|
115
|
+
It is literally just a wrapper around `Kernel.format()` and `Pathname`.
|
116
|
+
|
117
|
+
Assuming a `./templates/example.html` containing: `a %{foo} c %{bar} e`
|
118
|
+
|
119
|
+
```ruby
|
120
|
+
require "okay/template"
|
121
|
+
|
122
|
+
template = Okay::Template.new("./templates/")
|
123
|
+
template.apply("example.html", {foo: "b", bar: "d"}) #=> "a b c d e"
|
124
|
+
```
|
125
|
+
|
126
|
+
### SimpleOpts (OptionParser improvements)
|
127
|
+
|
128
|
+
See the [example usage in
|
129
|
+
HowIs](https://github.com/how-is/how_is/blob/ad81620/lib/how_is/cli.rb#L39-L74).
|
130
|
+
|
111
131
|
## Development
|
112
132
|
|
113
133
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
data/Rakefile
CHANGED
data/bin/httpbin
ADDED
data/bors.toml
ADDED
data/lib/okay.rb
CHANGED
data/lib/okay/default.rb
CHANGED
data/lib/okay/graphql.rb
CHANGED
@@ -1,8 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require "okay/version"
|
2
4
|
require "okay/http"
|
3
5
|
require "json"
|
4
6
|
|
5
7
|
module Okay
|
8
|
+
##
|
9
|
+
# A simple GraphQL client.
|
10
|
+
#
|
6
11
|
# Example usage:
|
7
12
|
#
|
8
13
|
# require "okay/graphql"
|
@@ -12,7 +17,9 @@ module Okay
|
|
12
17
|
# login
|
13
18
|
# }
|
14
19
|
# }
|
15
|
-
#
|
20
|
+
#
|
21
|
+
# token = ENV["DEMO_GITHUB_TOKEN"]
|
22
|
+
# response = request.submit!(:github, {bearer_token: token})
|
16
23
|
# pp JSON.parse(response.body)
|
17
24
|
class GraphQL
|
18
25
|
Container = Struct.new(:value) do
|
@@ -21,6 +28,8 @@ module Okay
|
|
21
28
|
end
|
22
29
|
end
|
23
30
|
|
31
|
+
##
|
32
|
+
# Implements the GraphQL DSL.
|
24
33
|
class QueryDSL
|
25
34
|
def initialize(indent = 0, &query)
|
26
35
|
@query = ""
|
@@ -29,15 +38,16 @@ module Okay
|
|
29
38
|
instance_exec(&query)
|
30
39
|
end
|
31
40
|
|
41
|
+
# rubocop:disable Metrics/AbcSize
|
32
42
|
def method_missing(name, *args, **kwargs, &block)
|
33
43
|
query_part = @indent_str + name.to_s
|
34
|
-
if args.
|
44
|
+
if !args.empty? || !kwargs.empty?
|
35
45
|
query_part += "("
|
36
46
|
|
37
47
|
query_args = []
|
38
48
|
query_args += args unless args.empty?
|
39
|
-
query_args += kwargs.map { |k,v|
|
40
|
-
[k,v.inspect].join(": ")
|
49
|
+
query_args += kwargs.map { |k, v|
|
50
|
+
[k, v.inspect].join(": ")
|
41
51
|
}
|
42
52
|
query_part += query_args.join(", ")
|
43
53
|
|
@@ -52,12 +62,15 @@ module Okay
|
|
52
62
|
|
53
63
|
@query += "#{query_part}\n"
|
54
64
|
end
|
65
|
+
# rubocop:enable Metrics/AbcSize
|
55
66
|
|
56
67
|
def to_s
|
57
68
|
@query
|
58
69
|
end
|
59
70
|
end
|
60
71
|
|
72
|
+
##
|
73
|
+
# A class for submitting GraphQL queries.
|
61
74
|
class Query
|
62
75
|
def initialize(raw_query = nil, &query)
|
63
76
|
@query = raw_query || QueryDSL.new(&query)
|
@@ -83,12 +96,13 @@ module Okay
|
|
83
96
|
end
|
84
97
|
|
85
98
|
data = {
|
86
|
-
"query" => to_s
|
99
|
+
"query" => to_s,
|
87
100
|
}.to_json
|
88
101
|
Okay::HTTP.post(url, headers: headers, data: data)
|
89
102
|
end
|
90
103
|
|
91
|
-
|
104
|
+
private
|
105
|
+
|
92
106
|
def default_github_headers(token)
|
93
107
|
{
|
94
108
|
"Accept" => "application/vnd.github.v4.idl",
|
@@ -103,6 +117,8 @@ module Okay
|
|
103
117
|
end
|
104
118
|
end
|
105
119
|
|
120
|
+
# :nodoc:
|
121
|
+
# rubocop:disable all
|
106
122
|
class Object
|
107
123
|
def self.const_missing(name)
|
108
124
|
# HACK: if const_missing is called inside Okay::GraphQL#initialize,
|
@@ -122,3 +138,4 @@ class Object
|
|
122
138
|
end
|
123
139
|
end
|
124
140
|
end
|
141
|
+
# rubocop:enable all
|
data/lib/okay/http.rb
CHANGED
@@ -1,11 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require "okay/version"
|
2
|
-
require "openssl/better_defaults"
|
3
4
|
require "net/https"
|
4
5
|
require "cacert"
|
5
6
|
|
6
7
|
Cacert.set_in_env
|
7
8
|
|
9
|
+
# :nodoc:
|
8
10
|
module Net
|
11
|
+
# :nodoc:
|
9
12
|
class HTTPResponse
|
10
13
|
# Returns false if the server encountered an error, true otherwise.
|
11
14
|
def okay?
|
@@ -29,18 +32,18 @@ module Net
|
|
29
32
|
#
|
30
33
|
# Okay::HTTP.get("https://example.org/blah.json").or_raise!.from_json
|
31
34
|
def from_json
|
35
|
+
return nil unless okay?
|
36
|
+
|
32
37
|
require "json"
|
33
38
|
|
34
|
-
|
35
|
-
JSON.parse(body)
|
36
|
-
else
|
37
|
-
nil
|
38
|
-
end
|
39
|
+
JSON.parse(body)
|
39
40
|
end
|
40
41
|
end
|
41
42
|
end
|
42
43
|
|
43
44
|
module Okay
|
45
|
+
##
|
46
|
+
# A wrapper around Net::HTTP, focused on ease of use and flexibility.
|
44
47
|
module HTTP
|
45
48
|
RedirectLimitError = Class.new(StandardError)
|
46
49
|
|
@@ -62,7 +65,8 @@ module Okay
|
|
62
65
|
# were a form.
|
63
66
|
def self.post(url, data: nil, form_data: nil, headers: {})
|
64
67
|
if !data.nil? && !form_data.nil?
|
65
|
-
raise ArgumentError,
|
68
|
+
raise ArgumentError,
|
69
|
+
"cannot specify data and form_data arguments simultaneously."
|
66
70
|
end
|
67
71
|
|
68
72
|
if form_data.nil?
|
@@ -74,6 +78,8 @@ module Okay
|
|
74
78
|
send_request(:Post, url, nil, body, headers)
|
75
79
|
end
|
76
80
|
|
81
|
+
# rubocop:disable Metrics/AbcSize
|
82
|
+
|
77
83
|
# Helper method for actually creating a request.
|
78
84
|
#
|
79
85
|
# @param http_method [Symbol] A symbol representing the class name for
|
@@ -82,7 +88,8 @@ module Okay
|
|
82
88
|
# @param parameters [Hash, nil] Request parameters (for the query string).
|
83
89
|
# @param body [String, nil] Request body.
|
84
90
|
# @param redirect_limit [Numeric] The maximum number of redirects allowed.
|
85
|
-
def self.send_request(http_method, url, parameters, body, headers,
|
91
|
+
def self.send_request(http_method, url, parameters, body, headers,
|
92
|
+
redirect_limit = DEFAULT_REDIRECT_LIMIT)
|
86
93
|
if redirect_limit <= 0
|
87
94
|
raise RedirectLimitError, "request exceeded redirect limit"
|
88
95
|
end
|
@@ -91,11 +98,13 @@ module Okay
|
|
91
98
|
uri = URI.parse(url)
|
92
99
|
|
93
100
|
# Set the query string for the request.
|
94
|
-
|
101
|
+
unless parameters.nil? || parameters.empty?
|
102
|
+
uri.query = URI.encode_www_form(parameters)
|
103
|
+
end
|
95
104
|
|
96
105
|
options = {
|
97
106
|
# If the URI starts with "https://", enable SSL/TLS.
|
98
|
-
use_ssl: (uri.scheme == "https")
|
107
|
+
use_ssl: (uri.scheme == "https"),
|
99
108
|
}
|
100
109
|
|
101
110
|
# Net::HTTP.start() keeps a connection to the host alive
|
@@ -106,7 +115,7 @@ module Okay
|
|
106
115
|
request_class = Net::HTTP.const_get(http_method)
|
107
116
|
|
108
117
|
# Create the request object, but don't send it.
|
109
|
-
request
|
118
|
+
request = request_class.new(uri)
|
110
119
|
|
111
120
|
headers.each do |k, v|
|
112
121
|
request[k] = v
|
@@ -123,13 +132,26 @@ module Okay
|
|
123
132
|
# Follow a redirect.
|
124
133
|
# Decrements +redirect_limit+ while doing so, to avoid redirect loops.
|
125
134
|
# NOTE: Does not handle HTTP 307. https://httpstatuses.com/307
|
126
|
-
|
135
|
+
new_url = response["location"]
|
136
|
+
if new_url.start_with?("/")
|
137
|
+
new_uri = uri.dup
|
138
|
+
new_uri.path = response["location"]
|
139
|
+
new_url = new_uri.to_s
|
140
|
+
elsif new_url.start_with?(".")
|
141
|
+
new_uri = uri.dup
|
142
|
+
new_uri.path += "/" + response["location"]
|
143
|
+
new_url = new_uri.to_s
|
144
|
+
end
|
145
|
+
send_request(:Get, new_url, parameters, body, headers,
|
146
|
+
redirect_limit - 1)
|
127
147
|
else
|
128
148
|
response
|
129
149
|
end
|
130
150
|
end
|
131
151
|
end
|
132
152
|
|
153
|
+
# rubocop:enable Metrics/AbcSize
|
154
|
+
|
133
155
|
# Make +send_request+ a private method.
|
134
156
|
private_class_method :send_request
|
135
157
|
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "okay/version"
|
4
|
+
require "optparse"
|
5
|
+
|
6
|
+
module Okay
|
7
|
+
##
|
8
|
+
# An OptionParser wrapper providing a few convenience functions.
|
9
|
+
class SimpleOpts < OptionParser
|
10
|
+
def initialize(*args, defaults: nil)
|
11
|
+
super(*args)
|
12
|
+
@okay_options = defaults || {}
|
13
|
+
end
|
14
|
+
|
15
|
+
# simple(..., :a)
|
16
|
+
# simple(..., :b)
|
17
|
+
# ==
|
18
|
+
# options = {}
|
19
|
+
# on(...) { |val| options[:a] = val }
|
20
|
+
# on(...) { |val| options[:b] = val }
|
21
|
+
def simple(*args)
|
22
|
+
key = args.pop
|
23
|
+
on(*args) { |*x| @okay_options[key] = x[0] }
|
24
|
+
end
|
25
|
+
|
26
|
+
def parse(args)
|
27
|
+
parse!(args.dup)
|
28
|
+
@okay_options
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "okay/version"
|
4
|
+
require "okay/warning_helpers"
|
5
|
+
require "pathname"
|
6
|
+
|
7
|
+
module Okay
|
8
|
+
##
|
9
|
+
# An extremely simple templating engine.
|
10
|
+
#
|
11
|
+
# General usage:
|
12
|
+
#
|
13
|
+
# template = Okay::Template.new("./templates")
|
14
|
+
# puts template.apply("some_template.html", {"some_key": "some value"})
|
15
|
+
# template.directory #=> "./templates"
|
16
|
+
class Template
|
17
|
+
include WarningHelpers
|
18
|
+
|
19
|
+
attr_reader :directory
|
20
|
+
|
21
|
+
##
|
22
|
+
# Create an Okay::Templates object.
|
23
|
+
#
|
24
|
+
# @param directory [String] Path of the directory containing the templates.
|
25
|
+
def initialize(directory)
|
26
|
+
@directory = directory
|
27
|
+
end
|
28
|
+
|
29
|
+
##
|
30
|
+
# Apply the template referenced by +template_name+ to +data+.
|
31
|
+
#
|
32
|
+
# @param template_name [String] Name of the template to use,
|
33
|
+
# relative to +@directory+ (as passed to +#initialize+).
|
34
|
+
# @param data [Hash] Data to apply the template to.
|
35
|
+
#
|
36
|
+
# @return [String] Result of applying the template to +data+.
|
37
|
+
def apply(template_name, data)
|
38
|
+
template_file = Pathname.new(@directory).join(template_name)
|
39
|
+
template = template_file.read
|
40
|
+
|
41
|
+
# Silence warnings while applying the template, since we don't
|
42
|
+
# generally care about unused keys.
|
43
|
+
silence_warnings { Kernel.format(template, data) }
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
data/lib/okay/version.rb
CHANGED
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "okay/version"
|
4
|
+
|
5
|
+
module Okay
|
6
|
+
##
|
7
|
+
# Helper functions for suppressing warnings when we know it's okay.
|
8
|
+
module WarningHelpers
|
9
|
+
def silence_warnings(&block)
|
10
|
+
with_warnings(nil, &block)
|
11
|
+
end
|
12
|
+
|
13
|
+
def with_warnings(flag, &_block)
|
14
|
+
old_verbose = $VERBOSE
|
15
|
+
$VERBOSE = flag
|
16
|
+
yield
|
17
|
+
ensure
|
18
|
+
$VERBOSE = old_verbose
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/okay.gemspec
CHANGED
@@ -1,4 +1,6 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
# coding: utf-8
|
3
|
+
|
2
4
|
lib = File.expand_path("../lib", __FILE__)
|
3
5
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
6
|
require "okay/version"
|
@@ -21,11 +23,18 @@ Gem::Specification.new do |spec|
|
|
21
23
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
22
24
|
spec.require_paths = ["lib"]
|
23
25
|
|
24
|
-
|
26
|
+
# Okay only supports Ruby versions under "normal maintenance".
|
27
|
+
# This number should be updated when a Ruby version goes into security
|
28
|
+
# maintenance.
|
29
|
+
#
|
30
|
+
# Ruby maintenance info: https://www.ruby-lang.org/en/downloads/branches/
|
31
|
+
#
|
32
|
+
# NOTE: Update Gemfile when this is updated!
|
33
|
+
spec.required_ruby_version = ">= 2.6"
|
34
|
+
|
25
35
|
spec.add_runtime_dependency "cacert"
|
26
36
|
|
27
|
-
spec.add_development_dependency "bundler", "~>
|
28
|
-
spec.add_development_dependency "rake", "~>
|
29
|
-
spec.add_development_dependency "rspec", "~> 3.
|
30
|
-
spec.add_development_dependency "pry"
|
37
|
+
spec.add_development_dependency "bundler", "~> 2.0"
|
38
|
+
spec.add_development_dependency "rake", "~> 12.3"
|
39
|
+
spec.add_development_dependency "rspec", "~> 3.8"
|
31
40
|
end
|
metadata
CHANGED
@@ -1,29 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: okay
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 12.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ellen Marie Dash
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-08-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: openssl-better_defaults
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ">="
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - ">="
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '0'
|
27
13
|
- !ruby/object:Gem::Dependency
|
28
14
|
name: cacert
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
@@ -44,56 +30,42 @@ dependencies:
|
|
44
30
|
requirements:
|
45
31
|
- - "~>"
|
46
32
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
33
|
+
version: '2.0'
|
48
34
|
type: :development
|
49
35
|
prerelease: false
|
50
36
|
version_requirements: !ruby/object:Gem::Requirement
|
51
37
|
requirements:
|
52
38
|
- - "~>"
|
53
39
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
40
|
+
version: '2.0'
|
55
41
|
- !ruby/object:Gem::Dependency
|
56
42
|
name: rake
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
58
44
|
requirements:
|
59
45
|
- - "~>"
|
60
46
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
47
|
+
version: '12.3'
|
62
48
|
type: :development
|
63
49
|
prerelease: false
|
64
50
|
version_requirements: !ruby/object:Gem::Requirement
|
65
51
|
requirements:
|
66
52
|
- - "~>"
|
67
53
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
54
|
+
version: '12.3'
|
69
55
|
- !ruby/object:Gem::Dependency
|
70
56
|
name: rspec
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
72
58
|
requirements:
|
73
59
|
- - "~>"
|
74
60
|
- !ruby/object:Gem::Version
|
75
|
-
version: '3.
|
61
|
+
version: '3.8'
|
76
62
|
type: :development
|
77
63
|
prerelease: false
|
78
64
|
version_requirements: !ruby/object:Gem::Requirement
|
79
65
|
requirements:
|
80
66
|
- - "~>"
|
81
67
|
- !ruby/object:Gem::Version
|
82
|
-
version: '3.
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: pry
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - ">="
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '0'
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - ">="
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '0'
|
68
|
+
version: '3.8'
|
97
69
|
description: Okay, minimalist implementations of common utilities in Ruby. E.g., HTTP
|
98
70
|
fetchers.
|
99
71
|
email:
|
@@ -102,29 +74,35 @@ executables: []
|
|
102
74
|
extensions: []
|
103
75
|
extra_rdoc_files: []
|
104
76
|
files:
|
77
|
+
- ".cirrus.yml"
|
105
78
|
- ".gitignore"
|
106
79
|
- ".rspec"
|
107
|
-
- ".travis.yml"
|
108
80
|
- CODE_OF_CONDUCT.md
|
109
81
|
- Gemfile
|
82
|
+
- Gemfile.lock
|
110
83
|
- LICENSE.txt
|
111
84
|
- README.md
|
112
85
|
- Rakefile
|
113
86
|
- bin/console
|
87
|
+
- bin/httpbin
|
114
88
|
- bin/setup
|
89
|
+
- bors.toml
|
115
90
|
- examples/github-graphql-example.rb
|
116
91
|
- examples/github-graphql-intentional-failure-example.rb
|
117
92
|
- lib/okay.rb
|
118
93
|
- lib/okay/default.rb
|
119
94
|
- lib/okay/graphql.rb
|
120
95
|
- lib/okay/http.rb
|
96
|
+
- lib/okay/simple_opts.rb
|
97
|
+
- lib/okay/template.rb
|
121
98
|
- lib/okay/version.rb
|
99
|
+
- lib/okay/warning_helpers.rb
|
122
100
|
- okay.gemspec
|
123
101
|
homepage: https://github.com/duckinator/okay
|
124
102
|
licenses:
|
125
103
|
- MIT
|
126
104
|
metadata: {}
|
127
|
-
post_install_message:
|
105
|
+
post_install_message:
|
128
106
|
rdoc_options: []
|
129
107
|
require_paths:
|
130
108
|
- lib
|
@@ -132,16 +110,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
132
110
|
requirements:
|
133
111
|
- - ">="
|
134
112
|
- !ruby/object:Gem::Version
|
135
|
-
version: '
|
113
|
+
version: '2.6'
|
136
114
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
137
115
|
requirements:
|
138
116
|
- - ">="
|
139
117
|
- !ruby/object:Gem::Version
|
140
118
|
version: '0'
|
141
119
|
requirements: []
|
142
|
-
|
143
|
-
|
144
|
-
signing_key:
|
120
|
+
rubygems_version: 3.2.15
|
121
|
+
signing_key:
|
145
122
|
specification_version: 4
|
146
123
|
summary: Okay, minimalist implementations of common utilities.
|
147
124
|
test_files: []
|