minitel 0.6.0 → 1.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.
@@ -1,120 +1,252 @@
1
- require 'spec_helper'
1
+ # frozen_string_literal: true
2
2
 
3
- describe Minitel::Client, '#initialize' do
4
- before do
5
- url = "https://u:p@foo.com"
6
- client = Minitel::Client.new(url)
7
- @data = client.connection.data
8
- end
3
+ require "spec_helper"
9
4
 
10
- it 'uses the given url and credentials' do
11
- expect(@data[:host]).to eq('foo.com')
12
- expect(@data[:user]).to eq('u')
13
- expect(@data[:password]).to eq('p')
14
- end
5
+ RSpec.describe Minitel::Client do
6
+ describe "#initialize" do
7
+ let(:client) { described_class.new("https://EXAMPLE-KEY0-0000-0000-000000000000:EXAMPLE-SEC0-0000-0000-000000000000@telex.example.com") }
15
8
 
16
- it 'includes the minitel and excon versions in the user agent' do
17
- user_agent = @data[:headers]['User-Agent']
18
- expect(user_agent).to match('minitel')
19
- expect(user_agent).to match(Minitel::VERSION)
20
- expect(user_agent).to match('excon')
21
- expect(user_agent).to match(Excon::VERSION)
22
- end
9
+ it "uses the given url and credentials" do
10
+ expect(client.uri.host).to eq("telex.example.com")
11
+ expect(client.user).to eq("EXAMPLE-KEY0-0000-0000-000000000000")
12
+ expect(client.password).to eq("EXAMPLE-SEC0-0000-0000-000000000000")
13
+ end
23
14
 
24
- it 'requires an https url' do
25
- expect{ Minitel::Client.new('http://user:pass@what.com') }.to raise_error(ArgumentError)
26
- expect{ Minitel::Client.new('https://user:pass@what.com') }.to_not raise_error
15
+ it "requires an https url" do
16
+ expect { described_class.new("http://user:pass@what.com") }.to raise_error(ArgumentError)
17
+ expect { described_class.new("https://user:pass@what.com") }.not_to raise_error
18
+ end
27
19
  end
28
- end
29
20
 
30
- describe Minitel::Client, '#notify_app' do
31
- describe 'action' do
32
- let(:defaults) { {title: 'a title', body: 'a body', app_uuid: SecureRandom.uuid} }
33
- let(:client) { Minitel::Client.new('https://telex.com') }
21
+ describe "#notify_app" do
22
+ let(:defaults) { { title: "a title", body: "a body", app_uuid: SecureRandom.uuid } }
23
+ let(:client) { described_class.new("https://EXAMPLE-KEY0-0000-0000-000000000000:EXAMPLE-SEC0-0000-0000-000000000000@telex.example.com") }
24
+ let!(:stub) do
25
+ WebMock.stub_request(:post, "https://telex.example.com/producer/messages")
26
+ .to_return(status: 201, body: JSON.generate(success: true))
27
+ end
34
28
 
35
- before do
36
- @stub = stub_request(:post, 'https://telex.com/producer/messages').
37
- to_return(status: 201, body: MultiJson.encode(success: true))
29
+ it "posts a proper json body to the producer messages endpoint" do
30
+ client.notify_app(defaults)
31
+ body = JSON.generate(
32
+ title: "a title",
33
+ body: "a body",
34
+ target: { type: "app", id: defaults[:app_uuid] },
35
+ )
36
+ expect(stub.with(body: body)).to have_been_requested
38
37
  end
39
38
 
40
- it 'posts a proper json body to the producer messages endpoint' do
39
+ it "sends basic auth credentials" do
41
40
  client.notify_app(defaults)
42
- body = MultiJson.encode(
43
- title: 'a title',
44
- body: 'a body',
45
- target: {type: 'app', id: defaults[:app_uuid]})
46
- expect(@stub.with(body: body)).to have_been_requested
41
+ expect(stub.with(basic_auth: ["EXAMPLE-KEY0-0000-0000-000000000000", "EXAMPLE-SEC0-0000-0000-000000000000"])).to have_been_requested
47
42
  end
48
43
 
