Skip to content

Commit

Permalink
address comment
Browse files Browse the repository at this point in the history
  • Loading branch information
oliviazhang0809 committed May 16, 2018
1 parent 49c5896 commit ea887bc
Showing 1 changed file with 24 additions and 13 deletions.
37 changes: 24 additions & 13 deletions codegen/header_propagate.go
Expand Up @@ -36,6 +36,11 @@ type HeaderPropagator struct {
Helper PackageNameResolver
}

const (
staticValue = "static"
fromValue = "from"
)

// NewHeaderPropagator returns an instance of HeaderPropagator
func NewHeaderPropagator(h PackageNameResolver) *HeaderPropagator {
return &HeaderPropagator{
Expand All @@ -44,6 +49,14 @@ func NewHeaderPropagator(h PackageNameResolver) *HeaderPropagator {
}
}

// convert from either `value` or `from` to the `to` field
func assignApproach(entry FieldMapperEntry) string {
if entry.StaticValue != "" {
return staticValue
}
return fromValue
}

// Propagate assigns header value to downstream client request fields
// based on fieldMap
func (hp *HeaderPropagator) Propagate(
Expand All @@ -70,27 +83,25 @@ func (hp *HeaderPropagator) Propagate(
val.QualifiedName, field.Name)
}

if val.StaticValue != "" {
switch assignApproach(val) {
case staticValue:
// patch optional params along the path
if err := hp.initNilOpt(key, toFields); err != nil {
return err
}
hp.appendf(`key := "%s"`, val.StaticValue)
arrs := typeSwitch(key, gotype, field)
hp.append(arrs...)
continue
}

hp.appendf(`if key, ok := headers.Get("%s"); ok {`, val.QualifiedName)
// patch optional params along the path
if err := hp.initNilOpt(key, toFields); err != nil {
return err
case fromValue:
hp.appendf(`if key, ok := headers.Get("%s"); ok {`, val.QualifiedName)
// patch optional params along the path
if err := hp.initNilOpt(key, toFields); err != nil {
return err
}
arrs := typeSwitch(key, gotype, field)
hp.append(arrs...)
hp.append("}")
}

arrs := typeSwitch(key, gotype, field)
hp.append(arrs...)

hp.append("}")
}
return nil
}
Expand Down

0 comments on commit ea887bc

Please sign in to comment.