ngrok-api 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
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: []