49
- it 'supports actions' do
50
- action = { label: 'omg', url: 'https://foo' }
44
+ it "sends correct content-type and user-agent headers" do
45
+ client.notify_app(defaults)
46
+ expect(stub.with(headers: {
47
+ "Content-Type" => "application/json",
48
+ "User-Agent" => "minitel/#{Minitel::VERSION}",
49
+ })).to have_been_requested
50
+ end
51
+
52
+ it "supports actions" do
53
+ action = { label: "omg", url: "https://foo" }
51
54
  client.notify_app(defaults.merge(action: action))
52
- post_with_action = @stub.with do |req|
53
- body = MultiJson.decode(req.body, symbolize_keys: true)
55
+ post_with_action = stub.with do |req|
56
+ body = JSON.parse(req.body, symbolize_names: true)
54
57
  body[:action] == action
55
58
  end
56
59
  expect(post_with_action).to have_been_requested
57
60
  end
58
61
 
59
- it 'returns a parsed json response' do
62
+ it "returns a parsed json response" do
60
63
  result = client.notify_app(defaults)
61
- expect(result['success']).to eq(true)
64
+ expect(result["success"]).to be(true)
62
65
  end
63
- end
64
- end
65
66
 
67
+ it "raises ClientError on a client error response" do
68
+ WebMock.stub_request(:post, "https://telex.example.com/producer/messages")
69
+ .to_return(status: 422, body: JSON.generate(error: "invalid"))
70
+ expect { client.notify_app(defaults) }.to raise_error(Minitel::HTTP::ClientError)
71
+ end
66
72
 
67
- describe Minitel::Client, '#notify_user' do
68
- let(:defaults) { {title: 'a title', body: 'a body', user_uuid: SecureRandom.uuid} }
69
- let(:client) { Minitel::Client.new('https://telex.com') }
73
+ it "raises NotFound on a 404 response" do
74
+ WebMock.stub_request(:post, "https://telex.example.com/producer/messages")
75
+ .to_return(status: 404, body: "Not Found")
76
+ expect { client.notify_app(defaults) }.to raise_error(Minitel::HTTP::NotFound)
77
+ end
70
78
 
71
- before do
72
- @stub = stub_request(:post, 'https://telex.com/producer/messages').
73
- to_return(status: 201, body: MultiJson.encode(success: true))
74
- end
79
+ it "sets cause to the Minitel error when a caller rescues and re-raises" do
80
+ WebMock.stub_request(:post, "https://telex.example.com/producer/messages")
81
+ .to_return(status: 404, body: "Not Found")
82
+ wrapper_error = Class.new(StandardError)
83
+ begin
84
+ begin
85
+ client.notify_app(defaults)
86
+ rescue => e
87
+ raise wrapper_error, e.message
88
+ end
89
+ rescue wrapper_error => e
90
+ expect(e.cause).to be_instance_of(Minitel::HTTP::NotFound)
91
+ end
92
+ end
75
93
 
76
- it 'posts a proper json body to the producer messages endpoint' do
77
- client.notify_user(defaults)
78
- body = MultiJson.encode(
79
- title: 'a title',
80
- body: 'a body',
81
- target: {type: 'user', id: defaults[:user_uuid]})
82
- expect(@stub.with(body: body)).to have_been_requested
83
- end
94
+ it "raises TooManyRequests on a 429 response" do
95
+ WebMock.stub_request(:post, "https://telex.example.com/producer/messages")
96
+ .to_return(status: 429, body: "Rate Limited")
97
+ expect { client.notify_app(defaults) }.to raise_error(Minitel::HTTP::TooManyRequests)
98
+ end
84
99
 
85
- it 'supports actions' do
86
- action = { label: 'omg', url: 'https://foo' }
87
- client.notify_user(defaults.merge(action: action))
88
- post_with_action = @stub.with do |req|
89
- body = MultiJson.decode(req.body, symbolize_keys: true)
90
- body[:action] == action
100
+ it "raises ServerError on a server error response" do
101
+ WebMock.stub_request(:post, "https://telex.example.com/producer/messages")
102
+ .to_return(status: 500, body: "Internal Server Error")
103
+ expect { client.notify_app(defaults) }.to raise_error(Minitel::HTTP::ServerError)
91
104
  end
