feat: add unfreeze_on_demand support to all SDKs
Updated Python, JavaScript, Go, Rust, Ruby, Java, and TypeScript SDKs: - Add unfreeze_on_demand field to Service struct/class - Add setUnfreezeOnDemand function to toggle setting via PATCH /services/:id - Add unfreeze_on_demand parameter to createService function
This commit is contained in:
parent
04060aa4da
commit
e58adcd5fe
13 changed files with 435 additions and 10 deletions
|
|
@ -1352,6 +1352,54 @@ public class UnsandboxAsync {
|
|||
return makeRequest("POST", "/services", creds[0], creds[1], data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new service (long-running container) with unfreeze-on-demand option.
|
||||
*
|
||||
* @param name Service name (used for hostname)
|
||||
* @param ports Comma-separated list of ports to expose (e.g., "80,443")
|
||||
* @param bootstrap Bootstrap script or URL to run on service creation
|
||||
* @param unfreezeOnDemand If true, frozen service will auto-wake on HTTP request
|
||||
* @param publicKey Optional API key
|
||||
* @param secretKey Optional API secret
|
||||
* @return CompletableFuture containing response map with service_id
|
||||
*/
|
||||
public static CompletableFuture<Map<String, Object>> createService(
|
||||
String name,
|
||||
String ports,
|
||||
String bootstrap,
|
||||
boolean unfreezeOnDemand,
|
||||
String publicKey,
|
||||
String secretKey
|
||||
) {
|
||||
String[] creds = resolveCredentials(publicKey, secretKey);
|
||||
|
||||
Map<String, Object> data = new LinkedHashMap<>();
|
||||
data.put("name", name);
|
||||
if (ports != null && !ports.isEmpty()) {
|
||||
List<Integer> portList = new ArrayList<>();
|
||||
for (String p : ports.split(",")) {
|
||||
try {
|
||||
portList.add(Integer.parseInt(p.trim()));
|
||||
} catch (NumberFormatException e) {
|
||||
// Skip invalid port
|
||||
}
|
||||
}
|
||||
data.put("ports", portList);
|
||||
}
|
||||
if (bootstrap != null && !bootstrap.isEmpty()) {
|
||||
if (bootstrap.startsWith("http://") || bootstrap.startsWith("https://")) {
|
||||
data.put("bootstrap_url", bootstrap);
|
||||
} else {
|
||||
data.put("bootstrap", bootstrap);
|
||||
}
|
||||
}
|
||||
if (unfreezeOnDemand) {
|
||||
data.put("unfreeze_on_demand", true);
|
||||
}
|
||||
|
||||
return makeRequest("POST", "/services", creds[0], creds[1], data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get details of a specific service.
|
||||
*
|
||||
|
|
@ -1473,6 +1521,30 @@ public class UnsandboxAsync {
|
|||
return makeRequest("POST", "/services/" + serviceId + "/unlock", creds[0], creds[1], new LinkedHashMap<>());
|
||||
}
|
||||
|
||||
/**
|
||||
* Set unfreeze-on-demand for a service.
|
||||
*
|
||||
* <p>When enabled, a frozen service will automatically wake up when it receives
|
||||
* an HTTP request, without requiring an explicit unfreeze API call.
|
||||
*
|
||||
* @param serviceId Service ID to configure
|
||||
* @param enabled True to enable unfreeze-on-demand, false to disable
|
||||
* @param publicKey Optional API key
|
||||
* @param secretKey Optional API secret
|
||||
* @return CompletableFuture containing response map with update confirmation
|
||||
*/
|
||||
public static CompletableFuture<Map<String, Object>> setUnfreezeOnDemand(
|
||||
String serviceId,
|
||||
boolean enabled,
|
||||
String publicKey,
|
||||
String secretKey
|
||||
) {
|
||||
String[] creds = resolveCredentials(publicKey, secretKey);
|
||||
Map<String, Object> data = new LinkedHashMap<>();
|
||||
data.put("unfreeze_on_demand", enabled);
|
||||
return makeRequestWithMethod("PATCH", "/services/" + serviceId, creds[0], creds[1], data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get bootstrap logs for a service.
|
||||
*
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue