Added missing 'delay' and 'email' params to publish as json
This commit is contained in:
		
							parent
							
								
									59b341dfb8
								
							
						
					
					
						commit
						b67d9fc85d
					
				
					 5 changed files with 31 additions and 3 deletions
				
			
		| 
						 | 
					@ -661,7 +661,8 @@ the example.
 | 
				
			||||||
    To publish as JSON, you must **PUT/POST to the ntfy root URL**, not to the topic URL. Be sure to check that you're
 | 
					    To publish as JSON, you must **PUT/POST to the ntfy root URL**, not to the topic URL. Be sure to check that you're
 | 
				
			||||||
    POST-ing to `https://ntfy.sh/` (correct), and not to `https://ntfy.sh/mytopic` (incorrect). 
 | 
					    POST-ing to `https://ntfy.sh/` (correct), and not to `https://ntfy.sh/mytopic` (incorrect). 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Here's an example using all supported parameters. The `topic` parameter is the only required one:
 | 
					Here's an example using most supported parameters. Check the table below for a complete list. The `topic` parameter 
 | 
				
			||||||
 | 
					is the only required one:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=== "Command line (curl)"
 | 
					=== "Command line (curl)"
 | 
				
			||||||
    ```
 | 
					    ```
 | 
				
			||||||
| 
						 | 
					@ -798,7 +799,8 @@ all the supported fields:
 | 
				
			||||||