92
- expect(post_with_action).to have_been_requested
93
- end
94
105
 
95
- it 'returns a parsed json response' do
96
- result = client.notify_user(defaults)
97
- expect(result['success']).to eq(true)
106
+ it "raises on an unexpected success status code" do
107
+ WebMock.stub_request(:post, "https://telex.example.com/producer/messages")
108
+ .to_return(status: 200, body: JSON.generate(success: true))
109
+ expect { client.notify_app(defaults) }.to raise_error(Minitel::HTTP::Error)
110
+ end
98
111
  end
99
- end
100
112
 
101
- describe Minitel::Client, '#add_followup' do
102
- let(:defaults) { {body: 'a body', message_uuid: SecureRandom.uuid} }
103
- let(:client) { Minitel::Client.new('https://telex.com') }
113
+ describe "#notify_user" do
114
+ let(:defaults) { { title: "a title", body: "a body", user_uuid: SecureRandom.uuid } }
115
+ let(:client) { described_class.new("https://EXAMPLE-KEY0-0000-0000-000000000000:EXAMPLE-SEC0-0000-0000-000000000000@telex.example.com") }
116
+ let!(:stub) do
117
+ WebMock.stub_request(:post, "https://telex.example.com/producer/messages")
118
+ .to_return(status: 201, body: JSON.generate(success: true))
119
+ end
104
120
 
105
- before do
106
- @stub = stub_request(:post, "https://telex.com/producer/messages/#{defaults[:message_uuid]}/followups").
107
- to_return(status: 201, body: MultiJson.encode(success: true))
108
- end
121
+ it "posts a proper json body to the producer messages endpoint" do
122
+ client.notify_user(defaults)
123
+ body = JSON.generate(
124
+ title: "a title",
125
+ body: "a body",
126
+ target: { type: "user", id: defaults[:user_uuid] },
127
+ )
128
+ expect(stub.with(body: body)).to have_been_requested
129
+ end
130
+
131
+ it "sends basic auth credentials" do
132
+ client.notify_user(defaults)
133
+ expect(stub.with(basic_auth: ["EXAMPLE-KEY0-0000-0000-000000000000", "EXAMPLE-SEC0-0000-0000-000000000000"])).to have_been_requested
134
+ end
135
+
136
+ it "sends correct content-type and user-agent headers" do
137
+ client.notify_user(defaults)
138
+ expect(stub.with(headers: {
139
+ "Content-Type" => "application/json",
140
+ "User-Agent" => "minitel/#{Minitel::VERSION}",
141
+ })).to have_been_requested
142
+ end
109
143
 
110
- it 'posts a proper json body to the producer messages endpoint' do
111
- client.add_followup(defaults)
112
- body = MultiJson.encode(body: 'a body')
113
- expect(@stub.with(body: body)).to have_been_requested
144
+ it "supports actions" do
145
+ action = { label: "omg", url: "https://foo" }
146
+ client.notify_user(defaults.merge(action: action))
147
+ post_with_action = stub.with do |req|
148
+ body = JSON.parse(req.body, symbolize_names: true)
149
+ body[:action] == action
150
+ end
151
+ expect(post_with_action).to have_been_requested
152
+ end
153
+
154
+ it "returns a parsed json response" do
155
+ result = client.notify_user(defaults)
156
+ expect(result["success"]).to be(true)
157
+ end
158
+
159
+ it "raises ClientError on a client error response" do
160
+ WebMock.stub_request(:post, "https://telex.example.com/producer/messages")
161
+ .to_return(status: 422, body: JSON.generate(error: "invalid"))
162
+ expect { client.notify_user(defaults) }.to raise_error(Minitel::HTTP::ClientError)
163
+ end
164
+
165
+ it "raises NotFound on a 404 response" do
166
+ WebMock.stub_request(:post, "https://telex.example.com/producer/messages")
167
+ .to_return(status: 404, body: "Not Found")
168
+ expect { client.notify_user(defaults) }.to raise_error(Minitel::HTTP::NotFound)
169
+ end
170
+
171
+ it "raises TooManyRequests on a 429 response" do
172
+ WebMock.stub_request(:post, "https://telex.example.com/producer/messages")
173
+ .to_return(status: 429, body: "Rate Limited")
174
+ expect { client.notify_user(defaults) }.to raise_error(Minitel::HTTP::TooManyRequests)
175
+ end
176
+
177
+ it "raises ServerError on a server error response" do
178
+ WebMock.stub_request(:post, "https://telex.example.com/producer/messages")
179
+ .to_return(status: 500, body: "Internal Server Error")
180
+ expect { client.notify_user(defaults) }.to raise_error(Minitel::HTTP::ServerError)
181
+ end
182
+
183
+ it "raises on an unexpected success status code" do
184
+ WebMock.stub_request(:post, "https://telex.example.com/producer/messages")
185
+ .to_return(status: 200, body: JSON.generate(success: true))
186
+ expect { client.notify_user(defaults) }.to raise_error(Minitel::HTTP::Error)
187
+ end
114
188
  end
