webhook.go 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. package webhooks
  2. import (
  3. //"surdeus.su/core/ss/urlenc"
  4. "surdeus.su/core/ss/jsons"
  5. /*"log"
  6. "net/url"
  7. "strings"*/
  8. )
  9. type CustomFields jsons.ArrayMap[CustomField]
  10. type CustomField struct {
  11. Id jsons.Int `json:"id"`
  12. Name string `json:"name"`
  13. Values jsons.ArrayMap[any]
  14. }
  15. type Request struct {
  16. Account Account `json:"account"`
  17. Leads *Leads `json:"leads,omitempty"`
  18. Contacts *Contacts `json:"contacts,omitempty"`
  19. }
  20. type Type int
  21. const (
  22. TypeNone Type = iota
  23. TypeLeads
  24. TypeContacts
  25. )
  26. func (r *Request) Type() Type {
  27. if r.Leads != nil {
  28. return TypeLeads
  29. }
  30. if r.Contacts != nil {
  31. return TypeContacts
  32. }
  33. return TypeNone
  34. }
  35. type Account struct {
  36. Id jsons.Int `json:"id"`
  37. SubDomain string `json:"subdomain"`
  38. Links struct {
  39. Self string `json:"self"`
  40. } `json:"_links"`
  41. }
  42. type Leads struct {
  43. Status jsons.ArrayMap[LeadStatus] `json:"status"`
  44. Add jsons.ArrayMap[LeadStatus] `json:"add"`
  45. }
  46. type LeadStatus struct {
  47. Id jsons.Int `json:"id"`
  48. StatusId jsons.Int `json:"status_id"`
  49. PipelineId jsons.Int `json:"pipeline_id"`
  50. OldStatusId jsons.Int `json:"old_status_id"`
  51. OldPipelineId jsons.Int `json:"old_pipeline_id"`
  52. }
  53. type Contacts struct {
  54. Add jsons.ArrayMap[Contact] `json:"add"`
  55. }
  56. type Contact struct {
  57. Type ContactType `json:"type"`
  58. Id jsons.Int `json:"id"`
  59. Name string `json:"name"`
  60. AccountId jsons.Int `json:"account_id"`
  61. CreatedUserId jsons.Int `json:"created_user_id"`
  62. ModifiedUserId jsons.Int `json:"modified_user_id"`
  63. ResponsibleUserId jsons.Int `json:"responsible_user_id"`
  64. CreatedAt jsons.Int `json:"created_at"`
  65. UpdatedAt jsons.Int `json:"updated_at"`
  66. LastModified jsons.Int `json:"last_modified"`
  67. DateCreate jsons.Int `json:"date_create"`
  68. CustomFields CustomFields`json:"custom_fields,omitempty"`
  69. }
  70. type ContactType string
  71. const (
  72. NoContactType = ""
  73. ContactContactType = "contacts"
  74. CompanyContactType = "company"
  75. )
  76. /*func NewFromString(body string) (*Request, error) {
  77. ret := &Request{}
  78. err := urlenc.Unmarsal(ret)
  79. if err != nil {
  80. return nil, err
  81. }
  82. return ret, nil
  83. }*/
  84. func (hook *Request) GetLeadId() int {
  85. if hook.Leads.Status != nil {
  86. return int(hook.Leads.Status[0].Id)
  87. }
  88. return int(hook.Leads.Add[0].Id)
  89. }