From: Doug Coleman Date: Sun, 30 Jan 2022 18:46:00 +0000 (-0600) Subject: hetzner, github: remove cloud/web-services prefixes X-Git-Tag: 0.99~1602 X-Git-Url: https://gitweb.factorcode.org/gitweb.cgi?p=factor.git;a=commitdiff_plain;h=018483ec158c3bd52c1c648f82a88a3622b583b5 hetzner, github: remove cloud/web-services prefixes --- diff --git a/extra/cloud/hetzner/authors.txt b/extra/cloud/hetzner/authors.txt deleted file mode 100644 index 7c1b2f2279..0000000000 --- a/extra/cloud/hetzner/authors.txt +++ /dev/null @@ -1 +0,0 @@ -Doug Coleman diff --git a/extra/cloud/hetzner/hetzner.factor b/extra/cloud/hetzner/hetzner.factor deleted file mode 100644 index 29fcad0879..0000000000 --- a/extra/cloud/hetzner/hetzner.factor +++ /dev/null @@ -1,81 +0,0 @@ -! Copyright (C) 2022 Doug Coleman. -! See http://factorcode.org/license.txt for BSD license. -USING: assocs assocs.extras formatting http http.client io -io.encodings.string io.encodings.utf8 json.reader kernel -namespaces sequences sequences.generalizations ; -IN: cloud.hetzner - -SYMBOL: hetzner-access-token - -CONSTANT: hetzner-api-v1 "https://api.hetzner.cloud/v1/" - -ERROR: hetzner-access-token-required symbol ; - -: get-hetzner-token ( -- token/* ) - hetzner-access-token get [ - hetzner-access-token hetzner-access-token-required - ] unless* ; - -: set-hetzner-auth-header ( request -- request ) - "Bearer " get-hetzner-token append "Authorization" set-header ; - -: hetzner-get ( route -- json ) - hetzner-api-v1 prepend - set-hetzner-auth-header http-request nip utf8 decode json> ; - -! Actions -: get-hetzner-actions ( -- servers ) "actions" hetzner-get ; -: get-hetzner-action ( action-id -- servers ) "actions/%d" sprintf hetzner-get ; - -! Certificates -: get-hetzner-certificates ( -- servers ) "certificates" hetzner-get ; - -! Datacenters -: get-hetzner-datacenters ( -- servers ) "datacenters" hetzner-get ; -: get-hetzner-datacenter ( datacenter-id -- servers ) "datacenters/%s" sprintf hetzner-get ; - -! Firewalls -: get-hetzner-firewalls ( -- servers ) "firewalls" hetzner-get ; - -! Floating IPs -: get-hetzner-floating-ips ( -- servers ) "floating_ips" hetzner-get ; - -! Images -: get-hetzner-images ( -- servers ) "images" hetzner-get ; - -! ISOs -: get-hetzner-isos ( -- servers ) "isos" hetzner-get ; -: get-hetzner-iso ( iso-id -- servers ) "isos/%d" sprintf hetzner-get ; - -! Locations -: get-hetzner-locations ( -- servers ) "locations" hetzner-get ; - -! Networks -: get-hetzner-networks ( -- servers ) "networks" hetzner-get ; - -! Pricing -: get-hetzner-pricing ( -- servers ) "pricing" hetzner-get ; - -! Servers -: get-hetzner-servers ( -- servers ) "servers" hetzner-get ; -: get-hetzner-server-by-id ( id -- servers ) "servers/%d" sprintf hetzner-get ; - -: server-type. ( hash -- ) - { "description" "cores" "cpu_type" "memory" "disk" } values-of 5 firstn - "%s: %d cores %s, %dGB RAM, %d GB disk" sprintf print ; - -: hetzner-servers. ( -- ) - get-hetzner-servers "servers" of [ "server_type" of server-type. ] each ; - -! Server Types -: get-hetzner-server-types ( -- servers ) "server_types" hetzner-get ; - -! SSH Keys -: get-hetzner-ssh-keys ( -- servers ) "ssh_keys" hetzner-get ; - -! Volumes -: get-hetzner-volumes ( -- servers ) "volumes" hetzner-get ; - -! Volume Actions -: get-hetzner-volume-actions ( volume-id -- servers ) "volumes/%d/actions" sprintf hetzner-get ; -: get-hetzner-volume-action ( volume-id action-id -- servers ) "volumes/%d/actions/%d" sprintf hetzner-get ; diff --git a/extra/github/github.factor b/extra/github/github.factor new file mode 100644 index 0000000000..8ff0a0df35 --- /dev/null +++ b/extra/github/github.factor @@ -0,0 +1,37 @@ +! Copyright (C) 2017 Doug Coleman. +! See http://factorcode.org/license.txt for BSD license. +USING: assocs cli.git formatting http.client io.pathnames +json.reader kernel math namespaces sequences ; +IN: github + +SYMBOL: github-username +SYMBOL: github-token + +! type is orgs, users +:: get-repositories-with-credentials ( type name username token -- seq ) + 0 [ dup ] [ + 1 + dup + [ username token type name ] dip + "https://%s:%s@api.github.com/%s/%s/repos?per_page=100&page=%d" sprintf http-get nip json> + dup empty? [ 2drop f f ] [ ] if + ] produce nip concat ; + +: get-repositories ( type name -- seq ) + github-username get + github-token get + get-repositories-with-credentials ; + +: sync-github-org-or-user ( directory type name -- ) + get-repositories + [ "ssh_url" of ] map sync-repositories ; + +: sync-github-org ( directory name -- ) "orgs" swap sync-github-org-or-user ; +: sync-github-user ( directory name -- ) "users" swap sync-github-org-or-user ; + +: github-git-uri ( user/org project -- uri ) [ "git@github.com" ] 2dip "/" glue ":" glue ; +: github-ssh-uri ( user/org project -- uri ) [ "https://github.com" ] 2dip 3append-path ; +: github-git-clone-as ( user/org project name -- process ) [ github-git-uri ] dip git-clone-as ; +: github-ssh-clone-as ( user/org project name -- process ) [ github-ssh-uri ] dip git-clone-as ; +: github-git-clone ( user/org project -- process ) dup github-git-clone-as ; +: github-ssh-clone ( user/org project -- process ) dup github-ssh-clone-as ; + diff --git a/extra/github/tags.txt b/extra/github/tags.txt new file mode 100644 index 0000000000..c3de202fd8 --- /dev/null +++ b/extra/github/tags.txt @@ -0,0 +1 @@ +cloud diff --git a/extra/hetzner/authors.txt b/extra/hetzner/authors.txt new file mode 100644 index 0000000000..7c1b2f2279 --- /dev/null +++ b/extra/hetzner/authors.txt @@ -0,0 +1 @@ +Doug Coleman diff --git a/extra/hetzner/hetzner.factor b/extra/hetzner/hetzner.factor new file mode 100644 index 0000000000..f2af18f8a2 --- /dev/null +++ b/extra/hetzner/hetzner.factor @@ -0,0 +1,81 @@ +! Copyright (C) 2022 Doug Coleman. +! See http://factorcode.org/license.txt for BSD license. +USING: assocs assocs.extras formatting http http.client io +io.encodings.string io.encodings.utf8 json.reader kernel +namespaces sequences sequences.generalizations ; +IN: hetzner + +SYMBOL: hetzner-access-token + +CONSTANT: hetzner-api-v1 "https://api.hetzner.cloud/v1/" + +ERROR: hetzner-access-token-required symbol ; + +: get-hetzner-token ( -- token/* ) + hetzner-access-token get [ + hetzner-access-token hetzner-access-token-required + ] unless* ; + +: set-hetzner-auth-header ( request -- request ) + "Bearer " get-hetzner-token append "Authorization" set-header ; + +: hetzner-get ( route -- json ) + hetzner-api-v1 prepend + set-hetzner-auth-header http-request nip utf8 decode json> ; + +! Actions +: get-hetzner-actions ( -- servers ) "actions" hetzner-get ; +: get-hetzner-action ( action-id -- servers ) "actions/%d" sprintf hetzner-get ; + +! Certificates +: get-hetzner-certificates ( -- servers ) "certificates" hetzner-get ; + +! Datacenters +: get-hetzner-datacenters ( -- servers ) "datacenters" hetzner-get ; +: get-hetzner-datacenter ( datacenter-id -- servers ) "datacenters/%s" sprintf hetzner-get ; + +! Firewalls +: get-hetzner-firewalls ( -- servers ) "firewalls" hetzner-get ; + +! Floating IPs +: get-hetzner-floating-ips ( -- servers ) "floating_ips" hetzner-get ; + +! Images +: get-hetzner-images ( -- servers ) "images" hetzner-get ; + +! ISOs +: get-hetzner-isos ( -- servers ) "isos" hetzner-get ; +: get-hetzner-iso ( iso-id -- servers ) "isos/%d" sprintf hetzner-get ; + +! Locations +: get-hetzner-locations ( -- servers ) "locations" hetzner-get ; + +! Networks +: get-hetzner-networks ( -- servers ) "networks" hetzner-get ; + +! Pricing +: get-hetzner-pricing ( -- servers ) "pricing" hetzner-get ; + +! Servers +: get-hetzner-servers ( -- servers ) "servers" hetzner-get ; +: get-hetzner-server-by-id ( id -- servers ) "servers/%d" sprintf hetzner-get ; + +: server-type. ( hash -- ) + { "description" "cores" "cpu_type" "memory" "disk" } values-of 5 firstn + "%s: %d cores %s, %dGB RAM, %d GB disk" sprintf print ; + +: hetzner-servers. ( -- ) + get-hetzner-servers "servers" of [ "server_type" of server-type. ] each ; + +! Server Types +: get-hetzner-server-types ( -- servers ) "server_types" hetzner-get ; + +! SSH Keys +: get-hetzner-ssh-keys ( -- servers ) "ssh_keys" hetzner-get ; + +! Volumes +: get-hetzner-volumes ( -- servers ) "volumes" hetzner-get ; + +! Volume Actions +: get-hetzner-volume-actions ( volume-id -- servers ) "volumes/%d/actions" sprintf hetzner-get ; +: get-hetzner-volume-action ( volume-id action-id -- servers ) "volumes/%d/actions/%d" sprintf hetzner-get ; diff --git a/extra/hetzner/tags.txt b/extra/hetzner/tags.txt new file mode 100644 index 0000000000..c3de202fd8 --- /dev/null +++ b/extra/hetzner/tags.txt @@ -0,0 +1 @@ +cloud diff --git a/extra/web-services/github/github.factor b/extra/web-services/github/github.factor deleted file mode 100644 index 9061ab5dad..0000000000 --- a/extra/web-services/github/github.factor +++ /dev/null @@ -1,37 +0,0 @@ -! Copyright (C) 2017 Doug Coleman. -! See http://factorcode.org/license.txt for BSD license. -USING: assocs cli.git formatting http.client io.pathnames -json.reader kernel math namespaces sequences ; -IN: web-services.github - -SYMBOL: github-username -SYMBOL: github-token - -! type is orgs, users -:: get-repositories-with-credentials ( type name username token -- seq ) - 0 [ dup ] [ - 1 + dup - [ username token type name ] dip - "https://%s:%s@api.github.com/%s/%s/repos?per_page=100&page=%d" sprintf http-get nip json> - dup empty? [ 2drop f f ] [ ] if - ] produce nip concat ; - -: get-repositories ( type name -- seq ) - github-username get - github-token get - get-repositories-with-credentials ; - -: sync-github-org-or-user ( directory type name -- ) - get-repositories - [ "ssh_url" of ] map sync-repositories ; - -: sync-github-org ( directory name -- ) "orgs" swap sync-github-org-or-user ; -: sync-github-user ( directory name -- ) "users" swap sync-github-org-or-user ; - -: github-git-uri ( user/org project -- uri ) [ "git@github.com" ] 2dip "/" glue ":" glue ; -: github-ssh-uri ( user/org project -- uri ) [ "https://github.com" ] 2dip 3append-path ; -: github-git-clone-as ( user/org project name -- process ) [ github-git-uri ] dip git-clone-as ; -: github-ssh-clone-as ( user/org project name -- process ) [ github-ssh-uri ] dip git-clone-as ; -: github-git-clone ( user/org project -- process ) dup github-git-clone-as ; -: github-ssh-clone ( user/org project -- process ) dup github-ssh-clone-as ; -