115
189
 
116
- it 'returns a parsed json response' do
117
- result = client.add_followup(defaults)
118
- expect(result['success']).to eq(true)
190
+ describe "#add_followup" do
191
+ let(:defaults) { { body: "a body", message_uuid: SecureRandom.uuid } }
192
+ let(:client) { described_class.new("https://EXAMPLE-KEY0-0000-0000-000000000000:EXAMPLE-SEC0-0000-0000-000000000000@telex.example.com") }
193
+ let!(:stub) do
194
+ WebMock.stub_request(:post, "https://telex.example.com/producer/messages/#{defaults[:message_uuid]}/followups")
195
+ .to_return(status: 201, body: JSON.generate(success: true))
196
+ end
197
+
198
+ it "posts a proper json body to the producer messages endpoint" do
199
+ client.add_followup(defaults)
200
+ body = JSON.generate(body: "a body")
201
+ expect(stub.with(body: body)).to have_been_requested
202
+ end
203
+
204
+ it "sends basic auth credentials" do
205
+ client.add_followup(defaults)
206
+ expect(stub.with(basic_auth: ["EXAMPLE-KEY0-0000-0000-000000000000", "EXAMPLE-SEC0-0000-0000-000000000000"])).to have_been_requested
207
+ end
208
+
209
+ it "sends correct content-type and user-agent headers" do
210
+ client.add_followup(defaults)
211
+ expect(stub.with(headers: {
212
+ "Content-Type" => "application/json",
213
+ "User-Agent" => "minitel/#{Minitel::VERSION}",
214
+ })).to have_been_requested
215
+ end
216
+
217
+ it "returns a parsed json response" do
218
+ result = client.add_followup(defaults)
219
+ expect(result["success"]).to be(true)
220
+ end
221
+
222
+ it "raises ClientError on a client error response" do
223
+ WebMock.stub_request(:post, "https://telex.example.com/producer/messages/#{defaults[:message_uuid]}/followups")
224
+ .to_return(status: 422, body: JSON.generate(error: "invalid"))
225
+ expect { client.add_followup(defaults) }.to raise_error(Minitel::HTTP::ClientError)
226
+ end
227
+
228
+ it "raises NotFound on a 404 response" do
229
+ WebMock.stub_request(:post, "https://telex.example.com/producer/messages/#{defaults[:message_uuid]}/followups")
230
+ .to_return(status: 404, body: "Not Found")
231
+ expect { client.add_followup(defaults) }.to raise_error(Minitel::HTTP::NotFound)
232
+ end
233
+
234
+ it "raises TooManyRequests on a 429 response" do
235
+ WebMock.stub_request(:post, "https://telex.example.com/producer/messages/#{defaults[:message_uuid]}/followups")
236
+ .to_return(status: 429, body: "Rate Limited")
237
+ expect { client.add_followup(defaults) }.to raise_error(Minitel::HTTP::TooManyRequests)
238
+ end
239
+
240
+ it "raises ServerError on a server error response" do
241
+ WebMock.stub_request(:post, "https://telex.example.com/producer/messages/#{defaults[:message_uuid]}/followups")
242
+ .to_return(status: 500, body: "Internal Server Error")
243
+ expect { client.add_followup(defaults) }.to raise_error(Minitel::HTTP::ServerError)
244
+ end
245
+
246
+ it "raises on an unexpected success status code" do
247
+ WebMock.stub_request(:post, "https://telex.example.com/producer/messages/#{defaults[:message_uuid]}/followups")
248
+ .to_return(status: 200, body: JSON.generate(success: true))
249
+ expect { client.add_followup(defaults) }.to raise_error(Minitel::HTTP::Error)
250
+ end
119
251
  end
