forked from FirebaseExtended/experimental-extensions
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathextension.yaml
167 lines (154 loc) · 5.74 KB
/
extension.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
name: firestore-shorten-urls-dynamic-links
displayName: Shorten URLs with Dynamic Links
specVersion: v1beta
version: 0.1.1
description: >
Shortens URLs written to a specified Cloud Firestore collection using
Firebase Dynamic Links.
license: Apache-2.0
billingRequired: true
sourceUrl: https://github.com/FirebaseExtended/experimental-extensions/tree/main/firestore-shorten-urls-dynamic-links
releaseNotesUrl: https://github.com/FirebaseExtended/experimental-extensions/commits/next
author:
authorName: Firebase
url: https://firebase.google.com
contributors:
- authorName: Kevin Cheung
email: [email protected]
url: https://github.com/kevinthecheung
roles:
- role: datastore.user
reason: Allows the extension to write shortened URLs to Cloud Firestore.
resources:
- name: shorten_create
type: firebaseextensions.v1beta.function
description:
Listens for new documents in your specified Cloud Firestore collection,
and if they contain URLs, shortens the URLs, then writes the shortened
form back to the same document.
properties:
location: ${param:LOCATION}
runtime: nodejs10
eventTrigger:
eventType: providers/cloud.firestore/eventTypes/document.create
resource: projects/${param:PROJECT_ID}/databases/(default)/documents/${param:COLLECTION_PATH}/{documentId}
- name: shorten_update
type: firebaseextensions.v1beta.function
description:
Listens for writes of new URLs to your specified Cloud Firestore collection, shortens the URLs,
then writes the shortened form back to the same document.
properties:
location: ${param:LOCATION}
runtime: nodejs10
eventTrigger:
eventType: providers/cloud.firestore/eventTypes/document.update
resource: projects/${param:PROJECT_ID}/databases/(default)/documents/${param:COLLECTION_PATH}/{documentId}
params:
- param: LOCATION
label: Cloud Functions location
description: >-
Where do you want to deploy the functions created for this extension?
You usually want a location close to your database. For help selecting a
location, refer to the [location selection
guide](https://firebase.google.com/docs/functions/locations).
type: select
options:
- label: Iowa (us-central1)
value: us-central1
- label: South Carolina (us-east1)
value: us-east1
- label: Northern Virginia (us-east4)
value: us-east4
- label: Los Angeles (us-west2)
value: us-west2
- label: Salt Lake City (us-west3)
value: us-west3
- label: Las Vegas (us-west4)
value: us-west4
- label: Belgium (europe-west1)
value: europe-west1
- label: London (europe-west2)
value: europe-west2
- label: Frankfurt (europe-west3)
value: europe-west3
- label: Zurich (europe-west6)
value: europe-west6
- label: Hong Kong (asia-east2)
value: asia-east2
- label: Tokyo (asia-northeast1)
value: asia-northeast1
- label: Osaka (asia-northeast2)
value: asia-northeast2
- label: Seoul (asia-northeast3)
value: asia-northeast3
- label: Mumbai (asia-south1)
value: asia-south1
- label: Jakarta (asia-southeast2)
value: asia-southeast2
- label: Montreal (northamerica-northeast1)
value: northamerica-northeast1
- label: Sao Paulo (southamerica-east1)
value: southamerica-east1
- label: Sydney (australia-southeast1)
value: australia-southeast1
default: us-central1
required: true
immutable: true
- param: DYNAMIC_LINKS_URL_PREFIX
label: Dynamic Links URL prefix
description: >
What URL prefix do you want for your shortened links? You will need to
set up this prefix in the [Dynamic Links](https://console.firebase.google.com/project/_/durablelinks)
section of the console.
example: "https://yourapp.page.link"
required: true
- param: DYNAMIC_LINKS_SUFFIX_LENGTH
label: Dynamic Links suffix length
type: select
description: >
Do you want your short links to end with the shortest possible suffix or
longer suffixes that are unlikely to be guessable? In general, you can use
short suffixes as long as there's no harm in someone successfuly guessing
a short link.
options:
- label: Short
value: SHORT
- label: Unguessable
value: UNGUESSABLE
required: true
- param: COLLECTION_PATH
label: Collection path
description: >
What is the path to the collection that contains the URLs that you want to shorten?
default: urls
example: urls
validationRegex: "^[^/]+(/[^/]+/[^/]+)*$"
validationErrorMessage: Must be a valid Cloud Firestore collection
required: true
- param: URL_FIELD_NAME
label: URL field name
description: >
What is the name of the field that contains the original long URLs that you want to shorten?
default: url
example: url
required: true
- param: SHORT_URL_FIELD_NAME
label: Short URL field name
description: >
What is the name of the field where you want to store your shortened URLs?
default: shortUrl
example: shortUrl
required: true