ngrok-api 0.9.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 (100) hide show
  1. checksums.yaml +7 -0
  2. data/.github/workflows/ci.yml +21 -0
  3. data/.gitignore +13 -0
  4. data/.rubocop.yml +28 -0
  5. data/.rubocop_airbnb.yml +2 -0
  6. data/.simplecov +1 -0
  7. data/Gemfile +33 -0
  8. data/Guardfile +16 -0
  9. data/README.md +61 -0
  10. data/Rakefile +7 -0
  11. data/doc/NgrokAPI/Client.html +542 -0
  12. data/doc/NgrokAPI/Error.html +305 -0
  13. data/doc/NgrokAPI/Errors/NotFoundError.html +309 -0
  14. data/doc/NgrokAPI/Errors.html +115 -0
  15. data/doc/NgrokAPI/HttpClient.html +1104 -0
  16. data/doc/NgrokAPI/Models/ApiKey.html +1138 -0
  17. data/doc/NgrokAPI/Models/EndpointConfiguration.html +1366 -0
  18. data/doc/NgrokAPI/Models/Listable.html +934 -0
  19. data/doc/NgrokAPI/Models/ReservedDomain.html +2498 -0
  20. data/doc/NgrokAPI/Models/TlsCertificate.html +1064 -0
  21. data/doc/NgrokAPI/Models.html +117 -0
  22. data/doc/NgrokAPI/PagedIterator.html +631 -0
  23. data/doc/NgrokAPI/Services/ApiKeysClient.html +1333 -0
  24. data/doc/NgrokAPI/Services/EndpointConfigurationsClient.html +2201 -0
  25. data/doc/NgrokAPI/Services/ReservedDomainsClient.html +2541 -0
  26. data/doc/NgrokAPI/Services/TlsCertificatesClient.html +1417 -0
  27. data/doc/NgrokAPI/Services.html +117 -0
  28. data/doc/NgrokAPI.html +157 -0
  29. data/doc/_index.html +309 -0
  30. data/doc/class_list.html +51 -0
  31. data/doc/css/common.css +1 -0
  32. data/doc/css/full_list.css +58 -0
  33. data/doc/css/style.css +497 -0
  34. data/doc/file.README.html +126 -0
  35. data/doc/file_list.html +56 -0
  36. data/doc/frames.html +17 -0
  37. data/doc/index.html +126 -0
  38. data/doc/js/app.js +314 -0
  39. data/doc/js/full_list.js +216 -0
  40. data/doc/js/jquery.js +4 -0
  41. data/doc/method_list.html +1227 -0
  42. data/doc/top-level-namespace.html +110 -0
  43. data/docs/NgrokAPI/Client.html +542 -0
  44. data/docs/NgrokAPI/Error.html +305 -0
  45. data/docs/NgrokAPI/Errors/NotFoundError.html +309 -0
  46. data/docs/NgrokAPI/Errors.html +115 -0
  47. data/docs/NgrokAPI/HttpClient.html +1104 -0
  48. data/docs/NgrokAPI/Models/ApiKey.html +1138 -0
  49. data/docs/NgrokAPI/Models/EndpointConfiguration.html +1366 -0
  50. data/docs/NgrokAPI/Models/Listable.html +934 -0
  51. data/docs/NgrokAPI/Models/ReservedDomain.html +2498 -0
  52. data/docs/NgrokAPI/Models/TlsCertificate.html +1064 -0
  53. data/docs/NgrokAPI/Models.html +117 -0
  54. data/docs/NgrokAPI/PagedIterator.html +631 -0
  55. data/docs/NgrokAPI/Services/ApiKeysClient.html +1333 -0
  56. data/docs/NgrokAPI/Services/EndpointConfigurationsClient.html +2201 -0
  57. data/docs/NgrokAPI/Services/ReservedDomainsClient.html +2541 -0
  58. data/docs/NgrokAPI/Services/TlsCertificatesClient.html +1417 -0
  59. data/docs/NgrokAPI/Services.html +117 -0
  60. data/docs/NgrokAPI.html +157 -0
  61. data/docs/_index.html +309 -0
  62. data/docs/class_list.html +51 -0
  63. data/docs/css/common.css +1 -0
  64. data/docs/css/full_list.css +58 -0
  65. data/docs/css/style.css +497 -0
  66. data/docs/file.README.html +126 -0
  67. data/docs/file_list.html +56 -0
  68. data/docs/frames.html +17 -0
  69. data/docs/index.html +126 -0
  70. data/docs/js/app.js +314 -0
  71. data/docs/js/full_list.js +216 -0
  72. data/docs/js/jquery.js +4 -0
  73. data/docs/method_list.html +1227 -0
  74. data/docs/top-level-namespace.html +110 -0
  75. data/lib/ngrokapi/client.rb +49 -0
  76. data/lib/ngrokapi/error.rb +14 -0
  77. data/lib/ngrokapi/errors/not_found_error.rb +16 -0
  78. data/lib/ngrokapi/http_client.rb +132 -0
  79. data/lib/ngrokapi/models/api_key.rb +64 -0
  80. data/lib/ngrokapi/models/endpoint_configuration.rb +119 -0
  81. data/lib/ngrokapi/models/listable.rb +42 -0
  82. data/lib/ngrokapi/models/reserved_domain.rb +211 -0
  83. data/lib/ngrokapi/models/tls_certificate.rb +62 -0
  84. data/lib/ngrokapi/paged_iterator.rb +40 -0
  85. data/lib/ngrokapi/services/api_keys_client.rb +144 -0
  86. data/lib/ngrokapi/services/endpoint_configurations_client.rb +313 -0
  87. data/lib/ngrokapi/services/reserved_domains_client.rb +313 -0
  88. data/lib/ngrokapi/services/tls_certificates_client.rb +161 -0
  89. data/lib/ngrokapi/version.rb +7 -0
  90. data/lib/ngrokapi.rb +13 -0
  91. data/ngrok-api.gemspec +27 -0
  92. data/spec/ngrokapi/client_spec.rb +33 -0
  93. data/spec/ngrokapi/http_client_spec.rb +75 -0
  94. data/spec/ngrokapi/models/api_key_spec.rb +43 -0
  95. data/spec/ngrokapi/models/listable_spec.rb +43 -0
  96. data/spec/ngrokapi/models/reserved_domain_spec.rb +100 -0
  97. data/spec/ngrokapi/paged_iterator_spec.rb +84 -0
  98. data/spec/ngrokapi/services/api_keys_client_spec.rb +127 -0
  99. data/spec/spec_helper.rb +80 -0
  100. metadata +144 -0