120
252
  end
@@ -1,41 +1,40 @@
1
- require 'spec_helper'
2
-
3
- describe Minitel::StrictArgs, '.enforce' do
4
- describe 'arguments' do
5
- before do
6
- @hash = {one: 1, two: 2, uuid: SecureRandom.uuid}
7
- @required = [:one, :uuid]
8
- @optional = [:two]
9
- end
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
10
4
 
11
- it 'works when all listed args are present' do
12
- expect { Minitel::StrictArgs.enforce(@hash, @required, @optional, :uuid) }.to_not raise_error
5
+ RSpec.describe Minitel::StrictArgs do
6
+ describe ".enforce" do
7
+ let(:input) { { one: 1, two: 2, uuid: SecureRandom.uuid } }
8
+ let(:required_keys) { [:one, :uuid] }
9
+ let(:optional_keys) { [:two] }
10
+
11
+ it "works when all listed args are present" do
12
+ expect { described_class.enforce(input, required_keys, optional_keys, :uuid) }.not_to raise_error
13
13
  end
14
14
 
15
- it 'works when optional args are omitted' do
16
- @hash.delete(:two)
17
- expect { Minitel::StrictArgs.enforce(@hash, @required, @optional, :uuid) }.to_not raise_error
15
+ it "works when optional args are omitted" do
16
+ input.delete(:two)
17
+ expect { described_class.enforce(input, required_keys, optional_keys, :uuid) }.not_to raise_error
18
18
  end
19
19
 
20
20
  it "fails when a key is missing from the arg hash" do
21
- @hash.delete(:one)
22
- expect { Minitel::StrictArgs.enforce(@hash, @required, @optional, :uuid) }.to raise_error(ArgumentError)
21
+ input.delete(:one)
22
+ expect { described_class.enforce(input, required_keys, optional_keys, :uuid) }.to raise_error(ArgumentError)
23
23
  end
24
24
 
25
25
  it "fails when a key is nil" do
26
- @hash[:one] = nil
27
- expect { Minitel::StrictArgs.enforce(@hash, @required, @optional, :uuid) }.to raise_error(ArgumentError)
26
+ input[:one] = nil
27
+ expect { described_class.enforce(input, required_keys, optional_keys, :uuid) }.to raise_error(ArgumentError)
28
28
  end
29
29
 
30
- it 'fails if the uuid column uuid is not a uuid' do
31
- @hash[:uuid] = "not a uuid"
32
- expect { Minitel::StrictArgs.enforce(@hash, @required, @optional, :uuid) }.to raise_error(ArgumentError)
30
+ it "fails if the uuid column uuid is not a uuid" do
31
+ input[:uuid] = "not a uuid"
32
+ expect { described_class.enforce(input, required_keys, optional_keys, :uuid) }.to raise_error(ArgumentError)
33
33
  end
34
34
 
35
- it 'fails if there is an extra key' do
36
- @hash.merge!( {foo: 3} )
37
- expect { Minitel::StrictArgs.enforce(@hash, @required, @optional, :uuid) }.to raise_error(ArgumentError)
35
+ it "fails if there is an extra key" do
36
+ input[:foo] = 3
37
+ expect { described_class.enforce(input, required_keys, optional_keys, :uuid) }.to raise_error(ArgumentError)
38
38
  end
39
39
  end
40
40
  end
