cloudscrape-client 0.2.2 → 0.4.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/.gitignore +1 -0
- data/CHANGELOG.md +27 -0
- data/README.md +15 -14
- data/cloudscrape-client-ruby.gemspec +1 -1
- data/lib/cloudscrape_client/configuration.rb +1 -2
- data/lib/cloudscrape_client/executions.rb +7 -1
- data/lib/cloudscrape_client/executions/result.rb +5 -12
- data/lib/cloudscrape_client/executions/results.rb +31 -0
- data/lib/cloudscrape_client/version.rb +1 -1
- data/postman_collection +15 -15
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5085edcfddc61623f67b1082a7ade15bb7f7fc7d
|
4
|
+
data.tar.gz: 0f78df125cbfe6430bdb253de187eecd10aa0ceb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d395feb17c6fc5211dbbb293de993bb1fb46b4d75b0156ddc543780af0f628d858ae137a9f52d94b1cbafacb67141d4439d5a86ea2ac08634558283475d36425
|
7
|
+
data.tar.gz: b516059b707b2bc147b40d7197ead42bec76d160590c6ab39823963a5cbb8b744c7b1c2eb15c5ed1db3f207159e68780294e412a61619f5b6e7dc72c94ad0a21
|
data/.gitignore
CHANGED
data/CHANGELOG.md
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
## 0.3.0 (2016-03-23)
|
2
|
+
|
3
|
+
Features:
|
4
|
+
|
5
|
+
- wrap executions response in results object to handle collections
|
6
|
+
|
7
|
+
Deprecations:
|
8
|
+
|
9
|
+
- deprecate executions `#result` method in favour of `#results`
|
10
|
+
|
11
|
+
## Changelog Template
|
12
|
+
|
13
|
+
Performance:
|
14
|
+
|
15
|
+
- performance change a
|
16
|
+
|
17
|
+
Features:
|
18
|
+
|
19
|
+
- feature a
|
20
|
+
|
21
|
+
Bugfixes:
|
22
|
+
|
23
|
+
- bugfix a
|
24
|
+
|
25
|
+
Deprecations:
|
26
|
+
|
27
|
+
- deprecation a
|
data/README.md
CHANGED
@@ -2,8 +2,8 @@
|
|
2
2
|
|
3
3
|
Wrapper for CloudScrape API.
|
4
4
|
|
5
|
-
* [API Documentation](https://app.
|
6
|
-
* [Support](
|
5
|
+
* [API Documentation](https://app.dexi.io/#/api)
|
6
|
+
* [Support](http://support.dexi.io/)
|
7
7
|
|
8
8
|
## Requirements
|
9
9
|
|
@@ -27,7 +27,7 @@ Or install it yourself as:
|
|
27
27
|
|
28
28
|
``` ruby
|
29
29
|
CloudscrapeClient.configure do |config|
|
30
|
-
config.base_url = "https://
|
30
|
+
config.base_url = "https://api.dexi.io/"
|
31
31
|
config.api_key = "pol6BFzsASYw4gQBl02b24nt"
|
32
32
|
config.account_id = "a814a8r2-a664-4rcb-759c-9de21744117a"
|
33
33
|
config.user_agent_app = "MY-AGENT"
|
@@ -41,7 +41,7 @@ end
|
|
41
41
|
Some configuration can be set by environment variables:
|
42
42
|
|
43
43
|
``` bash
|
44
|
-
CLOUD_SCRAPE_CLIENT_BASE_URL="https://
|
44
|
+
CLOUD_SCRAPE_CLIENT_BASE_URL="https://api.dexi.io/"
|
45
45
|
CLOUD_SCRAPE_CLIENT_API_KEY="pol6BFzsASYw4gQBl02b24nt"
|
46
46
|
CLOUD_SCRAPE_CLIENT_ACCOUNT_ID="a814a8r2-a664-4rcb-759c-9de21744117a"
|
47
47
|
CLOUD_SCRAPE_CLIENT_USER_AGENT_APP="MY-AGENT"
|
@@ -50,7 +50,7 @@ CLOUD_SCRAPE_CLIENT_TIMEOUT=60000
|
|
50
50
|
CLOUD_SCRAPE_CLIENT_VERBOSE=true
|
51
51
|
```
|
52
52
|
|
53
|
-
* `base_url` sets the CloudScrape API url `https://
|
53
|
+
* `base_url` sets the CloudScrape API url `https://api.dexi.io/`
|
54
54
|
* `api_key` sets the CloudScrape API Key `nil`
|
55
55
|
* `user_agent_app` sets the UserAgent app sent to CloudScrape `CS-RUBY-CLIENT`
|
56
56
|
* `user_agent_version` sets the UserAgent version sent to CloudscrapeClient `1.0`
|
@@ -68,13 +68,13 @@ client = CloudscrapeClient.new(
|
|
68
68
|
)
|
69
69
|
```
|
70
70
|
|
71
|
-
#### Runs (Execute) [Docs](https://app.
|
71
|
+
#### Runs (Execute) [Docs](https://app.dexi.io/#/api/sections/runs/execute)
|
72
72
|
|
73
73
|
``` ruby
|
74
74
|
execution_id = client.runs(run_id).execute
|
75
75
|
```
|
76
76
|
|
77
|
-
#### Runs (Execute with Input) [Docs](https://app.
|
77
|
+
#### Runs (Execute with Input) [Docs](https://app.dexi.io/#/api/sections/runs/executeWithInput)
|
78
78
|
|
79
79
|
When `connect: true` is passed execution will upload it's result to configured integrations for this run.
|
80
80
|
|
@@ -82,7 +82,7 @@ When `connect: true` is passed execution will upload it's result to configured i
|
|
82
82
|
execution_id = client.runs(run_id).execute(input: { url: 'http://google.com' }, connect: true)
|
83
83
|
```
|
84
84
|
|
85
|
-
#### Executions (Get) [Docs](https://app.
|
85
|
+
#### Executions (Get) [Docs](https://app.dexi.io/#/api/sections/executions/get)
|
86
86
|
|
87
87
|
``` ruby
|
88
88
|
execution = client.executions(execution_id).get
|
@@ -94,29 +94,30 @@ execution.stopped? # => false
|
|
94
94
|
execution.ok? # => false
|
95
95
|
```
|
96
96
|
|
97
|
-
#### Executions (Remove) [Docs](https://app.
|
97
|
+
#### Executions (Remove) [Docs](https://app.dexi.io/#/api/sections/executions/remove)
|
98
98
|
|
99
99
|
``` ruby
|
100
100
|
client.executions(execution_id).remove
|
101
101
|
```
|
102
102
|
|
103
|
-
#### Executions (Get Result) [Docs](https://app.
|
103
|
+
#### Executions (Get Result) [Docs](https://app.dexi.io/#/api/sections/executions/getResult)
|
104
104
|
|
105
105
|
Methods are dynamically defined based on headers.
|
106
106
|
|
107
107
|
``` ruby
|
108
|
-
execution = client.executions(execution_id).
|
108
|
+
execution = client.executions(execution_id).results
|
109
109
|
execution.response # => { headers: [...], rows: [...] }
|
110
|
-
execution.
|
110
|
+
execution.collection # => [ #<CloudscrapeClient::Executions::Result:0x007ffd7d132950> ]
|
111
|
+
execution.as_hash # => [ { ... } ]
|
111
112
|
```
|
112
113
|
|
113
|
-
#### Executions (Stop) [Docs](https://app.
|
114
|
+
#### Executions (Stop) [Docs](https://app.dexi.io/#/api/sections/executions/stop)
|
114
115
|
|
115
116
|
``` ruby
|
116
117
|
client.executions(execution_id).stop
|
117
118
|
```
|
118
119
|
|
119
|
-
#### Executions (Continue) [Docs](https://app.
|
120
|
+
#### Executions (Continue) [Docs](https://app.dexi.io/#/api/sections/executions/continue)
|
120
121
|
|
121
122
|
``` ruby
|
122
123
|
client.executions(execution_id).continue
|
@@ -8,7 +8,7 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.name = "cloudscrape-client"
|
9
9
|
spec.version = CloudscrapeClient::VERSION
|
10
10
|
spec.authors = ["Charles J Hardy"]
|
11
|
-
spec.email = ["support@
|
11
|
+
spec.email = ["support@dexi.io"]
|
12
12
|
|
13
13
|
spec.summary = "Wrapper for CloudScrape API"
|
14
14
|
spec.description = "Wrapper for CloudScrape API"
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require "cloudscrape_client/execution_dto"
|
2
2
|
require "cloudscrape_client/executions/get"
|
3
3
|
require "cloudscrape_client/executions/result"
|
4
|
+
require "cloudscrape_client/executions/results"
|
4
5
|
|
5
6
|
class CloudscrapeClient
|
6
7
|
class Executions
|
@@ -13,7 +14,12 @@ class CloudscrapeClient
|
|
13
14
|
end
|
14
15
|
|
15
16
|
def result
|
16
|
-
|
17
|
+
warn "[DEPRECATION] `result` is deprecated. Please use `results` instead."
|
18
|
+
results.collection.first
|
19
|
+
end
|
20
|
+
|
21
|
+
def results
|
22
|
+
@results ||= Results.new(response: dto("result", :get))
|
17
23
|
end
|
18
24
|
|
19
25
|
def remove
|
@@ -1,10 +1,11 @@
|
|
1
1
|
class CloudscrapeClient
|
2
2
|
class Executions
|
3
3
|
class Result
|
4
|
-
attr_reader :
|
4
|
+
attr_reader :row
|
5
5
|
|
6
|
-
def initialize(
|
7
|
-
@
|
6
|
+
def initialize(headers:, row:)
|
7
|
+
@headers = headers
|
8
|
+
@row = row
|
8
9
|
build
|
9
10
|
end
|
10
11
|
|
@@ -13,19 +14,11 @@ class CloudscrapeClient
|
|
13
14
|
end
|
14
15
|
|
15
16
|
def as_hash
|
16
|
-
@as_hash ||= Hash[headers.zip(
|
17
|
+
@as_hash ||= Hash[@headers.zip(row)]
|
17
18
|
end
|
18
19
|
|
19
20
|
private
|
20
21
|
|
21
|
-
def headers
|
22
|
-
response.fetch(:headers, [])
|
23
|
-
end
|
24
|
-
|
25
|
-
def rows
|
26
|
-
response.fetch(:rows, [[]]).first
|
27
|
-
end
|
28
|
-
|
29
22
|
def define_method_for_header
|
30
23
|
->(key, value) { self.class.send(:define_method, key) { value } }
|
31
24
|
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
class CloudscrapeClient
|
2
|
+
class Executions
|
3
|
+
class Results
|
4
|
+
attr_reader :response
|
5
|
+
|
6
|
+
def initialize(response:)
|
7
|
+
@response = response
|
8
|
+
end
|
9
|
+
|
10
|
+
def as_hash
|
11
|
+
collection.map(&:as_hash)
|
12
|
+
end
|
13
|
+
|
14
|
+
def collection
|
15
|
+
response.fetch(:rows, [[]]).map(&result)
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def headers
|
21
|
+
response.fetch(:headers, [])
|
22
|
+
end
|
23
|
+
|
24
|
+
def result
|
25
|
+
lambda do |row|
|
26
|
+
CloudscrapeClient::Executions::Result.new(headers: headers, row: row)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
data/postman_collection
CHANGED
@@ -37,7 +37,7 @@
|
|
37
37
|
{
|
38
38
|
"id": "35175ab6-cccf-b3e6-692c-6a66b8c3d30f",
|
39
39
|
"headers": "X-CloudScrape-Access: d7818ef991012e3c94e8ea3cda149936\nX-CloudScrape-Account: a274a8b2-a664-4acb-959c-9de28644877d\nAccept: application/json\nContent-Type: application/json\nUser-Agent: CS-RUBY-CLIENT/1.0\nAccept-Encoding: UTF-8\nTransfer-Encoding: UTF-8\n",
|
40
|
-
"url": "https://
|
40
|
+
"url": "https://api.dexi.io/executions/1f164370-704b-4402-bc15-ba1d00a19d01",
|
41
41
|
"preRequestScript": "",
|
42
42
|
"pathVariables": {},
|
43
43
|
"method": "GET",
|
@@ -49,7 +49,7 @@
|
|
49
49
|
"helperAttributes": {},
|
50
50
|
"time": 1444436953179,
|
51
51
|
"name": "Get",
|
52
|
-
"description": "Get execution\n\nhttps://app.
|
52
|
+
"description": "Get execution\n\nhttps://app.dexi.io/#/api/sections/executions/get",
|
53
53
|
"collectionId": "929def16-e7c9-d024-873c-bd0b61ee5c46",
|
54
54
|
"responses": [],
|
55
55
|
"folder": "71488e93-9454-db51-8b9c-e15eb0ccfda8"
|
@@ -57,7 +57,7 @@
|
|
57
57
|
{
|
58
58
|
"id": "744fd5a4-c477-2fe8-3bbd-66646767b46d",
|
59
59
|
"headers": "X-CloudScrape-Access: d7818ef991012e3c94e8ea3cda149936\nX-CloudScrape-Account: a274a8b2-a664-4acb-959c-9de28644877d\nAccept: application/json\nContent-Type: application/json\nUser-Agent: CS-RUBY-CLIENT/1.0\nAccept-Encoding: UTF-8\nTransfer-Encoding: UTF-8\n",
|
60
|
-
"url": "https://
|
60
|
+
"url": "https://api.dexi.io/executions/1f164370-704b-4402-bc15-ba1d00a19d01/stop",
|
61
61
|
"preRequestScript": "",
|
62
62
|
"pathVariables": {},
|
63
63
|
"method": "POST",
|
@@ -69,7 +69,7 @@
|
|
69
69
|
"helperAttributes": {},
|
70
70
|
"time": 1444436980442,
|
71
71
|
"name": "Stop",
|
72
|
-
"description": "Stop execution. Note that an execution does not stop immediately.\n\nhttps://app.
|
72
|
+
"description": "Stop execution. Note that an execution does not stop immediately.\n\nhttps://app.dexi.io/#/api/sections/executions/stop",
|
73
73
|
"collectionId": "929def16-e7c9-d024-873c-bd0b61ee5c46",
|
74
74
|
"responses": [],
|
75
75
|
"folder": "71488e93-9454-db51-8b9c-e15eb0ccfda8"
|
@@ -77,7 +77,7 @@
|
|
77
77
|
{
|
78
78
|
"id": "96ea0c3f-a697-e240-e554-c056680beba4",
|
79
79
|
"headers": "X-CloudScrape-Access: d7818ef991012e3c94e8ea3cda149936\nX-CloudScrape-Account: a274a8b2-a664-4acb-959c-9de28644877d\nAccept: application/json\nContent-Type: application/json\nUser-Agent: CS-RUBY-CLIENT/1.0\nAccept-Encoding: UTF-8\nTransfer-Encoding: UTF-8\n",
|
80
|
-
"url": "https://
|
80
|
+
"url": "https://api.dexi.io/executions/1f164370-704b-4402-bc15-ba1d00a19d01/continue",
|
81
81
|
"preRequestScript": "",
|
82
82
|
"pathVariables": {},
|
83
83
|
"method": "POST",
|
@@ -89,7 +89,7 @@
|
|
89
89
|
"helperAttributes": {},
|
90
90
|
"time": 1444436996122,
|
91
91
|
"name": "Continue",
|
92
|
-
"description": "Continue a stopped execution. Note that the execution might not start immediately.\n\nhttps://app.
|
92
|
+
"description": "Continue a stopped execution. Note that the execution might not start immediately.\n\nhttps://app.dexi.io/#/api/sections/executions/continue",
|
93
93
|
"collectionId": "929def16-e7c9-d024-873c-bd0b61ee5c46",
|
94
94
|
"responses": [],
|
95
95
|
"folder": "71488e93-9454-db51-8b9c-e15eb0ccfda8"
|
@@ -97,7 +97,7 @@
|
|
97
97
|
{
|
98
98
|
"id": "c8d593d5-fac6-0dbf-6710-aca83c8aeecc",
|
99
99
|
"headers": "X-CloudScrape-Access: d7818ef991012e3c94e8ea3cda149936\nX-CloudScrape-Account: a274a8b2-a664-4acb-959c-9de28644877d\nAccept: application/json\nContent-Type: application/json\nUser-Agent: CS-RUBY-CLIENT/1.0\nAccept-Encoding: UTF-8\nTransfer-Encoding: UTF-8\n",
|
100
|
-
"url": "https://
|
100
|
+
"url": "https://api.dexi.io/executions/1f164370-704b-4402-bc15-ba1d00a19d01",
|
101
101
|
"preRequestScript": "",
|
102
102
|
"pathVariables": {},
|
103
103
|
"method": "DELETE",
|
@@ -109,7 +109,7 @@
|
|
109
109
|
"helperAttributes": {},
|
110
110
|
"time": 1444437024303,
|
111
111
|
"name": "Remove",
|
112
|
-
"description": "Delete execution permanently\n\nhttps://app.
|
112
|
+
"description": "Delete execution permanently\n\nhttps://app.dexi.io/#/api/sections/executions/remove",
|
113
113
|
"collectionId": "929def16-e7c9-d024-873c-bd0b61ee5c46",
|
114
114
|
"responses": [],
|
115
115
|
"folder": "71488e93-9454-db51-8b9c-e15eb0ccfda8"
|
@@ -117,7 +117,7 @@
|
|
117
117
|
{
|
118
118
|
"id": "d3ecd8c7-c9cf-8c95-5d8b-5a671bfe9403",
|
119
119
|
"headers": "X-CloudScrape-Access: d7818ef991012e3c94e8ea3cda149936\nX-CloudScrape-Account: a274a8b2-a664-4acb-959c-9de28644877d\nAccept: application/json\nContent-Type: application/json\nUser-Agent: CS-RUBY-CLIENT/1.0\nAccept-Encoding: UTF-8\nTransfer-Encoding: UTF-8\n",
|
120
|
-
"url": "https://
|
120
|
+
"url": "https://api.dexi.io/runs/27c719bb-f28f-49f5-aedf-dba2f8e60ba3/execute/inputs?connect=true",
|
121
121
|
"preRequestScript": "",
|
122
122
|
"pathVariables": {},
|
123
123
|
"method": "POST",
|
@@ -129,7 +129,7 @@
|
|
129
129
|
"helperAttributes": {},
|
130
130
|
"time": 1444566409009,
|
131
131
|
"name": "Execute with Input",
|
132
|
-
"description": "Starts new execution of run using the input from the body instead of the run itself.\n\nhttps://app.
|
132
|
+
"description": "Starts new execution of run using the input from the body instead of the run itself.\n\nhttps://app.dexi.io/#/api/sections/runs/executeWithInput",
|
133
133
|
"collectionId": "929def16-e7c9-d024-873c-bd0b61ee5c46",
|
134
134
|
"responses": [],
|
135
135
|
"rawModeData": "{\n \"url\": \"http://google.com\"\n}"
|
@@ -137,7 +137,7 @@
|
|
137
137
|
{
|
138
138
|
"id": "e505df88-7b71-2e0d-798c-8ed3321aca77",
|
139
139
|
"headers": "X-CloudScrape-Access: d7818ef991012e3c94e8ea3cda149936\nX-CloudScrape-Account: a274a8b2-a664-4acb-959c-9de28644877d\nAccept: application/json\nContent-Type: application/json\nUser-Agent: CS-RUBY-CLIENT/1.0\nAccept-Encoding: UTF-8\nTransfer-Encoding: UTF-8\n",
|
140
|
-
"url": "https://
|
140
|
+
"url": "https://api.dexi.io/runs/27c719bb-f28f-49f5-aedf-dba2f8e60ba3/execute",
|
141
141
|
"pathVariables": {},
|
142
142
|
"preRequestScript": "",
|
143
143
|
"method": "POST",
|
@@ -145,7 +145,7 @@
|
|
145
145
|
"data": [],
|
146
146
|
"dataMode": "params",
|
147
147
|
"name": "Execute",
|
148
|
-
"description": "Start new execution of run.\n\nhttps://app.
|
148
|
+
"description": "Start new execution of run.\n\nhttps://app.dexi.io/#/api/sections/runs/execute",
|
149
149
|
"descriptionFormat": "html",
|
150
150
|
"time": 1444433278119,
|
151
151
|
"version": 2,
|
@@ -159,7 +159,7 @@
|
|
159
159
|
{
|
160
160
|
"id": "fd463224-a926-201f-75db-8ef02b8c257b",
|
161
161
|
"headers": "X-CloudScrape-Access: d7818ef991012e3c94e8ea3cda149936\nX-CloudScrape-Account: a274a8b2-a664-4acb-959c-9de28644877d\nAccept: application/json\nContent-Type: application/json\nUser-Agent: CS-RUBY-CLIENT/1.0\nAccept-Encoding: UTF-8\nTransfer-Encoding: UTF-8\n",
|
162
|
-
"url": "https://
|
162
|
+
"url": "https://api.dexi.io/executions/1f164370-704b-4402-bc15-ba1d00a19d01/result",
|
163
163
|
"preRequestScript": "",
|
164
164
|
"pathVariables": {},
|
165
165
|
"method": "GET",
|
@@ -171,10 +171,10 @@
|
|
171
171
|
"helperAttributes": {},
|
172
172
|
"time": 1444436918679,
|
173
173
|
"name": "Result",
|
174
|
-
"description": "Get execution result. As a result can be very large it is advised that you use some method of streaming to parse the result and insert it into your data store of choice.\n\nhttps://app.
|
174
|
+
"description": "Get execution result. As a result can be very large it is advised that you use some method of streaming to parse the result and insert it into your data store of choice.\n\nhttps://app.dexi.io/#/api/sections/executions/getResult",
|
175
175
|
"collectionId": "929def16-e7c9-d024-873c-bd0b61ee5c46",
|
176
176
|
"responses": [],
|
177
177
|
"folder": "71488e93-9454-db51-8b9c-e15eb0ccfda8"
|
178
178
|
}
|
179
179
|
]
|
180
|
-
}
|
180
|
+
}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cloudscrape-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Charles J Hardy
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-07-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -166,7 +166,7 @@ dependencies:
|
|
166
166
|
version: '0'
|
167
167
|
description: Wrapper for CloudScrape API
|
168
168
|
email:
|
169
|
-
- support@
|
169
|
+
- support@dexi.io
|
170
170
|
executables: []
|
171
171
|
extensions: []
|
172
172
|
extra_rdoc_files: []
|
@@ -176,6 +176,7 @@ files:
|
|
176
176
|
- .rubocop.yml
|
177
177
|
- .simplecov
|
178
178
|
- .travis.yml
|
179
|
+
- CHANGELOG.md
|
179
180
|
- CODE_OF_CONDUCT.md
|
180
181
|
- Gemfile
|
181
182
|
- LICENSE.txt
|
@@ -203,6 +204,7 @@ files:
|
|
203
204
|
- lib/cloudscrape_client/executions.rb
|
204
205
|
- lib/cloudscrape_client/executions/get.rb
|
205
206
|
- lib/cloudscrape_client/executions/result.rb
|
207
|
+
- lib/cloudscrape_client/executions/results.rb
|
206
208
|
- lib/cloudscrape_client/run_dto.rb
|
207
209
|
- lib/cloudscrape_client/runs.rb
|
208
210
|
- lib/cloudscrape_client/validate.rb
|