@@ -0,0 +1,127 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe NgrokAPI::Services::ApiKeysClient do
4
+ let(:base_url) { 'https://api.ngrok.com' }
5
+ let(:path) { '/api_keys' }
6
+ let(:not_found) do
7
+ NgrokAPI::Errors::NotFoundError.new(response: api_key_result)
8
+ end
9
+
10
+ before(:each) do
11
+ @client = class_double("HttpClient")
12
+ @api_keys_client = NgrokAPI::Services::ApiKeysClient.new(client: @client)
13
+ end
14
+
15
+ describe "#create" do
16
+ it "will make a POST request and return a newly created instance of NgrokAPI::Models::ApiKey" do
17
+ merged = api_key_result
18
+ merged['metadata'] = 'data'
19
+ expect(@client).to receive(:post).with(path, data: { metadata: 'data' }).and_return(merged)
20
+ result2 = @api_keys_client.create(metadata: 'data')
21
+ expect(result2.class).to eq(NgrokAPI::Models::ApiKey)
22
+ expect(result2.id).to eq(api_key_result["id"])
23
+ expect(result2.metadata).to eq('data')
24
+ end
25
+ end
26
+
27
+ describe "#delete" do
28
+ it "will make a DELETE request" do
29
+ expect(@client).to receive(:delete).with("#{path}/#{api_key_result["id"]}").and_return(nil)
30
+ @api_keys_client.delete(id: api_key_result["id"])
31
+ end
32
+ end
33
+
34
+ describe "#delete!" do
35
+ it "will make a DELETE request" do
36
+ expect(@client).to receive(:delete).with("#{path}/#{api_key_result["id"]}", danger: true).
37
+ and_return(nil)
38
+ @api_keys_client.delete!(id: api_key_result["id"])
39
+ end
40
+
41
+ it "will make a DELETE request and return NotFoundError if 404" do
42
+ expect do
43
+ expect(@client).to receive(:delete).with("#{path}/#{api_key_result["id"]}", danger: true).
44
+ and_raise(NgrokAPI::Errors::NotFoundError)
45
+ result2 = @api_keys_client.delete!(id: api_key_result["id"])
46
+ expect(result2).to be nil
47
+ end.to raise_error(NgrokAPI::Errors::NotFoundError)
48
+ end
49
+ end
50
+
51
+ describe "#get" do
52
+ it "will make a GET request and return a NgrokAPI::Models::ApiKey" do
53
+ expect(@client).to receive(:get).with("#{path}/#{api_key_result["id"]}").and_return(api_key_result)
54
+ result2 = @api_keys_client.get(id: api_key_result["id"])
55
+ expect(result2.class).to eq(NgrokAPI::Models::ApiKey)
56
+ expect(result2.id).to eq(api_key_result["id"])
57
+ end
58
+ end
59
+
60
+ describe "#get!" do
61
+ it "will make a GET request and return a NgrokAPI::Models::ApiKey" do
62
+ expect(@client).to receive(:get).with("#{path}/#{api_key_result["id"]}", danger: true).and_return(api_key_result)
63
+ result2 = @api_keys_client.get!(id: api_key_result["id"])
64
+ expect(result2.class).to eq(NgrokAPI::Models::ApiKey)
65
+ expect(result2.id).to eq(api_key_result["id"])
66
+ end
67
+
68
+ it "will make a GET request and return NotFoundError if 404" do
69
+ expect do
70
+ expect(@client).to receive(:get).with("#{path}/#{api_key_result["id"]}", danger: true).
71
+ and_raise(NgrokAPI::Errors::NotFoundError)
72
+ result2 = @api_keys_client.get!(id: api_key_result["id"])
73
+ expect(result2).to be nil
74
+ end.to raise_error(NgrokAPI::Errors::NotFoundError)
75
+ end
76
+ end
77
+
78
+ describe "#list" do
79
+ it "will make a call to list (a GET request) and return a NgrokAPI::Models::Listable" do
80
+ expect(@client).to receive(:list).and_return(api_key_results)
81
+ url = "#{base_url}#{path}?before_id=#{api_key_result["id"]}&limit=1"
82
+ result2 = @api_keys_client.list(url: url)
83
+ expect(result2.class).to eq(NgrokAPI::Models::Listable)
84
+ expect(result2.items.first.id).to eq(api_key_result["id"])
85
+ end
86
+ end
87
+
88
+ describe "#update" do
89
+ it "will make a PATCH request and return an updated instance of NgrokAPI::Models::ApiKey" do
90
+ merged = api_key_result
91
+ merged['metadata'] = 'data'
92
+ expect(@client).to receive(:patch).
93
+ with("#{path}/#{api_key_result["id"]}", data: { metadata: 'data' }).
94
+ and_return(merged)
95
+ result2 = @api_keys_client.update(id: api_key_result["id"], metadata: 'data')
96
+ expect(result2.class).to eq(NgrokAPI::Models::ApiKey)
97
+ expect(result2.id).to eq(api_key_result["id"])
98
+ expect(result2.metadata).to eq('data')
99
+ end
100
+ end
101
+
102
+ describe "#update!" do
103
+ it "will make a PATCH request and return an updated instance of NgrokAPI::Models::ApiKey" do
104
+ merged = api_key_result
105
+ merged['metadata'] = 'data'
106
+ expect(@client).to receive(:patch).
107
+ with("#{path}/#{api_key_result["id"]}", danger: true, data: { metadata: 'data' }).
108
+ and_return(merged)
109
+ result2 = @api_keys_client.update!(id: api_key_result["id"], metadata: 'data')
110
+ expect(result2.class).to eq(NgrokAPI::Models::ApiKey)
111
+ expect(result2.id).to eq(api_key_result["id"])
112
+ expect(result2.metadata).to eq('data')
113
+ end
114
+
115
+ it "will make a PATCH request and return NotFoundError if 404" do
116
+ expect do
117
+ merged = api_key_result
118
+ merged['metadata'] = 'data'
119
+ expect(@client).to receive(:patch).
120
+ with("#{path}/#{api_key_result["id"]}", danger: true, data: { metadata: 'data' }).
121
+ and_raise(NgrokAPI::Errors::NotFoundError)
122
+ result2 = @api_keys_client.update!(id: api_key_result["id"], metadata: 'data')
123
+ expect(result2).to be nil
124
+ end.to raise_error(NgrokAPI::Errors::NotFoundError)
125
+ end
126
+ end
127
+ end
@@ -0,0 +1,80 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "simplecov"
4
+ SimpleCov.start
5
+ require 'pry'
6
+
7
+ require 'webmock/rspec'
8
+ require './lib/ngrokapi'
9
+
10
+ Dir[File.expand_path(File.join(File.dirname(__FILE__), 'support', '**', '*.rb'))].each do |f|
11
+ require f
12
+ end
13
+
14
+ RSpec.configure do |config|
15
+ config.expect_with :rspec do |expectations|
16
+ expectations.include_chain_clauses_in_custom_matcher_descriptions = true
17
+ end
18
+
19
+ config.mock_with :rspec do |mocks|
20
+ mocks.verify_partial_doubles = false
21
+ end
22
+
23
+ config.run_all_when_everything_filtered = true
24
+
25
+ config.disable_monkey_patching!
26
+
27
+ config.warnings = true
28
+
29
+ config.default_formatter = 'doc' if config.files_to_run.one?
30
+
31
+ config.profile_examples = 10
32
+
33
+ config.order = :random
34
+
35
+ Kernel.srand config.seed
36
+ end
37
+
38
+ RSpec::Matchers.define :use_ssl do
39
+ match(&:use_ssl?)
40
+ end
41
+
42
+ RSpec::Matchers.define :use_cert_store do |cert_store|
43
+ match do |connection|
44
+ connection.cert_store == cert_store
45
+ end
46
+ end
47
+
48
+ # Custom objects
49
+ def api_key_result
50
+ {
51
+ "id" => "ak_1xrq8h890dWRYiRdIHeZYCdlyT7",
52
+ "uri" => "https://api.ngrok.com/api_keys/ak_1xrq8h890dWRYiRdIHeZYCdlyT7",
53
+ "description" => "",
54
+ "metadata" => "",
55
+ "created_at" => "2021-09-08T17:49:56Z",
56
+ "token" => nil,
57
+ }
58
+ end
59
+
60
+ def api_key_result2
61
+ {
62
+ "id" => "ak_1xrqAsg8fMHBgD71MSbtr6a0pA2",
63
+ "uri" => "https://api.ngrok.com/api_keys/ak_1xrqAsg8fMHBgD71MSbtr6a0pA2",
64
+ "description" => "",
65
+ "metadata" => "",
66
+ "created_at" => "2021-09-08T17:50:14Z",
67
+ "token" => nil,
68
+ }
69
+ end
70
+
71
+ def api_key_results
72
+ {
73
+ "keys" => [
74
+ api_key_result,
75
+ api_key_result2,
76
+ ],
77
+ "uri" => "https://api.ngrok.com/api_keys",
78
+ "next_page_uri" => nil,
79
+ }
80
+ end
metadata ADDED
@@ -0,0 +1,144 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ngrok-api
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.9.0
5
+ platform: ruby
6
+ authors:
7
+ - ''
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2021-09-24 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: |-
14
+ This library wraps the [ngrok HTTP API](https://ngrok.com/docs/api) to make
15
+ it easier to consume in Ruby.
16
+ email:
17
+ - ''
18
+ executables: []
19
+ extensions: []
20
+ extra_rdoc_files: []
21
+ files:
22
+ - ".github/workflows/ci.yml"
23
+ - ".gitignore"
24
+ - ".rubocop.yml"
25
+ - ".rubocop_airbnb.yml"
26
+ - ".simplecov"
27
+ - Gemfile
28
+ - Guardfile
29
+ - README.md
30
+ - Rakefile
31
+ - doc/NgrokAPI.html
32
+ - doc/NgrokAPI/Client.html
33
+ - doc/NgrokAPI/Error.html
34
+ - doc/NgrokAPI/Errors.html
35
+ - doc/NgrokAPI/Errors/NotFoundError.html
36
+ - doc/NgrokAPI/HttpClient.html
37
+ - doc/NgrokAPI/Models.html
38
+ - doc/NgrokAPI/Models/ApiKey.html
39
+ - doc/NgrokAPI/Models/EndpointConfiguration.html
40
+ - doc/NgrokAPI/Models/Listable.html
41
+ - doc/NgrokAPI/Models/ReservedDomain.html
42
+ - doc/NgrokAPI/Models/TlsCertificate.html
43
+ - doc/NgrokAPI/PagedIterator.html
44
+ - doc/NgrokAPI/Services.html
45
+ - doc/NgrokAPI/Services/ApiKeysClient.html
46
+ - doc/NgrokAPI/Services/EndpointConfigurationsClient.html
47
+ - doc/NgrokAPI/Services/ReservedDomainsClient.html
48
+ - doc/NgrokAPI/Services/TlsCertificatesClient.html
49
+ - doc/_index.html
50
+ - doc/class_list.html
51
+ - doc/css/common.css
52
+ - doc/css/full_list.css
53
+ - doc/css/style.css
54
+ - doc/file.README.html
55
+ - doc/file_list.html
56
+ - doc/frames.html
57
+ - doc/index.html
58
+ - doc/js/app.js
59
+ - doc/js/full_list.js
60
+ - doc/js/jquery.js
61
+ - doc/method_list.html
62
+ - doc/top-level-namespace.html
63
+ - docs/NgrokAPI.html
64
+ - docs/NgrokAPI/Client.html
65
+ - docs/NgrokAPI/Error.html
66
+ - docs/NgrokAPI/Errors.html
67
+ - docs/NgrokAPI/Errors/NotFoundError.html
68
+ - docs/NgrokAPI/HttpClient.html
69
+ - docs/NgrokAPI/Models.html
70
+ - docs/NgrokAPI/Models/ApiKey.html
71
+ - docs/NgrokAPI/Models/EndpointConfiguration.html
72
+ - docs/NgrokAPI/Models/Listable.html
73
+ - docs/NgrokAPI/Models/ReservedDomain.html
74
+ - docs/NgrokAPI/Models/TlsCertificate.html
75
+ - docs/NgrokAPI/PagedIterator.html
76
+ - docs/NgrokAPI/Services.html
77
+ - docs/NgrokAPI/Services/ApiKeysClient.html
78
+ - docs/NgrokAPI/Services/EndpointConfigurationsClient.html
79
+ - docs/NgrokAPI/Services/ReservedDomainsClient.html
80
+ - docs/NgrokAPI/Services/TlsCertificatesClient.html
81
+ - docs/_index.html
82
+ - docs/class_list.html
83
+ - docs/css/common.css
84
+ - docs/css/full_list.css
85
+ - docs/css/style.css
86
+ - docs/file.README.html
87
+ - docs/file_list.html
88
+ - docs/frames.html
89
+ - docs/index.html
90
+ - docs/js/app.js
91
+ - docs/js/full_list.js
92
+ - docs/js/jquery.js
93
+ - docs/method_list.html
94
+ - docs/top-level-namespace.html
95
+ - lib/ngrokapi.rb
96
+ - lib/ngrokapi/client.rb
97
+ - lib/ngrokapi/error.rb
98
+ - lib/ngrokapi/errors/not_found_error.rb
99
+ - lib/ngrokapi/http_client.rb
100
+ - lib/ngrokapi/models/api_key.rb
101
+ - lib/ngrokapi/models/endpoint_configuration.rb
102
+ - lib/ngrokapi/models/listable.rb
103
+ - lib/ngrokapi/models/reserved_domain.rb
104
+ - lib/ngrokapi/models/tls_certificate.rb
105
+ - lib/ngrokapi/paged_iterator.rb
106
+ - lib/ngrokapi/services/api_keys_client.rb
107
+ - lib/ngrokapi/services/endpoint_configurations_client.rb
108
+ - lib/ngrokapi/services/reserved_domains_client.rb
109
+ - lib/ngrokapi/services/tls_certificates_client.rb
110
+ - lib/ngrokapi/version.rb
111
+ - ngrok-api.gemspec
112
+ - spec/ngrokapi/client_spec.rb
113
+ - spec/ngrokapi/http_client_spec.rb
114
+ - spec/ngrokapi/models/api_key_spec.rb
115
+ - spec/ngrokapi/models/listable_spec.rb
116
+ - spec/ngrokapi/models/reserved_domain_spec.rb
117
+ - spec/ngrokapi/paged_iterator_spec.rb
118
+ - spec/ngrokapi/services/api_keys_client_spec.rb
119
+ - spec/spec_helper.rb
120
+ homepage: https://github.com/ngrok/ngrok-api-ruby
121
+ licenses:
122
+ - MIT
123
+ metadata: {}
124
+ post_install_message:
125
+ rdoc_options: []
126
+ require_paths:
127
+ - lib
128
+ required_ruby_version: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: 3.0.0
133
+ required_rubygems_version: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ version: '0'
138
+ requirements: []
139
+ rubygems_version: 3.2.16
140
+ signing_key:
141
+ specification_version: 4
142
+ summary: This library wraps the [ngrok HTTP API](https://ngrok.com/docs/api) to make
143
+ it easier to consume in Ruby.
144
+ test_files: []