41
-
data/spec/spec_helper.rb CHANGED
@@ -1,7 +1,11 @@
1
- require 'rubygems'
2
- require 'rspec'
3
- require 'webmock/rspec'
4
- require 'minitel'
1
+ # frozen_string_literal: true
2
+
3
+ require "rubygems"
4
+ require "rspec"
5
+ require "webmock/rspec"
6
+ require "minitel"
5
7
 
6
8
  RSpec.configure do |config|
9
+ config.order = :random
10
+ config.disable_monkey_patching!
7
11
  end
metadata CHANGED
@@ -1,99 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minitel
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Will Leinweber
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-05-01 00:00:00.000000000 Z
11
+ date: 2026-05-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: excon
14
+ name: json
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '0.20'
19
+ version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '0.20'
27
- - !ruby/object:Gem::Dependency
28
- name: multi_json
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '1.0'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '1.0'
41
- - !ruby/object:Gem::Dependency
42
- name: guard
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '2.6'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '2.6'
55
- - !ruby/object:Gem::Dependency
56
- name: guard-rspec
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '4.3'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '4.3'
69
- - !ruby/object:Gem::Dependency
70
- name: rspec
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: '3.0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: '3.0'
83
- - !ruby/object:Gem::Dependency
84
- name: webmock
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: '1.20'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: '1.20'
26
+ version: '0'
97
27
  description: "\U0001D54B\U0001D53C\U0001D543\U0001D53C\U0001D54F client"
98
28
  email:
99
29
  - will@bitfission.com
@@ -104,15 +34,19 @@ files:
104
34
  - ".github/workflows/ruby.yml"
105
35
  - ".gitignore"
106
36
  - ".rspec"
37
+ - ".rubocop.yml"
38
+ - ".rubocop_standardrb.yml"
39
+ - ".rubocop_standardrb_overrides.yml"
40
+ - CHANGELOG.md
107
41
  - CODEOWNERS
108
42
  - Gemfile
109
43
  - Guardfile
110
44
  - LICENSE
45
+ - README.md
111
46
  - Rakefile
112
- - Readme.md
113
- - changelog.txt
114
47
  - lib/minitel.rb
115
48
  - lib/minitel/client.rb
49
+ - lib/minitel/errors.rb
116
50
  - lib/minitel/strict_args.rb
117
51
  - lib/minitel/version.rb
118
52
  - minitel.gemspec
@@ -131,18 +65,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
131
65
  requirements:
132
66
  - - ">="
133
67
  - !ruby/object:Gem::Version
134
- version: '0'
68
+ version: '3.2'
135
69
  required_rubygems_version: !ruby/object:Gem::Requirement
136
70
  requirements:
137
71
  - - ">="
138
72
  - !ruby/object:Gem::Version
139
73
  version: '0'
140
74
  requirements: []
141
- rubygems_version: 3.5.11
75
+ rubygems_version: 3.5.22
142
76
  signing_key:
143
77
  specification_version: 4
144
78
  summary: "\U0001D54B\U0001D53C\U0001D543\U0001D53C\U0001D54F client: see https://github.com/heroku/telex"
145
- test_files:
146
- - spec/minitel/client_spec.rb
147
- - spec/minitel/strict_args_spec.rb
148
- - spec/spec_helper.rb
79
+ test_files: []
data/changelog.txt DELETED
@@ -1,38 +0,0 @@
1
- 0.6.0 2025-05-01
2
- ================
3
-
4
- Allow use of newer versions of excon
5
-
6
- 0.5.0 2021-08-06
7
- ================
8
-
9
- also send JSON content type
10
- move to GitHub Actions
11
-
12
- 0.4.0 XXXX-XX-XX
13
- ================
14
-
15
- 0.3.0 2014-10-21
16
- ================
17
-
18
- Add Client#add_followup for adding followup to a previous notification
19
-
20
- 0.2.0 2014-10-10
21
- ================
22
-
23
- Add Client#notify_user for sending notifications to a single user
24
-
25
- 0.1.1 2014-10-08
26
- ================
27
-
28
- Add a User-Agent header
29
-
30
- 0.1.0 2014-10-08
31
- ================
32
-
33
- Bump minimum version of Excon to redact passwords on errors
34
-
35
- 0.0.1 2014-10-04
36
- ================
37
-
38
- initial release