| `click`    | -        | *URL*                            | `https://example.com`          | Website opened when notification is [clicked](#click-action)          |
 | 
					| `click`    | -        | *URL*                            | `https://example.com`          | Website opened when notification is [clicked](#click-action)          |
 | 
				
			||||||
| `attach`   | -        | *URL*                            | `https://example.com/file.jpg` | URL of an attachment, see [attach via URL](#attach-file-from-url)     |
 | 
					| `attach`   | -        | *URL*                            | `https://example.com/file.jpg` | URL of an attachment, see [attach via URL](#attach-file-from-url)     |
 | 
				
			||||||
| `filename` | -        | *string*                         | `file.jpg`                     | File name of the attachment                                           |
 | 
					| `filename` | -        | *string*                         | `file.jpg`                     | File name of the attachment                                           |
 | 
				
			||||||
 | 
					| `delay`    | -        | *string*                         | `30min`, `9am`                 | Timestamp or duration for delayed delivery                            |
 | 
				
			||||||
 | 
					| `email`    | -        | *e-mail address*                 | `phil@example.com`             | E-mail address for e-mail notifications                               |
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Click action
 | 
					## Click action
 | 
				
			||||||
You can define which URL to open when a notification is clicked. This may be useful if your notification is related 
 | 
					You can define which URL to open when a notification is clicked. This may be useful if your notification is related 
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -45,6 +45,7 @@ and the [ntfy Android app](https://github.com/binwiederhier/ntfy-android/release
 | 
				
			||||||
* Do not allow comma in topic name in publish via GET endpoint (no ticket) 
 | 
					* Do not allow comma in topic name in publish via GET endpoint (no ticket) 
 | 
				
			||||||
* Add "Access-Control-Allow-Origin: *" for attachments (no ticket, thanks to @FrameXX)
 | 
					* Add "Access-Control-Allow-Origin: *" for attachments (no ticket, thanks to @FrameXX)
 | 
				
			||||||
* Make pruning run again in web app ([#186](https://github.com/binwiederhier/ntfy/issues/186)) 
 | 
					* Make pruning run again in web app ([#186](https://github.com/binwiederhier/ntfy/issues/186)) 
 | 
				
			||||||
 | 
					* Added missing params `delay` and `email` to publish as JSON body (no ticket)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
**Documentation:**
 | 
					**Documentation:**
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1135,6 +1135,12 @@ func (s *Server) transformBodyJSON(next handleFunc) handleFunc {
 | 
				
			||||||
		if m.Click != "" {
 | 
							if m.Click != "" {
 | 
				
			||||||
			r.Header.Set("X-Click", m.Click)
 | 
								r.Header.Set("X-Click", m.Click)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
							if m.Email != "" {
 | 
				
			||||||
 | 
								r.Header.Set("X-Email", m.Email)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							if m.Delay != "" {
 | 
				
			||||||
 | 
								r.Header.Set("X-Delay", m.Delay)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
		return next(w, r, v)
 | 
							return next(w, r, v)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -873,7 +873,8 @@ func TestServer_PublishUnifiedPushText(t *testing.T) {
 | 
				
			||||||
func TestServer_PublishAsJSON(t *testing.T) {
 | 
					func TestServer_PublishAsJSON(t *testing.T) {
 | 
				
			||||||
	s := newTestServer(t, newTestConfig(t))
 | 
						s := newTestServer(t, newTestConfig(t))
 | 
				
			||||||
	body := `{"topic":"mytopic","message":"A message","title":"a title\nwith lines","tags":["tag1","tag 2"],` +
 | 
						body := `{"topic":"mytopic","message":"A message","title":"a title\nwith lines","tags":["tag1","tag 2"],` +
 | 
				
			||||||
		`"not-a-thing":"ok", "attach":"http://google.com","filename":"google.pdf", "click":"http://ntfy.sh","priority":4}`
 | 
							`"not-a-thing":"ok", "attach":"http://google.com","filename":"google.pdf", "click":"http://ntfy.sh","priority":4,` +
 | 
				
			||||||
 | 
							`"delay":"30min"}`
 | 
				
			||||||
	response := request(t, s, "PUT", "/", body, nil)
 | 
						response := request(t, s, "PUT", "/", body, nil)
 | 
				
			||||||
	require.Equal(t, 200, response.Code)
 | 
						require.Equal(t, 200, response.Code)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -886,6 +887,22 @@ func TestServer_PublishAsJSON(t *testing.T) {
 | 
				
			||||||
	require.Equal(t, "google.pdf", m.Attachment.Name)
 | 
						require.Equal(t, "google.pdf", m.Attachment.Name)
 | 
				
			||||||
	require.Equal(t, "http://ntfy.sh", m.Click)
 | 
						require.Equal(t, "http://ntfy.sh", m.Click)
 | 
				
			||||||
	require.Equal(t, 4, m.Priority)
 | 
						require.Equal(t, 4, m.Priority)
 | 
				
			||||||
 | 
						require.True(t, m.Time > time.Now().Unix()+29*60)
 | 
				
			||||||
 | 
						require.True(t, m.Time < time.Now().Unix()+31*60)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func TestServer_PublishAsJSON_WithEmail(t *testing.T) {
 | 
				
			||||||
 | 
						mailer := &testMailer{}
 | 
				
			||||||
 | 
						s := newTestServer(t, newTestConfig(t))
 | 
				
			||||||
 | 
						s.mailer = mailer
 | 
				
			||||||
 | 
						body := `{"topic":"mytopic","message":"A message","email":"phil@example.com"}`
 | 
				
			||||||
 | 
						response := request(t, s, "PUT", "/", body, nil)
 | 
				
			||||||
 | 
						require.Equal(t, 200, response.Code)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						m := toMessage(t, response.Body.String())
 | 
				
			||||||
 | 
						require.Equal(t, "mytopic", m.Topic)
 | 
				
			||||||
 | 
						require.Equal(t, "A message", m.Message)
 | 
				
			||||||
 | 
						require.Equal(t, 1, mailer.count)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestServer_PublishAsJSON_Invalid(t *testing.T) {
 | 
					func TestServer_PublishAsJSON_Invalid(t *testing.T) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -52,6 +52,8 @@ type publishMessage struct {
 | 
				
			||||||
	Click    string   `json:"click"`
 | 
						Click    string   `json:"click"`
 | 
				
			||||||
	Attach   string   `json:"attach"`
 | 
						Attach   string   `json:"attach"`
 | 
				
			||||||
	Filename string   `json:"filename"`
 | 
						Filename string   `json:"filename"`
 | 
				
			||||||
 | 
						Email    string   `json:"email"`
 | 
				
			||||||
 | 
						Delay    string   `json:"delay"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// messageEncoder is a function that knows how to encode a message
 | 
					// messageEncoder is a function that knows how to encode a message
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue