You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

265 satır
14KB

  1. package main
  2. import (
  3. "fmt"
  4. "net/http"
  5. "strings"
  6. )
  7. //display vimeo video in biukop brand
  8. const videoPrefix = "/v/"
  9. type vimeoPlayer struct {
  10. VideoId string
  11. playsinline int
  12. autoplay int
  13. autopause int
  14. loop int
  15. background int
  16. muted int
  17. Title string
  18. ContentDescription string
  19. ThumbnailURL string
  20. FavIconURL string
  21. }
  22. func videoMain(w http.ResponseWriter, r *http.Request) {
  23. videoVimeo(w, r)
  24. }
  25. var thumbnailDataURL = `data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAAEsCAYAAAB5fY51AAAACXBIWX
  26. MAAC4jAAAuIwF4pT92AAAgAElEQVR4nO3dd5hU5f3+8fdzZnZhKSJSFAUD9hJ7izWaGMUeCxijxo
  27. rYY8xPpboOsIi9JYo1xhpFJcb6VREsCGpix4aFIiodpC2zu/P5/TG7ssAuOzs7M8+Zmft1XV7K7s
  28. w59x96e8pTHIYUs/5WwsaUsIISSulODT0xuuPoAWyIsRGwIY6uGGU4okAUCIBI7V/U/jnayFlqav
  29. 8CSADVgAFVQA1GFTAbmAvMJuAHjO8wZhLwHQmmM59lbEw1V1GFOf1bW6ScCqtIjLEIH9CZCF0xep
  30. FgexybY2yF0QPHJkCJ75iNMIxZOGYC0zE+I+ALAr4kwRzmMoc7XZXvkJJ9KqxCFbM2VPFLjB2BnW
  31. v/6g50Bcq8ZsucOMYcHD/imILxIQHvU82HXO0W+g4nmafCKgQxa02cjhh7ELA3sB/GthjtgFIczn
  32. fEHKoCVmB8DUwk4C1qmERr5lDulvsOJy2jwspHMQuoYhNgZ4yDgL2AXSicK6dMiwOfAm8DrxPwP3
  33. rwDefoNjLfqLDyRfIZ1PYYvQk4lATb4ehK8mG3NM9CYCrGq8DzzGeynoHlBxVWmA20jgTsDBwBHA
  34. f0oPE3cZKeGhzzMV7E8RRtmEwVcyl3Cd/BZG0qrLC5wtoTZR/gaKA30AuK6hmUb7MwJhAwFuNNKt
  35. xs34FkFRVWGMQsIM6OGCfjOAajJy60QwyKg1GDYw7wAgGPEmUC5a7ad6xip8LyJWYB1fyCBEcDp5
  36. McdiDhNQPjARxjmMdneublhwor12LWmkr2I+A0HL0xOvuOJM2yHHgDuJ9SXqTcLfIdqJiosHLCHJ
  37. fSkdacSEB/jG2BUt+ppEVqgOk4HgHuooRZelCffSqsbEre9m1Ngn61z6e6+o4kWbEMx1PAaEr4L+
  38. Uu7jtQoVJhZcsQ2wfjPJJDEjr6jiM5sRx4DcedlPCcHtJnngork2IWZSV74BgI/A5o7TuSeFENvA
  39. vcTJznuM4t8x2oUKiwMiFmUWrYmxr+SvKKSoM7JcnxIXANVTzLNW6J7zj5ToXVUslbvyuAg4E2vu
  40. NIKNUA/8O4mlb8Rw/n06fCSkfdQE/HAIzfA618R5K8UA1MJqCcHryhydfNp8JqroHWk4CLcfSrXb
  41. 5FpLlqgLFEGMkwPgCtoJoqFVaq+lsJnbkE+DOwie84UhAW4niYBFcx0s33HSYfqLCaErNSVnAoEU
  42. YB2/mOIwVpNo6rWMhD/N0t9R0mzFRY6zLItgKG4TgWjUyX7DIcE4GBVDBRG200TIXVkJiVEuci4D
  43. JgQ99xpKgswbgfo1zr0q9NhVVfzAJWsheOG4Ff+Y4jRW0mxoW04kVN9VlFhVUnZu2o4gqMi4AOvu
  44. OIACuBMTgGMcLN9B0mDFRYzhxD2ZMabgH2RKt7SvjMwHEJX/IfHnc1TX+8cBV3YcWsDXH+AgwE2v
  45. qOI9IoowrHP4Ehxbxsc/EWVsy2oopbMHr7jiKSMscUqjmfUe5131F8KL7C6msRtuRE4Hqgm+84Im
  46. lYinENldzAjW6F7zC5VFyFdaltQBlXAhegFRUk3zmepYY/c7X7xneUXCmewhpqW5PgHmAftPmoFI
  47. 6pBFzMcPei7yC5UPiF1dcibMFRBNytDR+kQMUxBrOU27jVrfQdJpsKu7AutTLaMADjcrT6pxSy5D
  48. 6KjxLnr1zn5viOky2FW1gDrAMRRmP0wRHxHUck6wzD8T8C+jLcfes7TjYUZmENtoOAe4DNfEcR8W
  49. AB8Fd25kH6FNZA08IqLGeOAZxAwN1oeo0Ut5XAKEoZUUi79xROYcWslJVciiOGloIRgeRN4v0Yfy
  50. 2UlR8Ko7Bus1b8wLU4LgA9rxL5mWEE/B8J/sRIN9d3nJbK/8IaaB2JcAvGKWjiskhj3sXRhxFuuu
  51. 8gLZHfhTXYumHcheNI31FEQs+YguMUKtwHvqOkK38LK2ZdiTOW5Mh1EUnNt0Q4hmHuY99B0pGfU1
  52. QGWk+VlUhaelHNSwyxA8Dy7hFK/l1hDbKtCPg3xra+o4jksdnASVS48b6DNEd+FdZQ60UNz+DY3n
  53. cUkQIwF8fRjHCTfQdJVf7cEg61rTGeU1mJZEwXjP8w1A7Ml9vD/LjCGmzdcDyHsYvvKCIFaDbGiY
  54. x0r/kO0pTwF1bybeCTwH6+o4gUsJkYhzDSfe47yLqE+5ZwkHUizuOorESyrQfwAlfaDr6DrEt4C+
  55. tia0XA/cCvfUcRKQqOntTwAEOtl+8ojQlnYd1lJbTnbyQ4wncUkSKzM8YDDLJOvoM0JHyFFbMoMx
  56. mOcQZOcwNFcs7YD8e9XGzr+Y6ypvAVVpz+JLhEq4SKeGQcTXuuoa+F6r/DcL0lHGSH43gSrb8uEg
  57. YJYBClXEe5S/gOA2G6whpiu+O4D5WVSFgEQIw4fwjLwNJwXGHFbCNW8hKOUL9SFSlS83AcFYYpPP
  58. 4L61Iro4yxwKGek4hI474hzt6+txDze0sYsyhlxIBDvOYQkaZsRin3E7N2PkP4Law4JwAXoaWNRf
  59. LBocQZwBh/bw79FdaVthNwB3rILpIvAozL+YA+vgL4eYYVsw2I8wKwp4ezi0jLzCXg1wx3n+X6xL
  60. m/wopZlDjDgT1yfm4RyYQu1HA7V1j7XJ8494VVxckY/dBzK5H85TiQKLFcj4TPbWENtc0xrsdRkt
  61. Pzikg2nMdmHJ7LE+ausC61MhLcCXTO2TlFJJtaE+U2YrZxrk6Ym8KKWUAZlwIH5eR8IpIbxi+Icx
  62. Mxy8nb/twUVhW7A5fl7HwikkvHEuePuThR9oc1xKw1VbyJsVuWzyQi/swmwa+42k3L5kmye8XjzF
  63. HF5SorkYK3IQE30d+y+kItu4U1mN0wLsnqOUQkLI6kc3ZHwWfvlvAya0spz6AH7SLFZAaOAxjhpm
  64. fj4Nm7wirhT2jHG5FisylQTsyy0i3ZKayYbYwjlrXji0h4JTiFquzsJZqdQolzKhogKlKcHCUYF2
  65. Zj2k7mC2uobV37oF1zBUWK19FsSe9MHzSzhRWzKAmuxLFRRo8rIvmmFTCCmK2fyYNmtrCq2Af8Le
  66. 4lIqGyE3HOyOQBMzes4S4rYTqvAXtn6Igikv/ms5JtuN7Ny8TBMneFNY0/oBVERWR1nShlKC4z+x
  67. pm5gprkHXCMQH4ZQaOJiKFxLEA49dUuE9aeqjMXGEFnIqxfUaOJSKFxdgA4/JMDHNoeWENsk4Yl+
  68. M0jEFEGuE4ni1a/sgoE1dYZwHdMnAcESlcbXAMaOlBWvYMK2ZdifMesElLg0jqWkXgmG3gqK1hcR
  69. wmTYfnpsKiSt/JRNapCseBjHBvpXuAlhXWIBuEYwQa1Z4z0QBuOBQu2Aci9a6PP/kBho+HsZ9BVc
  70. JfPpEm/JtS+lDuqtP5cvq3hINtQxxno7LKqW06wbl7r15WAL/sBg+eCM+eCjt08ZNNJAWHsJK90v
  71. 1yS55hnQ30asH3JQ0HbQaljbxrKY3AIVvBuxfCHUdCj/Vym00kBW1wXErMoul8Ob3Cusza4rggre
  72. 9Ki3Rq1/RnWkWTV2ETz4GL94L2pdnPJdIMhxNnu3S+mF5hlXAKpjeDYdejI9x4FEw4Cw7dDCK6eZ
  73. dwaA1clM4Xm19Yyaur89M5meRexMGu3eG5M+DRPrDjhnroKKHQl4HWs7lfan5hteJgYNtmf0+8ig
  74. TQZyeYcDaM+C10LvOdSIrcekQ4q7lfal5hxawU4zwgq1v5SPZ0bAMDfwPvng9n7Jwc0yXihXESl1
  75. nX5nyleYUV55doF5y854CeG8B9feCl0+G3PfV8S7zYnFKObM4XmntLeCagd04F5IDN4OnT4B/Hwq
  76. YaBiG5d1ZzNl9NvbAGWAfg5HQSSbi1LYVTd4P3LoRBB0DH1r4TSRHZm07smuqHUy+sKCdidEgrku
  77. SFTm2h4lB4/Wzou72eb0lOOBznpPrh1Aqrv5VgnKolZIpD3TSff/8Rdt7QdxopAkcQs5Q2rkmtsD
  78. qxO7B7SxJJfimNQO9tYPL58LfD4Re6tpbs6UIVR6fywRQKyxyOPiRHp0qRaRWFC/aFt/rD+XtAO7
  79. 1ykcwLMP7Abdaq6Q825RrWA47KRCrJXxt3gFuPhvFnwSGbQaCHA5JZezGLLZr6UNOFtZj9oekDSe
  80. GLBLB7d3jxLHi8L+zQFZyKSzKjDRFObOpDTRdWwB8yEkcKhgOO3xEm9INRB0OXNr4TSUFw9GXMuj
  81. eqWHdhxWx9jMMyGkoKxgZt4LIDYVL/5DSf1mmtcCRSy9ia99Y9JmvdhRXnEGD9TGaSlinJ3Na3Ge
  82. GAzTsnp/m8eBoc2DO5jLNIWgL6rPvX63ZsCp+RHOqewgJ+vvx6M3juNLjnGOilYRCSniOIWaMjEh
  83. ovo8HWDdg3G4kkfWF/O9emFE7bHd69AAbur2k+0my9qGGXxn7ZeGE5dkfbd0maOrWFkb2Tz7f6bK
  84. fnW5KyMhL0buyXjRSWOYzDG/+9SGq27goPnQhPnQS7pjT5Qoqe8dvGbgsbLqQYZcDB2cwkxaM0Co
  85. dtAxPPhVsPTy5jE/I7W/FrV6rp0dAvGi6sOFuhwaKSYa1L4KJ9YWJ/uEi7+UjjyqjhwIZ+0XBhOQ
  86. 7JZhopbt3Xh5uOglfOgEM319WWNKCRDmq4sIzjshpGil7gYM9N4cUzYWI/6L2Fxm/Jag4jZmvNoV
  87. j7X5Eh1gPYJheJRAD27gljT4GHT4DNOuqKSwBoQzX7rPnDtQsrwR5A+1wkEqnTugT67gQfXgTDfg
  88. MbtfWdSDxzJNZ+jtXQRfj+jfxcJOvatYIhv4XX+8EpO2qZ5iK3P85Wu+BevZhiVopj75xGEmnAll
  89. 3gH7XbkO3bXduQFaktuXz1weurF1Y1m+DYMqeRRBoRDZLbkL16DtxxFGy1ge9EkmNdia6+y/zqhZ
  90. VgGxJ0zGkkkSaURqDfXjC+H1yxn5ZpLiIRjL3q/2DNZ1V7amccCauN10vOT5zcH47dJllkUuAce9
  91. J31aJ+qworZgGwh49MIqkKHGy/ETxxCow5EfbYOPwrWEiLbM/2q0Yt1L/CigI75z6PSPMFDo7eHl
  92. 4+E245DDqX+U4kWWH8gko61/2xfmFthJaTkTzToQwu3Bc+uggu2EPzEwuOI0KE3er+uKqwqnQ7KP
  93. mrWwe47Rh4uXZ+ooZBFBBbtaDfqsJKsKOXMCIZ4hzstSmMPRUe6QOb6313ofi5m1YVlmt8WVKRfF
  94. JWb5rPcE3zKQQ71b4UrC2s5GvDbdf1DZF807Z2ms9r/eBPO0GZlmnOVx1ZzsZQV1i96Ia285ICtV
  95. UXuPd4eO5U+FV3DYPIQyVEkzNwgto/bgqEeAMpkZaJRuCgLeCN/nDn0cnnW+qtvBHFsTXUFZbRHd
  96. CGTFLwogGcvSe8cQ4M2B/alfhOJCmqd4VFsr1EikW39aDiUJh8Lhy3jZaxCT2rf4UFm3mMIuKFq5
  97. 3m8/jJ8MRJyWk+uk0MrR7ErDRgjEVwbOo7jYgvkQCO3Bb+70y46TDYUMMgwqgDcToGfEpbEnTxnU
  98. bEt45l8Of94P0Lof9umuYTMutjdAyI05ZAhSVSp9t6cMdxyW3ItJtPaLQnYP2AgDZatE9kdY7kNm
  99. RjT4GHjtdqpyEQAN0CjE44WvlOIxJGrUvgxJ3hfxdCxW81zccro2eASw55F5HGtWsFg36TnOZz5i
  100. 7QWsMgfOgSYHT1nUIkX2zVBe46Dp7/E+zdPTk0QnLE2CgAFZZIc0SCVdN87vu9pvnkjGODQEMa8o
  101. sm7oZHJIDTd4c3z4GB+8P6ehKcXUaHQEMa8ktXTVEPnY3Wg+GHJovr2G00DCJrHBsEGHrvkUd0hR
  102. VO9XfzeeYU7eaTJe0D0BWWSKYEDnpvndzN5+bDoJuuiDPH0TYgub2XiGRQ3W4+710I52qaT6asF+
  103. D0llAkGxywUXu4vXaaz5Fb6vlWixitA0xXWCLZVDfNZ8zJ8NAJmubTEup7kRxpXQIn7gT/vRBGHg
  104. xd2vhOlH8CtPmESE61bwUDD4KJ/eG0naBElw0pC0DDGkR82LIz3H083HYERDUEIiXqdhGPSiJwzl
  105. 4w+Ne+k+QHFZaIZ87B4VtrBYhUqLBEQiBhvhPkBxWWiGcJg6c/g8oa30nCLwASvkOIFKsag4ffg1
  106. sn+U6SH6LAD8AmvoOIFBMDvp4H174O972XLC5pmka5i+TYT5Vwx2S4eRL8uNR3mvyiwhLJkZXV8P
  107. QUuOpV+GK+HrSnI4pjHqZbQpFsSSRg0nSomAAvfOU7TR4zaqIYK33nEClUPyyGIS/DmCmwJO47TZ
  108. 4LWBjFWKAV9EUya8FyuOttuP5NmF/pO02BMKqiOJb5ziFSKFZWw3+mwFXj4dO5vtMUGGNeFJjjO4
  109. dIIfjfTBj4Erw2DeIa3Zh5ASuiwCLfOUTyVd14quteg3vf13iqLFtU95ZQRJpp0QoYPRlumQQ/6s
  110. FK9iWYHyXBXD10F0ldVQ38+xMYNh6mzAPT//BzI+CHKDDDdw6RfFCTgLdnQPk4eOUb32mKkDEnSo
  111. Q5JDDQdZZIY2YshOGvwr8+hqVVvtMUKeP7KMZSkg/eO/rOIxI2iyth9CS4cRLM0XMqvxzfRSlhGV
  112. XMw1RYInUqq+DpTyE2Dj6b7zuNAMuB+VHms4z2zAe29J1IJAzemQFDX4bx06BK46nCYjGOhQG3up
  113. XALN9pRHz7dj70ewIOvBde+kZlFTKLKGFhcnkZx7caiyXFasFyuOcduGEizFnuO400yJhNuVuaLK
  114. wEX+kdoRSjxz6AERPg03lanyrUHN9A3QJ+EaZSQxWOEq+hRHKgOpF8TnXly/DqNHRzkQ8cn8GqFU
  115. dn4VgOdPCXSCT7vpoHoybAox/D8mrfaSRFCRxfQV1hLWMGZSxFhRV6TrfuaVlSCbdMhNvfhh80ni
  116. rfVFHDl1BXWDe6FQy2r9HuOaG3UXvfCfLL8nhyHfXycTB1oe80kqZKlvI1rL4JxYfAAX7yiGSWGU
  117. ycBleNg9emJ59bSd6aWjv8ql5hGR/rTaHkOzOYtgAqxsNjn2jeX0FwvF/3j6sKK8oHaKtsyWNzl8
  118. K978K1b8JCraNeSN6r+4dVhRXhM2pYAZT5SCSSruoEPPo+XPcmfDJX61MVoP/W/UP9Z1iVGB/g2N
  119. tDIJFmq0nA5BlQ/oqeUxWw+SSYXveH4Ocfl7vq+veKImFlwFdzod+T8Lt/wLhvVVYF7HOW8lPdH1
  120. bfqt7xDsb5OY8kkqKfKuHWiXDHO/D9Ut9pJOsc79e9IYQ1CyvBuzgqgda5ziWyLsvj8J9PYegr8P
  121. VCTacpCoaR4K36P1qzsGYR4Vtg21zmEmlMwuDNb5PLE4+fpm20iorjJ5LjQ38WrPaBUW4xxge5zC
  122. TSmBkL4Zwn4cgH4ZVvVVZF6Ecq+bb+D4K1PhLwUc7iiDQgYfD6N3DmE3D/B7Ak7juRePIlN7oV9X
  123. 8QXesjCSbhiAOluUolUmfaAhg2DsZ8CktVVMXNeHXNH61dWDW8R4RFOLrmJJQIyVHqd70D178Ji1
  124. Y2/XkpeAmijFvzh2vfEl7jlhDwTk4iSdGLV8ND78FBd8PQcSor+dn3fM6na/5w7SssAMeLGEdmPZ
  125. IUrZoEvD0dhrwCb8zQwE9Zy6s87taa3dxwYcFLQPU6fi+SFjP4ci5c9zo8+BHENeFeGuJ4tqEfN1
  126. xIUWZSxRSMnbIaSorK4hVwy5sw+r/wg0apS+MWQ8OPpdZ+hgVQ7ioxXspmIikeK+LwyPuw1+1w1Q
  127. SVlTTpHebyfUO/aPyWz3gOx1/W+RmRdahOwOTpyd1pXpuhbbQkRY7nudM1uPTiugrrIxzTgC2yFE
  128. sK2M/jqaZo1U9pliUEjG/slw3fEgJc7RZivJiVSFKw5i6Fka/CLn+Df3ygspJmm8IOfNLYL9d9ux
  129. fhaRKc2+TnpOhVVsETH8HVryd3URZJizGWPmsPZ6iz7iKK8iZxZqPtv6QRBkyellz25fXpUKXxVN
  130. ISEZ5c168bvyWE5NtCx9iMBpKCYAZT58JZj8MB9yRX/VRZSQtNIrr66gxravpWL8EjOM6nqXKTor
  131. FgOfztLbj9HZitXZQlcx6j3K3zf3tNF1YVH1HKJ8COmUol+WllNYz9BIaNh8/nadVPyaiFJHiuqQ
  132. 81fdV0nVuGY0xGIkleqk4kV/3sfR+cNAY+U1lJ5r3G1+u+HYRUb/OqeZrkcHkpMl/NS676edg/Yc
  133. L0pj8vkoYa4NGGJjuvKbXhCmVMYSWTcPRuaTLJDwuWw+hJcPMkmLui6c+LtMB3VPNCKh9M7Qqr3C
  134. UIuAfdCRS8FXF45D3Y+w4Y/KrKSnLica5xS1L5YOoDQkt4jjg/At3STSXhZcBb38BV42HCNK1PJT
  135. lTTcC9qX449aEK5a4SuCudRBJeZsnnVGc/Ab+5H175RmUlOfV/fMFXqX64eVNujEdwXAJ0aG4qCZ
  136. 8Fy+C2SfD3t2Huct9ppAhV47g7lYftdZpXWF/xNVvwPI6Tmh1NQqM6AY++D9e9AR/P9Z1GitinVD
  137. OhOV9o3uj1x10NAaOBymZ9T0Khuia539/+o+G0p1RW4pUB9zHKNWu4VPNXYZjLJDoxGceBzf6utF
  138. j71ul974s5MHICPD4FKqszmUgkLT9iPNLcLzV/fuCdrgrj1mZ/TzKirKR5n1+0Aq56Gfa7Gx74UG
  139. UlIeF4kJGu2df46a1z1YtnmcYUHNun9X1J20+V0KlN059bFocnP4Yrx8F0zVGQcPkJ+Fs6X0xvBY
  140. ZzXBUB16X1XWmRH5ooHwPGTYUj/wlnjFVZSSg9RAmz0vli+kvGJHgW+Dzt70tanv6s4Z8b8PU8OO
  141. 0xOPKh5OBPbfogoeNYgPH3ppaRaUz6hTXSzcdxG6Bhhjl0x7vw0herysiAH3+C8pdgt9uTm5PqOZ
  142. WElvEvRrq1tqBPlWvR7MCYrU+cd9HOOjnVoRX8phdssQHMWAxvzYSZP/lOJdIEx3IcOzLcfZ3+IV
  143. p62zDI+uE0ZUdEmnQHFe78lhyg5cseV/IQxsctPo6IFLKFVHFTSw/S8sK60a3AcS1GyvOBRKTIOO
  144. 6lLWnfCtbJzMYSpTyFY2JGjiUihWYW1dyW7pvB+jJTWOVuOTACiGfkeCJSSG5hlJuRiQNlbuuuUs
  145. ZB07teiEhRmUac2zN1sMwVVnIZ5b/imJOxY4pIPosD53Kdy9julZndHHU40zBuxLT2u0jRM55kHq
  146. 9m8pAZ3s3ZGTWMJuC9zB5XRPLMXCKUc6eryuRBM7/9/Ci3GMcQQBNERIqV42aGu6mZPmzmCwsgyk
  147. vAv7JybBEJN8fHlHBzdg6dradNMetJFW9ibJKlM4hI+CwHjqbCjcvGwbNzhQVQ7qbhqEC3hiLF5A
  148. FKeS1bB89eYQF05T6Ml7J6DhEJB8e3lFJOucvaRUp2C+sit5IIl5BcElVEClc1NfyVcpfVcZjZLS
  149. yA4W4qjvKsn0dEfPoXrXkm2yfJfmEBzGI0xr9zci4RybVPKeWybN4K1slNYf3DVQJXQHoLz4tIaK
  150. 0k4DLK3Y+5OFluCgtgpPsSxxU5O5+I5MLtDOeFXJ0sd4UFUMKjOO7O6TlFJFveoppycDmbO5y9ga
  151. ONGWwbAs8Du+b4zCKSObNJcBhXu/dzedLcXmEBVLjZOC7AsSjn5xaRTKgBLudqPsj1iXNfWAAj3G
  152. SSD+G1DrxI/rmbCvdALm8F6/gpLIAS7gce9HZ+EUnHJIwhvk6e+2dY9cWsM3GeAX7lMYWIpGYWEQ
  153. 5lmJviK4DfwgIYaluTYBxoVQeREFuB0ZeR7lmfIfzdEtYZ7r7AcR7JZSlEJHwSwHDfZQVhKCyACp
  154. 4FBgAZXU5VRFrMgHso5QbfQSAshWXOKOUOEtyuDSxEQsQYRw2XU+5Cseeo/2dY9cWsDVU8idHbdx
  155. QRYSqlHEi5+953kDrhuMKqU+6WU8LJwFu+o4gUuRnACWEqKwhbYQGUuwUkOA34zHcUkaLkWESUM6
  156. lwH/mOsqZw3RLWN8B2IsIrQGffUUSKSCVwGhXucd9BGhK+K6w6o9yHGL8H5vuOIlIkVmBcwkjG+A
  157. 7SmPAWFsBI3gJOAxb6jiJS4BIYQ9iFe7DczxFMVbgLC2dU8DyO8zBW+k4jUqASQAWtuJU+LtQLEo
  158. S8sACcMYLHCegHLPGdRqTAVJFgGKUMy8Wa7C2VB4UF4IwSHgYuxFHpO41IwTBG0Jqr86GsIMxvCR
  159. vizDGIk4G7gDLfcUTyWDUBVxPlKspdwneYVEV9B2gWc4azhxmIw/F3oL3vSCJ5qAqooAcjOSd/yg
  160. ry5pawHnNGKx7GcQZ6piWSjpHMYyTnuLxbbCC/bgnXNNR6k+BBNLhUJBWVwP+jlDvy6TawvvwuLM
  161. wxhH0xHgF6+E4jEmJLCPgzO/JA2IcurEueF1atK217ange2NR3FJEQWoxxOiN52sfGEZmUf8+wGj
  162. LMTcFxITDXdxSRkFmOYwS78Ey+lxUUyhUWAOa4kj2p4WFgc99pRLxzLMU4i515Mp9vA+sroMKqNc
  163. A2JcIjGPvgcL7jiHjyNRFOZZib5DtIJhXGLWF9o9wMSjkOx2Mk50iJFBfHWxhHFlpZQSEWFkC5m8
  164. MSTidgOKaNLaRoJIB/UcIRjHSf+w6TDYV3S7gacwzieBy3At18pxHJoqU4rqGEa8OyYUQ2FHhh1R
  165. pouxBwD7Cr7ygiGWfMIcJZRHk+XweEpqo4CgsgZhsQ5wbgFPJtDqVIwwyYQEB/hrupvsPkQmE+w2
  166. pIuVtAKf1wXAAs8B1HpIVWAtcS56hiKSsopius+obYniQYjWMX31FE0jALx1/YiacKZXxVqoqzsA
  167. AGWAcilGOcj6OV7zgiTTJqCHgBOJ8RbqbvOD4Ub2HVGWLHY4wCtvAdRWQd5hJwDVFuK+S3gE1RYQ
  168. EMsR4YI0k+kBcJF8c7GP2p4MNCmA/YEiqsn9WO2QoYhWkuooTCXOAmSrmhmK+q6lNhrSlm3aniSo
  169. zTgRLfcaQoGfAKcCkV7hPfYcJEhdWQmEWJ8zsc12FsB5pELTni+BHHEJbxCDe6Fb7jhI0Ka10utT
  170. LKuBy4CCh9HswAAAMtSURBVOjkO44UtGXAY8AgKtxs32HCSoXVJHNcyXYkGIzRF4j4TiQF5w0Cru
  171. QL3uDx4hpX1VwqrFQlbxMPAiowdsWpuKRFDJhOwAiiPEq5W+47UD5QYTVXzFoT54/AAJJjt/R8S5
  172. prNo47SXArI91832HyiQorXZdZV0o5C8fFGBv5jiN5YSUwmoC/M5yvin1MVTpUWC1ijsFsBPwF+B
  173. OwoedAEk6LgbGUcg3wZaEvAZNNKqxMSa4lfz6O03TFJQAYi3GMJcL1DHNTfMcpBCqsjDLHUHpinA
  174. mci2lH6iJVBTxIhJuJMEVXVJmjwsqWv9j6lHE2jrOArSimtceKkWE4fiTgEaq4lVHM1DOqzFNhZd
  175. sV1p4Ix+E4E9gXjeMqNAZMAR6gmke5xn3nO1AhU2HlyqVWRmt2J+A8jGOANr4jSYvEgTcwbifBOE
  176. a5xb4DFQMVlg+DrRvJt4p/BLYBSv0GkhQlcHyL8SyljKa8MLfSCjMVlk+XWVtK+RWOUzEOB7r4ji
  177. QN+gl4DceDlDCOcqc9ATxRYYVBzAKW0pkovyPgVGA/jDY4jaL3qBLjYxwPk+BpWvMd5a7ad6hip8
  178. IKoyHWAzgM4wRgV4wNVF45sQT4GONpaniaa/kS05u+MFFhhdkYi/ARPUmwL3A0cAC6bcy0ZTgmYj
  179. xPhFfpwpdc5Fb6DiUNU2Hli5gFrKA9EfYkefV1MI5eQFs0ATs1ybFSlcD3OF4HXqCS8bRnkW738o
  180. MKK5/FbBuq2IME++PYC9gMaOc7VshU4piJ8TEJxgMTac0UrZGen1RYheIya0sJPQjYgQT74dgN2J
  181. nkFVgxiWN8huNdjMm1f5/FSBZo5Hn+U2EVqr4WoTultOOX1LATsBuwA9ATWI9kkeXrdCEDlgNLcX
  182. wPfILxLhE+IMKHwHLd4hUmFVaxiVk7auhFNT2ALXBsjbEZsCEBXWsnbIdlJ+xqHPNIMBfHHOBbjK
  183. kYUwmYzgqmcaPGRBUTFZYkH+hDG+K0JaAdNXTG6E7AxsCGGJ1xdAG6Au1q/1xG+htzLAaWAgsxlp
  184. BcgXNR7d/nUMMsSvge40cSLKWUZUxhmdY7l/8PfreOtzDlPqoAAAAASUVORK5CYII=`
  185. func videoVimeo(w http.ResponseWriter, r *http.Request) {
  186. vimeo := getVimeoParams(r)
  187. pattern := `
  188. <html>
  189. <head>
  190. <link rel="shortcut icon" type="image/png" href="%s" />
  191. <meta property="og:type" content="website" />
  192. <meta property="og:title" content="%s">
  193. <meta property="og:description" content="%s">
  194. <meta property="og:image" content="%s">
  195. <title> %s </title>
  196. </head>
  197. <body style="margin:0px">
  198. <div style="display:none;"><img src="%s" alt=""></div>
  199. <style> iframe {width: 100vw; height: 100vh; overflow:hidden;} </style>
  200. <iframe src="%s"
  201. scrolling="no" frameborder="0"
  202. style="width: 100vw; height: 100vh; overflow:hidden;"
  203. allow="autoplay; fullscreen"
  204. webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
  205. </body>
  206. </html>`
  207. output := fmt.Sprintf(pattern,
  208. vimeo.FavIconURL,
  209. vimeo.Title,
  210. vimeo.ContentDescription,
  211. vimeo.ThumbnailURL,
  212. vimeo.Title,
  213. //r.Host + r.URL.Path,
  214. vimeo.ThumbnailURL,
  215. vimeo.getUrl())
  216. fmt.Fprintf(w, output)
  217. }
  218. func getVimeoParams(r *http.Request) (ret vimeoPlayer) {
  219. prefix := videoPrefix + "v/"
  220. ret.VideoId = r.URL.Path[len(prefix):]
  221. if strings.ToLower(r.Host) == ("v.io") {
  222. ret.Title = "您有一条视频消息"
  223. ret.ContentDescription = "私密视频"
  224. }
  225. ret.Title = "Video Message"
  226. ret.ContentDescription = "Modern Video Communication"
  227. ret.FavIconURL = "/assets/videoIcon300x300.png"
  228. ret.ThumbnailURL = "/assets/videoIcon300x300.png"
  229. ret.autopause = 0
  230. ret.autoplay = 1
  231. ret.playsinline = 0
  232. ret.loop = 1
  233. ret.background = 0
  234. ret.muted = 0
  235. if r.URL.Path[:len(prefix)] == videoPrefix+"b/" {
  236. ret.playsinline = 1
  237. ret.background = 1
  238. ret.muted = 1 // autoplay video must be muted.
  239. }
  240. return
  241. }
  242. func (m *vimeoPlayer) getUrl() (ret string) {
  243. ret = fmt.Sprintf(
  244. "https://player.vimeo.com/video/%s?playsinline=%d&autoplay=%d&autopause=%d&loop=%d&background=%d&muted=%d",
  245. m.VideoId, m.playsinline, m.autoplay, m.autopause, m.loop, m.background, m.muted)
  246. return
  247. }