Skip to content

Commit 9d11a6d

Browse files
committed
extract netlify api client
1 parent 003a435 commit 9d11a6d

File tree

14 files changed

+4851
-4041
lines changed

14 files changed

+4851
-4041
lines changed
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
name: test
2+
3+
on:
4+
push:
5+
branches:
6+
- master
7+
- main
8+
pull_request:
9+
10+
jobs:
11+
test:
12+
runs-on: ubuntu-latest
13+
steps:
14+
- uses: actions/checkout@v4
15+
- uses: erlef/setup-beam@v1
16+
with:
17+
otp-version: "27.1.2"
18+
gleam-version: "1.10.0"
19+
rebar3-version: "3"
20+
# elixir-version: "1"
21+
- run: gleam deps download
22+
- run: gleam test
23+
- run: gleam format --check src test

sdks/netlify/.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
*.beam
2+
*.ez
3+
/build
4+
erl_crash.dump

sdks/netlify/README.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# netlify
2+
3+
[![Package Version](https://img.shields.io/hexpm/v/netlify)](https://hex.pm/packages/netlify)
4+
[![Hex Docs](https://img.shields.io/badge/hex-docs-ffaff3)](https://hexdocs.pm/netlify/)
5+
6+
```sh
7+
gleam add netlify@1
8+
```
9+
```gleam
10+
import netlify
11+
12+
pub fn main() -> Nil {
13+
// TODO: An example of the project in use
14+
}
15+
```
16+
17+
Further documentation can be found at <https://hexdocs.pm/netlify>.
18+
19+
## Development
20+
21+
```sh
22+
gleam run # Run the project
23+
gleam test # Run the tests
24+
```

sdks/netlify/gleam.toml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
name = "netlify"
2+
version = "1.0.0"
3+
target = "javascript"
4+
description = "Gleam client for the netlify API"
5+
licences = ["Apache-2.0"]
6+
repository = { type = "github", user = "midas-framework", repo = "midas_sdk", path = "sdks/netlify" }
7+
links = []
8+
9+
10+
[dependencies]
11+
gleam_stdlib = ">= 0.44.0 and < 2.0.0"
12+
snag = ">= 1.1.0 and < 2.0.0"
13+
gleam_http = ">= 3.7.2 and < 4.0.0"
14+
midas = ">= 1.4.1 and < 2.0.0"
15+
gleam_json = ">= 2.3.0 and < 3.0.0"
16+
17+
[dev-dependencies]
18+
gleeunit = ">= 1.0.0 and < 2.0.0"
19+
oas_generator = ">= 1.0.0 and < 2.0.0"

sdks/netlify/manifest.toml

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# This file was generated by Gleam
2+
# You typically do not need to edit this file
3+
4+
packages = [
5+
{ name = "conversation", version = "2.0.1", build_tools = ["gleam"], requirements = ["gleam_http", "gleam_javascript", "gleam_stdlib"], otp_app = "conversation", source = "hex", outer_checksum = "103DF47463B8432AB713D6643DC17244B9C82E2B172A343150805129FE584A2F" },
6+
{ name = "filepath", version = "1.1.2", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "filepath", source = "hex", outer_checksum = "B06A9AF0BF10E51401D64B98E4B627F1D2E48C154967DA7AF4D0914780A6D40A" },
7+
{ name = "glam", version = "2.0.2", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "glam", source = "hex", outer_checksum = "4932A2D139AB0389E149396407F89654928D7B815E212BB02F13C66F53B1BBA1" },
8+
{ name = "glance", version = "3.0.0", build_tools = ["gleam"], requirements = ["gleam_stdlib", "glexer"], otp_app = "glance", source = "hex", outer_checksum = "F3458292AFB4136CEE23142A8727C1270494E7A96978B9B9F9D2C1618583EF3D" },
9+
{ name = "glance_printer", version = "3.0.0", build_tools = ["gleam"], requirements = ["glam", "glance", "gleam_stdlib"], otp_app = "glance_printer", source = "hex", outer_checksum = "8386C156B413B90828884577F89AADD4C131AA1C3DAFC826607BAEE40E636ACE" },
10+
{ name = "gleam_community_ansi", version = "1.4.3", build_tools = ["gleam"], requirements = ["gleam_community_colour", "gleam_regexp", "gleam_stdlib"], otp_app = "gleam_community_ansi", source = "hex", outer_checksum = "8A62AE9CC6EA65BEA630D95016D6C07E4F9973565FA3D0DE68DC4200D8E0DD27" },
11+
{ name = "gleam_community_colour", version = "2.0.0", build_tools = ["gleam"], requirements = ["gleam_json", "gleam_stdlib"], otp_app = "gleam_community_colour", source = "hex", outer_checksum = "FDD6AC62C6EC8506C005949A4FCEF032038191D5EAAEC3C9A203CD53AE956ACA" },
12+
{ name = "gleam_fetch", version = "1.3.0", build_tools = ["gleam"], requirements = ["gleam_http", "gleam_javascript", "gleam_stdlib"], otp_app = "gleam_fetch", source = "hex", outer_checksum = "2CBF9F2E1C71AEBBFB13A9D5720CD8DB4263EB02FE60C5A7A1C6E17B0151C20C" },
13+
{ name = "gleam_http", version = "3.7.2", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_http", source = "hex", outer_checksum = "8A70D2F70BB7CFEB5DF048A2183FFBA91AF6D4CF5798504841744A16999E33D2" },
14+
{ name = "gleam_javascript", version = "1.0.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_javascript", source = "hex", outer_checksum = "EF6C77A506F026C6FB37941889477CD5E4234FCD4337FF0E9384E297CB8F97EB" },
15+
{ name = "gleam_json", version = "2.3.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_json", source = "hex", outer_checksum = "C55C5C2B318533A8072D221C5E06E5A75711C129E420DD1CE463342106012E5D" },
16+
{ name = "gleam_package_interface", version = "1.2.0", build_tools = ["gleam"], requirements = ["gleam_json", "gleam_stdlib"], otp_app = "gleam_package_interface", source = "hex", outer_checksum = "80D8B1842ACC6CF50E53FF1B220FF57E2B3A60FAF19DD885EC683CDED64C2C52" },
17+
{ name = "gleam_regexp", version = "1.1.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_regexp", source = "hex", outer_checksum = "9C215C6CA84A5B35BB934A9B61A9A306EC743153BE2B0425A0D032E477B062A9" },
18+
{ name = "gleam_stdlib", version = "0.59.0", build_tools = ["gleam"], requirements = [], otp_app = "gleam_stdlib", source = "hex", outer_checksum = "F8FEE9B35797301994B81AF75508CF87C328FE1585558B0FFD188DC2B32EAA95" },
19+
{ name = "gleeunit", version = "1.3.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleeunit", source = "hex", outer_checksum = "A7DD6C07B7DA49A6E28796058AA89E651D233B357D5607006D70619CD89DAAAB" },
20+
{ name = "glen", version = "2.2.2", build_tools = ["gleam"], requirements = ["conversation", "filepath", "gleam_community_ansi", "gleam_http", "gleam_javascript", "gleam_stdlib", "marceau"], otp_app = "glen", source = "hex", outer_checksum = "62DF8F8305650237B58B7F29C01016383950479D35FCD8393800CAB94675B0DE" },
21+
{ name = "glen_node", version = "0.0.3", build_tools = ["gleam"], requirements = ["gleam_javascript", "glen"], otp_app = "glen_node", source = "hex", outer_checksum = "0A81302C16B9719FC47FB022A127A51EA668D4F78CE6DCCCF430A3C098395511" },
22+
{ name = "glexer", version = "2.2.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "glexer", source = "hex", outer_checksum = "5C235CBDF4DA5203AD5EAB1D6D8B456ED8162C5424FE2309CFFB7EF438B7C269" },
23+
{ name = "javascript_mutable_reference", version = "1.0.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "javascript_mutable_reference", source = "hex", outer_checksum = "3EE953EE7FE4FAFD17C16F24184F4C832FE260D761753F28F20D4AC1DA080F03" },
24+
{ name = "justin", version = "1.0.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "justin", source = "hex", outer_checksum = "7FA0C6DB78640C6DC5FBFD59BF3456009F3F8B485BF6825E97E1EB44E9A1E2CD" },
25+
{ name = "marceau", version = "1.3.0", build_tools = ["gleam"], requirements = [], otp_app = "marceau", source = "hex", outer_checksum = "2D1C27504BEF45005F5DFB18591F8610FB4BFA91744878210BDC464412EC44E9" },
26+
{ name = "midas", version = "1.4.1", build_tools = ["gleam"], requirements = ["filepath", "gleam_http", "gleam_json", "gleam_stdlib", "snag"], otp_app = "midas", source = "hex", outer_checksum = "5D0C9F924D527DCA35D818A2D87A1ED0923FA3CAF59976F1A2D1C970A30C9C07" },
27+
{ name = "midas_node", version = "1.2.6", build_tools = ["gleam"], requirements = ["filepath", "gleam_fetch", "gleam_http", "gleam_javascript", "gleam_json", "gleam_package_interface", "gleam_stdlib", "glen", "glen_node", "javascript_mutable_reference", "midas", "plinth", "shellout", "simplifile", "snag"], otp_app = "midas_node", source = "hex", outer_checksum = "B81500DEE4094612BC89D257CAF517AEE433B79D930EC9AF5381BE1B664F546B" },
28+
{ name = "oas", version = "2.0.0", build_tools = ["gleam"], requirements = ["gleam_http", "gleam_stdlib"], otp_app = "oas", source = "hex", outer_checksum = "FD3B052F48FA9470005E5A1A1F281D495FF25274DB4A38FA38C36B4BF72A189E" },
29+
{ name = "oas_generator", version = "1.0.0", build_tools = ["gleam"], requirements = ["glance", "glance_printer", "gleam_http", "gleam_stdlib", "justin", "midas_node", "oas", "snag"], otp_app = "oas_generator", source = "hex", outer_checksum = "93F00E653C4EE267511B8C375131A64552C2CA5F215019258EB1EBEECE747782" },
30+
{ name = "plinth", version = "0.5.9", build_tools = ["gleam"], requirements = ["conversation", "gleam_javascript", "gleam_json", "gleam_stdlib"], otp_app = "plinth", source = "hex", outer_checksum = "9684C5D768F99B34537B48B100509389C45D2E7C045426E93ACB250993611724" },
31+
{ name = "shellout", version = "1.7.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "shellout", source = "hex", outer_checksum = "1BDC03438FEB97A6AF3E396F4ABEB32BECF20DF2452EC9A8C0ACEB7BDDF70B14" },
32+
{ name = "simplifile", version = "2.2.1", build_tools = ["gleam"], requirements = ["filepath", "gleam_stdlib"], otp_app = "simplifile", source = "hex", outer_checksum = "C88E0EE2D509F6D86EB55161D631657675AA7684DAB83822F7E59EB93D9A60E3" },
33+
{ name = "snag", version = "1.1.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "snag", source = "hex", outer_checksum = "7E9F06390040EB5FAB392CE642771484136F2EC103A92AE11BA898C8167E6E17" },
34+
]
35+
36+
[requirements]
37+
gleam_http = { version = ">= 3.7.2 and < 4.0.0" }
38+
gleam_json = { version = ">= 2.3.0 and < 3.0.0" }
39+
gleam_stdlib = { version = ">= 0.44.0 and < 2.0.0" }
40+
gleeunit = { version = ">= 1.0.0 and < 2.0.0" }
41+
midas = { version = ">= 1.4.1 and < 2.0.0" }
42+
oas_generator = { version = ">= 1.0.0 and < 2.0.0" }
43+
snag = { version = ">= 1.1.0 and < 2.0.0" }
File renamed without changes.

src/midas/sdk/netlify.gleam renamed to sdks/netlify/src/netlify.gleam

Lines changed: 45 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import gleam/bit_array
2-
import gleam/dynamic
2+
import gleam/dynamic/decode
33
import gleam/http
44
import gleam/http/request
55
import gleam/int
@@ -9,9 +9,8 @@ import gleam/option.{None, Some}
99
import gleam/result.{try}
1010
import gleam/string
1111
import gleam/uri.{Uri}
12-
import midas/sdk/netlify/operations
13-
import midas/sdk/netlify/schema
1412
import midas/task as t
13+
import netlify/operations
1514
import snag
1615

1716
pub type App {
@@ -91,14 +90,15 @@ pub fn deploy_site(token, site_id, files) {
9190
})
9291
let assert Ok(body) = bit_array.to_string(body)
9392
let assert Ok(data) =
94-
json.decode(body, dynamic.field("state", dynamic.string))
93+
json.parse(body, decode.field("state", decode.string, decode.success))
9594
t.Done(data)
9695
}
9796

98-
fn base_request(token) {
97+
pub fn base_request(token) {
9998
request.new()
10099
|> request.set_host(api_host)
101100
|> request.prepend_header("Authorization", string.append("Bearer ", token))
101+
|> request.set_path("/api/v1")
102102
|> request.set_body(<<>>)
103103
}
104104

@@ -112,14 +112,10 @@ fn post(token, path, mime, content) {
112112

113113
fn handle_errors(response) {
114114
case response {
115-
Ok(Ok(data)) -> Ok(data)
116-
Ok(Error(schema.Error(message: message, ..))) ->
117-
snag.new(option.unwrap(message, "no error message"))
118-
|> snag.layer("error from api")
119-
|> Error
115+
Ok(response) -> Ok(response)
120116
Error(reason) ->
121117
snag.new(string.inspect(reason))
122-
|> snag.layer("failed to decode sites")
118+
|> snag.layer("failed to decode")
123119
|> Error
124120
}
125121
}
@@ -397,13 +393,13 @@ pub fn get_site_dev_server_hook(token, site_id, id) {
397393
t.Done(data)
398394
}
399395

400-
// pub fn purge_cache(token, purge) {
401-
// let request = base_request(token)
402-
// let request = operations.purge_cache_request(request, purge)
403-
// use response <- t.do(t.fetch(request))
404-
// use data <- t.try(handle_errors(operations.purge_cache_response(response)))
405-
// t.Done(data)
406-
// }
396+
pub fn purge_cache(token, purge) {
397+
let request = base_request(token)
398+
let request = operations.purge_cache_request(request, purge)
399+
use response <- t.do(t.fetch(request))
400+
use data <- t.try(handle_errors(operations.purge_cache_response(response)))
401+
t.Done(data)
402+
}
407403

408404
pub fn list_site_deployed_branches(token, site_id) {
409405
let request = base_request(token)
@@ -727,13 +723,13 @@ pub fn list_form_submission(
727723
t.Done(data)
728724
}
729725

730-
// pub fn delete_hook(token, hook_id) {
731-
// let request = base_request(token)
732-
// let request = operations.delete_hook_request(request, hook_id)
733-
// use response <- t.do(t.fetch(request))
734-
// use data <- t.try(handle_errors(operations.delete_hook_response(response)))
735-
// t.Done(data)
736-
// }
726+
pub fn delete_hook(token, hook_id) {
727+
let request = base_request(token)
728+
let request = operations.delete_hook_request(request, hook_id)
729+
use response <- t.do(t.fetch(request))
730+
use data <- t.try(handle_errors(operations.delete_hook_response(response)))
731+
t.Done(data)
732+
}
737733

738734
pub fn update_hook(token, hook_id, hook) {
739735
let request = base_request(token)
@@ -941,10 +937,10 @@ pub fn list_sites_for_account(
941937
t.Done(data)
942938
}
943939

944-
pub fn upload_deploy_file(token, deploy_id, path, size size) {
940+
pub fn upload_deploy_file(token, deploy_id, path_, size size) {
945941
let request = base_request(token)
946942
let request =
947-
operations.upload_deploy_file_request(request, deploy_id, path, size)
943+
operations.upload_deploy_file_request(request, deploy_id, path_, size)
948944
use response <- t.do(t.fetch(request))
949945
use data <- t.try(
950946
handle_errors(operations.upload_deploy_file_response(response)),
@@ -1109,9 +1105,10 @@ pub fn get_account(token, account_id) {
11091105
t.Done(data)
11101106
}
11111107

1112-
pub fn create_env_vars(token, account_id, site_id site_id) {
1108+
pub fn create_env_vars(token, account_id, data, site_id site_id) {
11131109
let request = base_request(token)
1114-
let request = operations.create_env_vars_request(request, account_id, site_id)
1110+
let request =
1111+
operations.create_env_vars_request(request, account_id, data, site_id)
11151112
use response <- t.do(t.fetch(request))
11161113
use data <- t.try(
11171114
handle_errors(operations.create_env_vars_response(response)),
@@ -1437,16 +1434,16 @@ pub fn update_site_build_log(token, build_id) {
14371434
t.Done(data)
14381435
}
14391436

1440-
// pub fn get_site_dev_server(token, site_id, dev_server_id) {
1441-
// let request = base_request(token)
1442-
// let request =
1443-
// operations.get_site_dev_server_request(request, site_id, dev_server_id)
1444-
// use response <- t.do(t.fetch(request))
1445-
// use data <- t.try(
1446-
// handle_errors(operations.get_site_dev_server_response(response)),
1447-
// )
1448-
// t.Done(data)
1449-
// }
1437+
pub fn get_site_dev_server(token, site_id, dev_server_id) {
1438+
let request = base_request(token)
1439+
let request =
1440+
operations.get_site_dev_server_request(request, site_id, dev_server_id)
1441+
use response <- t.do(t.fetch(request))
1442+
use data <- t.try(
1443+
handle_errors(operations.get_site_dev_server_response(response)),
1444+
)
1445+
t.Done(data)
1446+
}
14501447

14511448
pub fn delete_site_form(token, site_id, form_id) {
14521449
let request = base_request(token)
@@ -1564,15 +1561,15 @@ pub fn get_site_snippet(token, site_id, snippet_id) {
15641561
t.Done(data)
15651562
}
15661563

1567-
// pub fn unlink_site_repo(token, site_id) {
1568-
// let request = base_request(token)
1569-
// let request = operations.unlink_site_repo_request(request, site_id)
1570-
// use response <- t.do(t.fetch(request))
1571-
// use data <- t.try(
1572-
// handle_errors(operations.unlink_site_repo_response(response)),
1573-
// )
1574-
// t.Done(data)
1575-
// }
1564+
pub fn unlink_site_repo(token, site_id) {
1565+
let request = base_request(token)
1566+
let request = operations.unlink_site_repo_request(request, site_id)
1567+
use response <- t.do(t.fetch(request))
1568+
use data <- t.try(
1569+
handle_errors(operations.unlink_site_repo_response(response)),
1570+
)
1571+
t.Done(data)
1572+
}
15761573

15771574
pub fn create_dns_zone(token, dns_zone_setup) {
15781575
let request = base_request(token)

0 commit comments

Comments
 (0)