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