diff --git a/chuangcache_builder.go b/chuangcache_builder.go index 7be1ada..c999941 100644 --- a/chuangcache_builder.go +++ b/chuangcache_builder.go @@ -1,9 +1,8 @@ package cdn type chuangcacheBuilder struct { - builder *builder - domain string - executor signer + builder *builder + signers map[string]signer } func newChuangcacheBuilder(builder *builder) *chuangcacheBuilder { @@ -12,29 +11,15 @@ func newChuangcacheBuilder(builder *builder) *chuangcacheBuilder { } } -func (cb *chuangcacheBuilder) Default() *chuangcacheBuilder { - return cb.Domain(defaults) -} - -func (cb *chuangcacheBuilder) Any() *chuangcacheBuilder { - return cb.Domain(defaults) -} - -func (cb *chuangcacheBuilder) Domain(domain string) *chuangcacheBuilder { - cb.domain = domain - - return cb -} - -func (cb *chuangcacheBuilder) Token(token string) *chuangcacheBuilder { - cb.executor = newChuangcache(token) - - return cb +func (cb *chuangcacheBuilder) Signer() *chuangcacheSignerBuilder { + return newChuangcacheSignerBuilder(cb) } func (cb *chuangcacheBuilder) Build() (b *builder) { b = cb.builder - b.params.signers[cb.domain] = cb.executor + for domain, _signer := range cb.signers { + b.params.signers[domain] = _signer + } return } diff --git a/chuangcache_signer_builder.go b/chuangcache_signer_builder.go new file mode 100644 index 0000000..3f71ea3 --- /dev/null +++ b/chuangcache_signer_builder.go @@ -0,0 +1,40 @@ +package cdn + +type chuangcacheSignerBuilder struct { + builder *chuangcacheBuilder + domain string + signer signer +} + +func newChuangcacheSignerBuilder(builder *chuangcacheBuilder) *chuangcacheSignerBuilder { + return &chuangcacheSignerBuilder{ + builder: builder, + } +} + +func (csb *chuangcacheSignerBuilder) Default() *chuangcacheSignerBuilder { + return csb.Domain(defaults) +} + +func (csb *chuangcacheSignerBuilder) Any() *chuangcacheSignerBuilder { + return csb.Domain(defaults) +} + +func (csb *chuangcacheSignerBuilder) Domain(domain string) *chuangcacheSignerBuilder { + csb.domain = domain + + return csb +} + +func (csb *chuangcacheSignerBuilder) Token(token string) *chuangcacheSignerBuilder { + csb.signer = newChuangcache(token) + + return csb +} + +func (csb *chuangcacheSignerBuilder) Build() (cb *chuangcacheBuilder) { + cb = csb.builder + cb.signers[csb.domain] = csb.signer + + return +}