| 
									
										
										
										
											2019-05-30 23:11:13 +01:00
										 |  |  | package memory | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							|  |  |  | 	"context" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-31 15:59:21 +01:00
										 |  |  | 	"github.com/micro/go-micro/config/source" | 
					
						
							| 
									
										
										
										
											2019-05-30 23:11:13 +01:00
										 |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | type changeSetKey struct{} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-31 13:44:28 +01:00
										 |  |  | func withData(d []byte, f string) source.Option { | 
					
						
							| 
									
										
										
										
											2019-05-30 23:11:13 +01:00
										 |  |  | 	return func(o *source.Options) { | 
					
						
							|  |  |  | 		if o.Context == nil { | 
					
						
							|  |  |  | 			o.Context = context.Background() | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2019-05-31 13:44:28 +01:00
										 |  |  | 		o.Context = context.WithValue(o.Context, changeSetKey{}, &source.ChangeSet{ | 
					
						
							|  |  |  | 			Data:   d, | 
					
						
							|  |  |  | 			Format: f, | 
					
						
							|  |  |  | 		}) | 
					
						
							| 
									
										
										
										
											2019-05-30 23:11:13 +01:00
										 |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-31 13:44:28 +01:00
										 |  |  | // WithChangeSet allows a changeset to be set | 
					
						
							|  |  |  | func WithChangeSet(cs *source.ChangeSet) source.Option { | 
					
						
							| 
									
										
										
										
											2019-05-30 23:11:13 +01:00
										 |  |  | 	return func(o *source.Options) { | 
					
						
							|  |  |  | 		if o.Context == nil { | 
					
						
							|  |  |  | 			o.Context = context.Background() | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2019-05-31 13:44:28 +01:00
										 |  |  | 		o.Context = context.WithValue(o.Context, changeSetKey{}, cs) | 
					
						
							| 
									
										
										
										
											2019-05-30 23:11:13 +01:00
										 |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2019-05-31 13:44:28 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-31 13:45:28 +01:00
										 |  |  | // WithJSON allows the source data to be set to json | 
					
						
							|  |  |  | func WithJSON(d []byte) source.Option { | 
					
						
							| 
									
										
										
										
											2019-05-31 13:44:28 +01:00
										 |  |  | 	return withData(d, "json") | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-31 13:45:28 +01:00
										 |  |  | // WithYAML allows the source data to be set to yaml | 
					
						
							|  |  |  | func WithYAML(d []byte) source.Option { | 
					
						
							| 
									
										
										
										
											2019-05-31 13:44:28 +01:00
										 |  |  | 	return withData(d, "yaml") | 
					
						
							|  |  |  | } |