func (s *DirectMessageService) Show(id int64) (*DirectMessage, *http.Response, error) {
	params := &directMessageShowParams{ID: id}
	dm := new(DirectMessage)
	apiError := new(APIError)
	resp, err := s.sling.New().Get("show.json").QueryStruct(params).Receive(dm, apiError)
	return dm, resp, relevantError(err, *apiError)
}
Show returns the requested Direct Message (DEPRECATED).
Requires a user auth context with DM scope.
https://dev.twitter.com/rest/reference/get/direct_messages/show
package twitter
import (
	"net/http"
	"time"
	"github.com/dghubble/sling"
)
type DirectMessageEvents struct {
	Events     []DirectMessageEvent `json:"events"`
	NextCursor string               `json:"next_cursor"`
}
type DirectMessageEvent struct {
	CreatedAt string                     `json:"created_timestamp,omitempty"`
	ID        string                     `json:"id,omitempty"`
	Type      string                     `json:"type"`
	Message   *DirectMessageEventMessage `json:"message_create"`
}
type DirectMessageEventMessage struct {
	SenderID string               `json:"sender_id,omitempty"`
	Target   *DirectMessageTarget `json:"target"`
	Data     *DirectMessageData   `json:"message_data"`
}
type DirectMessageTarget struct {
	RecipientID string `json:"recipient_id"`
}
type DirectMessageData struct {
	Text       string                       `json:"text"`
	Entities   *Entities                    `json:"entitites,omitempty"`
	Attachment *DirectMessageDataAttachment `json:"attachment,omitempty"`
	QuickReply *DirectMessageQuickReply     `json:"quick_reply,omitempty"`
	CTAs       []DirectMessageCTA           `json:"ctas,omitempty"`
}
type DirectMessageDataAttachment struct {
	Type  string      `json:"type"`
	Media MediaEntity `json:"media"`
}
type DirectMessageQuickReply struct {
	Type    string                          `json:"type"`
	Options []DirectMessageQuickReplyOption `json:"options"`
}
type DirectMessageQuickReplyOption struct {
	Label       string `json:"label"`
	Description string `json:"description,omitempty"`
	Metadata    string `json:"metadata,omitempty"`
}
type DirectMessageCTA struct {
	Type  string `json:"type"`
	Label string `json:"label"`
	URL   string `json:"url"`
}
type DirectMessageService struct {
	baseSling *sling.Sling
	sling     *sling.Sling
}
func newDirectMessageService(sling *sling.Sling) *DirectMessageService {
	return &DirectMessageService{
		baseSling: sling.New(),
		sling:     sling.Path("direct_messages/"),
	}
}
type DirectMessageEventsNewParams struct {
	Event *DirectMessageEvent `json:"event"`
}
func (s *DirectMessageService) EventsNew(params *DirectMessageEventsNewParams) (*DirectMessageEvent, *http.Response, error) {
	wrap := &struct {
		Event *DirectMessageEvent `json:"event"`
	}{}
	apiError := new(APIError)
	resp, err := s.sling.New().Post("events/new.json").BodyJSON(params).Receive(wrap, apiError)
	return wrap.Event, resp, relevantError(err, *apiError)
}
type DirectMessageEventsShowParams struct {
	ID string `url:"id,omitempty"`
}
func (s *DirectMessageService) EventsShow(id string, params *DirectMessageEventsShowParams) (*DirectMessageEvent, *http.Response, error) {
	if params == nil {
		params = &DirectMessageEventsShowParams{}
	}
	params.ID = id
	wrap := &struct {
		Event *DirectMessageEvent `json:"event"`
	}{}
	apiError := new(APIError)
	resp, err := s.sling.New().Get("events/show.json").QueryStruct(params).Receive(wrap, apiError)
	return wrap.Event, resp, relevantError(err, *apiError)
}
type DirectMessageEventsListParams struct {
	Cursor string `url:"cursor,omitempty"`
	Count  int    `url:"count,omitempty"`
}
func (s *DirectMessageService) EventsList(params *DirectMessageEventsListParams) (*DirectMessageEvents, *http.Response, error) {
	events := new(DirectMessageEvents)
	apiError := new(APIError)
	resp, err := s.sling.New().Get("events/list.json").QueryStruct(params).Receive(events, apiError)
	return events, resp, relevantError(err, *apiError)
}
func (s *DirectMessageService) EventsDestroy(id string) (*http.Response, error) {
	params := struct {
		ID string `url:"id,omitempty"`
	}{id}
	apiError := new(APIError)
	resp, err := s.sling.New().Delete("events/destroy.json").QueryStruct(params).Receive(nil, apiError)
	return resp, relevantError(err, *apiError)
}
type DirectMessage struct {
	CreatedAt           string    `json:"created_at"`
	Entities            *Entities `json:"entities"`
	ID                  int64     `json:"id"`
	IDStr               string    `json:"id_str"`
	Recipient           *User     `json:"recipient"`
	RecipientID         int64     `json:"recipient_id"`
	RecipientScreenName string    `json:"recipient_screen_name"`
	Sender              *User     `json:"sender"`
	SenderID            int64     `json:"sender_id"`
	SenderScreenName    string    `json:"sender_screen_name"`
	Text                string    `json:"text"`
}
func (d DirectMessage) CreatedAtTime() (time.Time, error) {
	return time.Parse(time.RubyDate, d.CreatedAt)
}
type directMessageShowParams struct {
	ID int64 `url:"id,omitempty"`
}