hunk.code_window:         if (this.isLinkImage(link)) {
               return (
                   <PostImage
                       channelId={this.props.post.channel_id}
                       link={link}
                   />
               );
           }
           return null;
  
hunk.labels: keep keep keep keep add keep keep keep keep keep
hunk.after_edit:                     onLinkLoadError={this.handleLinkLoadError}
  
hunk.file_path: webapp/components/post_view/components/post_body_additional_content.jsx
hunk.type: add
file: package sns
  
  type Subscription struct {
  	Endpoint        string
  	Owner           string
  	Protocol        string
  	SubscriptionArn string
  	TopicArn        string
  }
  
  type ListSubscriptionsResp struct {
  	Subscriptions []Subscription `xml:"ListSubscriptionsResult>Subscriptions>member"`
  	NextToken     string
  	ResponseMetadata
  }
  
  type PublishOpt struct {
  	Message          string
  	MessageStructure string
  	Subject          string
  	TopicArn         string
  	TargetArn        string
  }
  
  type PublishResp struct {
  	MessageId string `xml:"PublishResult>MessageId"`
  	ResponseMetadata
  }
  
  type SubscribeResponse struct {
  	SubscriptionArn string `xml:"SubscribeResult>SubscriptionArn"`
  	ResponseMetadata
  }
  
  type UnsubscribeResponse struct {
  	ResponseMetadata
  }
  
  type ConfirmSubscriptionResponse struct {
  	SubscriptionArn string `xml:"ConfirmSubscriptionResult>SubscriptionArn"`
  	ResponseMetadata
  }
  
  type ConfirmSubscriptionOpt struct {
  	AuthenticateOnUnsubscribe string
  	Token                     string
  	TopicArn                  string
  }
  
  type ListSubscriptionByTopicResponse struct {
  	Subscriptions []Subscription `xml:"ListSubscriptionsByTopicResult>Subscriptions>member"`
  	ResponseMetadata
  }
  
  type ListSubscriptionByTopicOpt struct {
  	NextToken string
  	TopicArn  string
  }
  
  // Publish
  //
  // See http://goo.gl/AY2D8 for more details.
  func (sns *SNS) Publish(options *PublishOpt) (resp *PublishResp, err error) {
  	resp = &PublishResp{}
  	params := makeParams("Publish")
  
  	if options.Subject != "" {
  		params["Subject"] = options.Subject
  	}
  
  	if options.MessageStructure != "" {
  		params["MessageStructure"] = options.MessageStructure
  	}
  
  	if options.Message != "" {
  		params["Message"] = options.Message
  	}
  
  	if options.TopicArn != "" {
  		params["TopicArn"] = options.TopicArn
  	}
  
  	if options.TargetArn != "" {
  		params["TargetArn"] = options.TargetArn
  	}
  
  	err = sns.query(params, resp)
  	return
  }
  
  // Subscribe
  //
  // See http://goo.gl/c3iGS for more details.
  func (sns *SNS) Subscribe(Endpoint, Protocol, TopicArn string) (resp *SubscribeResponse, err error) {
  	resp = &SubscribeResponse{}
  	params := makeParams("Subscribe")
  
  	params["Endpoint"] = Endpoint
  	params["Protocol"] = Protocol
  	params["TopicArn"] = TopicArn
  
  	err = sns.query(params, resp)
  	return
  }
  
  // Unsubscribe
  //
  // See http://goo.gl/4l5Ge for more details.
  func (sns *SNS) Unsubscribe(SubscriptionArn string) (resp *UnsubscribeResponse, err error) {
  	resp = &UnsubscribeResponse{}
  	params := makeParams("Unsubscribe")
  
  	params["SubscriptionArn"] = SubscriptionArn
  
  	err = sns.query(params, resp)
  	return
  }
  
  // ConfirmSubscription
  //
  // See http://goo.gl/3hXzH for more details.
  func (sns *SNS) ConfirmSubscription(options *ConfirmSubscriptionOpt) (resp *ConfirmSubscriptionResponse, err error) {
  	resp = &ConfirmSubscriptionResponse{}
  	params := makeParams("ConfirmSubscription")
  
  	if options.AuthenticateOnUnsubscribe != "" {
  		params["AuthenticateOnUnsubscribe"] = options.AuthenticateOnUnsubscribe
  	}
  
  	params["Token"] = options.Token
  	params["TopicArn"] = options.TopicArn
  
  	err = sns.query(params, resp)
  	return
  }
  
  // ListSubscriptions
  //
  // See http://goo.gl/k3aGn for more details.
  func (sns *SNS) ListSubscriptions(NextToken *string) (resp *ListSubscriptionsResp, err error) {
  	resp = &ListSubscriptionsResp{}
  	params := makeParams("ListSubscriptions")
  	if NextToken != nil {
  		params["NextToken"] = *NextToken
  	}
  	err = sns.query(params, resp)
  	return
  }
  
  // ListSubscriptionByTopic
  //
  // See http://goo.gl/LaVcC for more details.
  func (sns *SNS) ListSubscriptionByTopic(options *ListSubscriptionByTopicOpt) (resp *ListSubscriptionByTopicResponse, err error) {
  	resp = &ListSubscriptionByTopicResponse{}
  	params := makeParams("ListSbubscriptionByTopic")
  
  	if options.NextToken != "" {
  		params["NextToken"] = options.NextToken
  	}
  
  	params["TopicArn"] = options.TopicArn
  
  	err = sns.query(params, resp)
  	return
  }
  