planetscale 0.3.1 → 0.3.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (368) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +9 -1
  3. data/.github/workflows/gem-push.yml +9 -2
  4. data/.licenses/go/github.com/matoous/go-nanoid/v2.dep.yml +34 -0
  5. data/.licenses/go/github.com/planetscale/planetscale-go/planetscale.dep.yml +1 -1
  6. data/.licenses/go/github.com/planetscale/sql-proxy/proxy.dep.yml +1 -1
  7. data/.licenses/go/go.uber.org/zap/buffer.dep.yml +1 -1
  8. data/.licenses/go/go.uber.org/zap/internal/bufferpool.dep.yml +1 -1
  9. data/.licenses/go/go.uber.org/zap/internal/color.dep.yml +1 -1
  10. data/.licenses/go/go.uber.org/zap/internal/exit.dep.yml +1 -1
  11. data/.licenses/go/go.uber.org/zap/zapcore.dep.yml +1 -1
  12. data/.licenses/go/go.uber.org/zap.dep.yml +1 -1
  13. data/README.md +2 -0
  14. data/controller.go +21 -36
  15. data/go.mod +4 -3
  16. data/go.sum +32 -18
  17. data/lib/planetscale/version.rb +1 -1
  18. data/lib/planetscale.rb +2 -3
  19. data/planetscale.gemspec +1 -1
  20. data/proxy/planetscale-darwin.h +1 -1
  21. data/proxy/planetscale-darwin.so +0 -0
  22. data/proxy/planetscale-linux.h +1 -1
  23. data/proxy/planetscale-linux.so +0 -0
  24. data/proxy.go +1 -5
  25. metadata +3 -345
  26. data/vendor/github.com/armon/circbuf/.gitignore +0 -22
  27. data/vendor/github.com/armon/circbuf/LICENSE +0 -20
  28. data/vendor/github.com/armon/circbuf/README.md +0 -28
  29. data/vendor/github.com/armon/circbuf/circbuf.go +0 -92
  30. data/vendor/github.com/armon/circbuf/go.mod +0 -1
  31. data/vendor/github.com/golang/protobuf/AUTHORS +0 -3
  32. data/vendor/github.com/golang/protobuf/CONTRIBUTORS +0 -3
  33. data/vendor/github.com/golang/protobuf/LICENSE +0 -28
  34. data/vendor/github.com/golang/protobuf/proto/buffer.go +0 -324
  35. data/vendor/github.com/golang/protobuf/proto/defaults.go +0 -63
  36. data/vendor/github.com/golang/protobuf/proto/deprecated.go +0 -113
  37. data/vendor/github.com/golang/protobuf/proto/discard.go +0 -58
  38. data/vendor/github.com/golang/protobuf/proto/extensions.go +0 -356
  39. data/vendor/github.com/golang/protobuf/proto/properties.go +0 -306
  40. data/vendor/github.com/golang/protobuf/proto/proto.go +0 -167
  41. data/vendor/github.com/golang/protobuf/proto/registry.go +0 -317
  42. data/vendor/github.com/golang/protobuf/proto/text_decode.go +0 -801
  43. data/vendor/github.com/golang/protobuf/proto/text_encode.go +0 -560
  44. data/vendor/github.com/golang/protobuf/proto/wire.go +0 -78
  45. data/vendor/github.com/golang/protobuf/proto/wrappers.go +0 -34
  46. data/vendor/github.com/gorilla/mux/AUTHORS +0 -8
  47. data/vendor/github.com/gorilla/mux/LICENSE +0 -27
  48. data/vendor/github.com/gorilla/mux/README.md +0 -805
  49. data/vendor/github.com/gorilla/mux/doc.go +0 -306
  50. data/vendor/github.com/gorilla/mux/go.mod +0 -3
  51. data/vendor/github.com/gorilla/mux/middleware.go +0 -74
  52. data/vendor/github.com/gorilla/mux/mux.go +0 -606
  53. data/vendor/github.com/gorilla/mux/regexp.go +0 -388
  54. data/vendor/github.com/gorilla/mux/route.go +0 -736
  55. data/vendor/github.com/gorilla/mux/test_helpers.go +0 -19
  56. data/vendor/github.com/hashicorp/go-cleanhttp/LICENSE +0 -363
  57. data/vendor/github.com/hashicorp/go-cleanhttp/README.md +0 -30
  58. data/vendor/github.com/hashicorp/go-cleanhttp/cleanhttp.go +0 -58
  59. data/vendor/github.com/hashicorp/go-cleanhttp/doc.go +0 -20
  60. data/vendor/github.com/hashicorp/go-cleanhttp/go.mod +0 -3
  61. data/vendor/github.com/hashicorp/go-cleanhttp/handlers.go +0 -48
  62. data/vendor/github.com/mitchellh/go-homedir/LICENSE +0 -21
  63. data/vendor/github.com/mitchellh/go-homedir/README.md +0 -14
  64. data/vendor/github.com/mitchellh/go-homedir/go.mod +0 -1
  65. data/vendor/github.com/mitchellh/go-homedir/homedir.go +0 -167
  66. data/vendor/github.com/pkg/errors/.gitignore +0 -24
  67. data/vendor/github.com/pkg/errors/.travis.yml +0 -10
  68. data/vendor/github.com/pkg/errors/LICENSE +0 -23
  69. data/vendor/github.com/pkg/errors/Makefile +0 -44
  70. data/vendor/github.com/pkg/errors/README.md +0 -59
  71. data/vendor/github.com/pkg/errors/appveyor.yml +0 -32
  72. data/vendor/github.com/pkg/errors/errors.go +0 -288
  73. data/vendor/github.com/pkg/errors/go113.go +0 -38
  74. data/vendor/github.com/pkg/errors/stack.go +0 -177
  75. data/vendor/github.com/planetscale/planetscale-go/LICENSE +0 -202
  76. data/vendor/github.com/planetscale/planetscale-go/planetscale/audit_logs.go +0 -136
  77. data/vendor/github.com/planetscale/planetscale-go/planetscale/backups.go +0 -139
  78. data/vendor/github.com/planetscale/planetscale-go/planetscale/branches.go +0 -252
  79. data/vendor/github.com/planetscale/planetscale-go/planetscale/certs.go +0 -166
  80. data/vendor/github.com/planetscale/planetscale-go/planetscale/client.go +0 -312
  81. data/vendor/github.com/planetscale/planetscale-go/planetscale/databases.go +0 -133
  82. data/vendor/github.com/planetscale/planetscale-go/planetscale/deploy_requests.go +0 -368
  83. data/vendor/github.com/planetscale/planetscale-go/planetscale/organizations.go +0 -103
  84. data/vendor/github.com/planetscale/planetscale-go/planetscale/regions.go +0 -52
  85. data/vendor/github.com/planetscale/planetscale-go/planetscale/service_tokens.go +0 -163
  86. data/vendor/github.com/planetscale/sql-proxy/LICENSE +0 -202
  87. data/vendor/github.com/planetscale/sql-proxy/proxy/client.go +0 -476
  88. data/vendor/github.com/planetscale/sql-proxy/proxy/tls_cache.go +0 -73
  89. data/vendor/go.uber.org/atomic/.codecov.yml +0 -19
  90. data/vendor/go.uber.org/atomic/.gitignore +0 -12
  91. data/vendor/go.uber.org/atomic/.travis.yml +0 -27
  92. data/vendor/go.uber.org/atomic/CHANGELOG.md +0 -76
  93. data/vendor/go.uber.org/atomic/LICENSE.txt +0 -19
  94. data/vendor/go.uber.org/atomic/Makefile +0 -78
  95. data/vendor/go.uber.org/atomic/README.md +0 -63
  96. data/vendor/go.uber.org/atomic/bool.go +0 -81
  97. data/vendor/go.uber.org/atomic/bool_ext.go +0 -53
  98. data/vendor/go.uber.org/atomic/doc.go +0 -23
  99. data/vendor/go.uber.org/atomic/duration.go +0 -82
  100. data/vendor/go.uber.org/atomic/duration_ext.go +0 -40
  101. data/vendor/go.uber.org/atomic/error.go +0 -51
  102. data/vendor/go.uber.org/atomic/error_ext.go +0 -39
  103. data/vendor/go.uber.org/atomic/float64.go +0 -76
  104. data/vendor/go.uber.org/atomic/float64_ext.go +0 -47
  105. data/vendor/go.uber.org/atomic/gen.go +0 -26
  106. data/vendor/go.uber.org/atomic/go.mod +0 -8
  107. data/vendor/go.uber.org/atomic/go.sum +0 -9
  108. data/vendor/go.uber.org/atomic/int32.go +0 -102
  109. data/vendor/go.uber.org/atomic/int64.go +0 -102
  110. data/vendor/go.uber.org/atomic/nocmp.go +0 -35
  111. data/vendor/go.uber.org/atomic/string.go +0 -54
  112. data/vendor/go.uber.org/atomic/string_ext.go +0 -43
  113. data/vendor/go.uber.org/atomic/uint32.go +0 -102
  114. data/vendor/go.uber.org/atomic/uint64.go +0 -102
  115. data/vendor/go.uber.org/atomic/value.go +0 -31
  116. data/vendor/go.uber.org/multierr/.codecov.yml +0 -15
  117. data/vendor/go.uber.org/multierr/.gitignore +0 -4
  118. data/vendor/go.uber.org/multierr/.travis.yml +0 -23
  119. data/vendor/go.uber.org/multierr/CHANGELOG.md +0 -60
  120. data/vendor/go.uber.org/multierr/LICENSE.txt +0 -19
  121. data/vendor/go.uber.org/multierr/Makefile +0 -42
  122. data/vendor/go.uber.org/multierr/README.md +0 -23
  123. data/vendor/go.uber.org/multierr/error.go +0 -449
  124. data/vendor/go.uber.org/multierr/glide.yaml +0 -8
  125. data/vendor/go.uber.org/multierr/go.mod +0 -8
  126. data/vendor/go.uber.org/multierr/go.sum +0 -11
  127. data/vendor/go.uber.org/multierr/go113.go +0 -52
  128. data/vendor/go.uber.org/zap/.codecov.yml +0 -17
  129. data/vendor/go.uber.org/zap/.gitignore +0 -32
  130. data/vendor/go.uber.org/zap/.readme.tmpl +0 -109
  131. data/vendor/go.uber.org/zap/CHANGELOG.md +0 -492
  132. data/vendor/go.uber.org/zap/CODE_OF_CONDUCT.md +0 -75
  133. data/vendor/go.uber.org/zap/CONTRIBUTING.md +0 -75
  134. data/vendor/go.uber.org/zap/FAQ.md +0 -164
  135. data/vendor/go.uber.org/zap/LICENSE.txt +0 -19
  136. data/vendor/go.uber.org/zap/Makefile +0 -73
  137. data/vendor/go.uber.org/zap/README.md +0 -134
  138. data/vendor/go.uber.org/zap/array.go +0 -320
  139. data/vendor/go.uber.org/zap/buffer/buffer.go +0 -141
  140. data/vendor/go.uber.org/zap/buffer/pool.go +0 -49
  141. data/vendor/go.uber.org/zap/checklicense.sh +0 -17
  142. data/vendor/go.uber.org/zap/config.go +0 -264
  143. data/vendor/go.uber.org/zap/doc.go +0 -113
  144. data/vendor/go.uber.org/zap/encoder.go +0 -79
  145. data/vendor/go.uber.org/zap/error.go +0 -80
  146. data/vendor/go.uber.org/zap/field.go +0 -549
  147. data/vendor/go.uber.org/zap/flag.go +0 -39
  148. data/vendor/go.uber.org/zap/glide.yaml +0 -34
  149. data/vendor/go.uber.org/zap/global.go +0 -168
  150. data/vendor/go.uber.org/zap/global_go112.go +0 -26
  151. data/vendor/go.uber.org/zap/global_prego112.go +0 -26
  152. data/vendor/go.uber.org/zap/go.mod +0 -14
  153. data/vendor/go.uber.org/zap/go.sum +0 -54
  154. data/vendor/go.uber.org/zap/http_handler.go +0 -132
  155. data/vendor/go.uber.org/zap/internal/bufferpool/bufferpool.go +0 -31
  156. data/vendor/go.uber.org/zap/internal/color/color.go +0 -44
  157. data/vendor/go.uber.org/zap/internal/exit/exit.go +0 -64
  158. data/vendor/go.uber.org/zap/level.go +0 -132
  159. data/vendor/go.uber.org/zap/logger.go +0 -348
  160. data/vendor/go.uber.org/zap/options.go +0 -148
  161. data/vendor/go.uber.org/zap/sink.go +0 -161
  162. data/vendor/go.uber.org/zap/stacktrace.go +0 -85
  163. data/vendor/go.uber.org/zap/sugar.go +0 -315
  164. data/vendor/go.uber.org/zap/time.go +0 -27
  165. data/vendor/go.uber.org/zap/writer.go +0 -99
  166. data/vendor/go.uber.org/zap/zapcore/buffered_write_syncer.go +0 -188
  167. data/vendor/go.uber.org/zap/zapcore/clock.go +0 -50
  168. data/vendor/go.uber.org/zap/zapcore/console_encoder.go +0 -161
  169. data/vendor/go.uber.org/zap/zapcore/core.go +0 -113
  170. data/vendor/go.uber.org/zap/zapcore/doc.go +0 -24
  171. data/vendor/go.uber.org/zap/zapcore/encoder.go +0 -443
  172. data/vendor/go.uber.org/zap/zapcore/entry.go +0 -264
  173. data/vendor/go.uber.org/zap/zapcore/error.go +0 -132
  174. data/vendor/go.uber.org/zap/zapcore/field.go +0 -233
  175. data/vendor/go.uber.org/zap/zapcore/hook.go +0 -68
  176. data/vendor/go.uber.org/zap/zapcore/increase_level.go +0 -66
  177. data/vendor/go.uber.org/zap/zapcore/json_encoder.go +0 -534
  178. data/vendor/go.uber.org/zap/zapcore/level.go +0 -175
  179. data/vendor/go.uber.org/zap/zapcore/level_strings.go +0 -46
  180. data/vendor/go.uber.org/zap/zapcore/marshaler.go +0 -61
  181. data/vendor/go.uber.org/zap/zapcore/memory_encoder.go +0 -179
  182. data/vendor/go.uber.org/zap/zapcore/sampler.go +0 -208
  183. data/vendor/go.uber.org/zap/zapcore/tee.go +0 -81
  184. data/vendor/go.uber.org/zap/zapcore/write_syncer.go +0 -122
  185. data/vendor/golang.org/x/net/AUTHORS +0 -3
  186. data/vendor/golang.org/x/net/CONTRIBUTORS +0 -3
  187. data/vendor/golang.org/x/net/LICENSE +0 -27
  188. data/vendor/golang.org/x/net/PATENTS +0 -22
  189. data/vendor/golang.org/x/net/context/context.go +0 -56
  190. data/vendor/golang.org/x/net/context/ctxhttp/ctxhttp.go +0 -71
  191. data/vendor/golang.org/x/net/context/go17.go +0 -73
  192. data/vendor/golang.org/x/net/context/go19.go +0 -21
  193. data/vendor/golang.org/x/net/context/pre_go17.go +0 -301
  194. data/vendor/golang.org/x/net/context/pre_go19.go +0 -110
  195. data/vendor/golang.org/x/oauth2/.travis.yml +0 -13
  196. data/vendor/golang.org/x/oauth2/AUTHORS +0 -3
  197. data/vendor/golang.org/x/oauth2/CONTRIBUTING.md +0 -26
  198. data/vendor/golang.org/x/oauth2/CONTRIBUTORS +0 -3
  199. data/vendor/golang.org/x/oauth2/LICENSE +0 -27
  200. data/vendor/golang.org/x/oauth2/README.md +0 -36
  201. data/vendor/golang.org/x/oauth2/go.mod +0 -9
  202. data/vendor/golang.org/x/oauth2/go.sum +0 -361
  203. data/vendor/golang.org/x/oauth2/internal/client_appengine.go +0 -14
  204. data/vendor/golang.org/x/oauth2/internal/doc.go +0 -6
  205. data/vendor/golang.org/x/oauth2/internal/oauth2.go +0 -37
  206. data/vendor/golang.org/x/oauth2/internal/token.go +0 -294
  207. data/vendor/golang.org/x/oauth2/internal/transport.go +0 -33
  208. data/vendor/golang.org/x/oauth2/oauth2.go +0 -381
  209. data/vendor/golang.org/x/oauth2/token.go +0 -178
  210. data/vendor/golang.org/x/oauth2/transport.go +0 -89
  211. data/vendor/google.golang.org/appengine/LICENSE +0 -202
  212. data/vendor/google.golang.org/appengine/internal/api.go +0 -678
  213. data/vendor/google.golang.org/appengine/internal/api_classic.go +0 -169
  214. data/vendor/google.golang.org/appengine/internal/api_common.go +0 -123
  215. data/vendor/google.golang.org/appengine/internal/app_id.go +0 -28
  216. data/vendor/google.golang.org/appengine/internal/base/api_base.pb.go +0 -308
  217. data/vendor/google.golang.org/appengine/internal/base/api_base.proto +0 -33
  218. data/vendor/google.golang.org/appengine/internal/datastore/datastore_v3.pb.go +0 -4367
  219. data/vendor/google.golang.org/appengine/internal/datastore/datastore_v3.proto +0 -551
  220. data/vendor/google.golang.org/appengine/internal/identity.go +0 -55
  221. data/vendor/google.golang.org/appengine/internal/identity_classic.go +0 -61
  222. data/vendor/google.golang.org/appengine/internal/identity_flex.go +0 -11
  223. data/vendor/google.golang.org/appengine/internal/identity_vm.go +0 -134
  224. data/vendor/google.golang.org/appengine/internal/internal.go +0 -110
  225. data/vendor/google.golang.org/appengine/internal/log/log_service.pb.go +0 -1313
  226. data/vendor/google.golang.org/appengine/internal/log/log_service.proto +0 -150
  227. data/vendor/google.golang.org/appengine/internal/main.go +0 -16
  228. data/vendor/google.golang.org/appengine/internal/main_common.go +0 -7
  229. data/vendor/google.golang.org/appengine/internal/main_vm.go +0 -69
  230. data/vendor/google.golang.org/appengine/internal/metadata.go +0 -60
  231. data/vendor/google.golang.org/appengine/internal/net.go +0 -56
  232. data/vendor/google.golang.org/appengine/internal/regen.sh +0 -40
  233. data/vendor/google.golang.org/appengine/internal/remote_api/remote_api.pb.go +0 -361
  234. data/vendor/google.golang.org/appengine/internal/remote_api/remote_api.proto +0 -44
  235. data/vendor/google.golang.org/appengine/internal/transaction.go +0 -115
  236. data/vendor/google.golang.org/appengine/internal/urlfetch/urlfetch_service.pb.go +0 -527
  237. data/vendor/google.golang.org/appengine/internal/urlfetch/urlfetch_service.proto +0 -64
  238. data/vendor/google.golang.org/appengine/urlfetch/urlfetch.go +0 -210
  239. data/vendor/google.golang.org/protobuf/AUTHORS +0 -3
  240. data/vendor/google.golang.org/protobuf/CONTRIBUTORS +0 -3
  241. data/vendor/google.golang.org/protobuf/LICENSE +0 -27
  242. data/vendor/google.golang.org/protobuf/PATENTS +0 -22
  243. data/vendor/google.golang.org/protobuf/encoding/prototext/decode.go +0 -773
  244. data/vendor/google.golang.org/protobuf/encoding/prototext/doc.go +0 -7
  245. data/vendor/google.golang.org/protobuf/encoding/prototext/encode.go +0 -371
  246. data/vendor/google.golang.org/protobuf/encoding/protowire/wire.go +0 -538
  247. data/vendor/google.golang.org/protobuf/internal/descfmt/stringer.go +0 -318
  248. data/vendor/google.golang.org/protobuf/internal/descopts/options.go +0 -29
  249. data/vendor/google.golang.org/protobuf/internal/detrand/rand.go +0 -69
  250. data/vendor/google.golang.org/protobuf/internal/encoding/defval/default.go +0 -213
  251. data/vendor/google.golang.org/protobuf/internal/encoding/messageset/messageset.go +0 -241
  252. data/vendor/google.golang.org/protobuf/internal/encoding/tag/tag.go +0 -207
  253. data/vendor/google.golang.org/protobuf/internal/encoding/text/decode.go +0 -665
  254. data/vendor/google.golang.org/protobuf/internal/encoding/text/decode_number.go +0 -190
  255. data/vendor/google.golang.org/protobuf/internal/encoding/text/decode_string.go +0 -161
  256. data/vendor/google.golang.org/protobuf/internal/encoding/text/decode_token.go +0 -373
  257. data/vendor/google.golang.org/protobuf/internal/encoding/text/doc.go +0 -29
  258. data/vendor/google.golang.org/protobuf/internal/encoding/text/encode.go +0 -265
  259. data/vendor/google.golang.org/protobuf/internal/errors/errors.go +0 -89
  260. data/vendor/google.golang.org/protobuf/internal/errors/is_go112.go +0 -39
  261. data/vendor/google.golang.org/protobuf/internal/errors/is_go113.go +0 -12
  262. data/vendor/google.golang.org/protobuf/internal/filedesc/build.go +0 -158
  263. data/vendor/google.golang.org/protobuf/internal/filedesc/desc.go +0 -631
  264. data/vendor/google.golang.org/protobuf/internal/filedesc/desc_init.go +0 -471
  265. data/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go +0 -704
  266. data/vendor/google.golang.org/protobuf/internal/filedesc/desc_list.go +0 -450
  267. data/vendor/google.golang.org/protobuf/internal/filedesc/desc_list_gen.go +0 -356
  268. data/vendor/google.golang.org/protobuf/internal/filedesc/placeholder.go +0 -107
  269. data/vendor/google.golang.org/protobuf/internal/filetype/build.go +0 -297
  270. data/vendor/google.golang.org/protobuf/internal/flags/flags.go +0 -24
  271. data/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_disable.go +0 -9
  272. data/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_enable.go +0 -9
  273. data/vendor/google.golang.org/protobuf/internal/genid/any_gen.go +0 -34
  274. data/vendor/google.golang.org/protobuf/internal/genid/api_gen.go +0 -106
  275. data/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go +0 -829
  276. data/vendor/google.golang.org/protobuf/internal/genid/doc.go +0 -11
  277. data/vendor/google.golang.org/protobuf/internal/genid/duration_gen.go +0 -34
  278. data/vendor/google.golang.org/protobuf/internal/genid/empty_gen.go +0 -19
  279. data/vendor/google.golang.org/protobuf/internal/genid/field_mask_gen.go +0 -31
  280. data/vendor/google.golang.org/protobuf/internal/genid/goname.go +0 -25
  281. data/vendor/google.golang.org/protobuf/internal/genid/map_entry.go +0 -16
  282. data/vendor/google.golang.org/protobuf/internal/genid/source_context_gen.go +0 -31
  283. data/vendor/google.golang.org/protobuf/internal/genid/struct_gen.go +0 -116
  284. data/vendor/google.golang.org/protobuf/internal/genid/timestamp_gen.go +0 -34
  285. data/vendor/google.golang.org/protobuf/internal/genid/type_gen.go +0 -184
  286. data/vendor/google.golang.org/protobuf/internal/genid/wrappers.go +0 -13
  287. data/vendor/google.golang.org/protobuf/internal/genid/wrappers_gen.go +0 -175
  288. data/vendor/google.golang.org/protobuf/internal/impl/api_export.go +0 -177
  289. data/vendor/google.golang.org/protobuf/internal/impl/checkinit.go +0 -141
  290. data/vendor/google.golang.org/protobuf/internal/impl/codec_extension.go +0 -223
  291. data/vendor/google.golang.org/protobuf/internal/impl/codec_field.go +0 -830
  292. data/vendor/google.golang.org/protobuf/internal/impl/codec_gen.go +0 -5637
  293. data/vendor/google.golang.org/protobuf/internal/impl/codec_map.go +0 -388
  294. data/vendor/google.golang.org/protobuf/internal/impl/codec_map_go111.go +0 -37
  295. data/vendor/google.golang.org/protobuf/internal/impl/codec_map_go112.go +0 -11
  296. data/vendor/google.golang.org/protobuf/internal/impl/codec_message.go +0 -217
  297. data/vendor/google.golang.org/protobuf/internal/impl/codec_messageset.go +0 -123
  298. data/vendor/google.golang.org/protobuf/internal/impl/codec_reflect.go +0 -209
  299. data/vendor/google.golang.org/protobuf/internal/impl/codec_tables.go +0 -557
  300. data/vendor/google.golang.org/protobuf/internal/impl/codec_unsafe.go +0 -17
  301. data/vendor/google.golang.org/protobuf/internal/impl/convert.go +0 -496
  302. data/vendor/google.golang.org/protobuf/internal/impl/convert_list.go +0 -141
  303. data/vendor/google.golang.org/protobuf/internal/impl/convert_map.go +0 -121
  304. data/vendor/google.golang.org/protobuf/internal/impl/decode.go +0 -276
  305. data/vendor/google.golang.org/protobuf/internal/impl/encode.go +0 -201
  306. data/vendor/google.golang.org/protobuf/internal/impl/enum.go +0 -21
  307. data/vendor/google.golang.org/protobuf/internal/impl/extension.go +0 -156
  308. data/vendor/google.golang.org/protobuf/internal/impl/legacy_enum.go +0 -219
  309. data/vendor/google.golang.org/protobuf/internal/impl/legacy_export.go +0 -92
  310. data/vendor/google.golang.org/protobuf/internal/impl/legacy_extension.go +0 -176
  311. data/vendor/google.golang.org/protobuf/internal/impl/legacy_file.go +0 -81
  312. data/vendor/google.golang.org/protobuf/internal/impl/legacy_message.go +0 -558
  313. data/vendor/google.golang.org/protobuf/internal/impl/merge.go +0 -176
  314. data/vendor/google.golang.org/protobuf/internal/impl/merge_gen.go +0 -209
  315. data/vendor/google.golang.org/protobuf/internal/impl/message.go +0 -276
  316. data/vendor/google.golang.org/protobuf/internal/impl/message_reflect.go +0 -465
  317. data/vendor/google.golang.org/protobuf/internal/impl/message_reflect_field.go +0 -543
  318. data/vendor/google.golang.org/protobuf/internal/impl/message_reflect_gen.go +0 -249
  319. data/vendor/google.golang.org/protobuf/internal/impl/pointer_reflect.go +0 -178
  320. data/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go +0 -174
  321. data/vendor/google.golang.org/protobuf/internal/impl/validate.go +0 -576
  322. data/vendor/google.golang.org/protobuf/internal/impl/weak.go +0 -74
  323. data/vendor/google.golang.org/protobuf/internal/order/order.go +0 -89
  324. data/vendor/google.golang.org/protobuf/internal/order/range.go +0 -115
  325. data/vendor/google.golang.org/protobuf/internal/pragma/pragma.go +0 -29
  326. data/vendor/google.golang.org/protobuf/internal/set/ints.go +0 -58
  327. data/vendor/google.golang.org/protobuf/internal/strs/strings.go +0 -196
  328. data/vendor/google.golang.org/protobuf/internal/strs/strings_pure.go +0 -27
  329. data/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe.go +0 -94
  330. data/vendor/google.golang.org/protobuf/internal/version/version.go +0 -79
  331. data/vendor/google.golang.org/protobuf/proto/checkinit.go +0 -71
  332. data/vendor/google.golang.org/protobuf/proto/decode.go +0 -278
  333. data/vendor/google.golang.org/protobuf/proto/decode_gen.go +0 -603
  334. data/vendor/google.golang.org/protobuf/proto/doc.go +0 -94
  335. data/vendor/google.golang.org/protobuf/proto/encode.go +0 -319
  336. data/vendor/google.golang.org/protobuf/proto/encode_gen.go +0 -97
  337. data/vendor/google.golang.org/protobuf/proto/equal.go +0 -167
  338. data/vendor/google.golang.org/protobuf/proto/extension.go +0 -92
  339. data/vendor/google.golang.org/protobuf/proto/merge.go +0 -139
  340. data/vendor/google.golang.org/protobuf/proto/messageset.go +0 -93
  341. data/vendor/google.golang.org/protobuf/proto/proto.go +0 -43
  342. data/vendor/google.golang.org/protobuf/proto/proto_methods.go +0 -19
  343. data/vendor/google.golang.org/protobuf/proto/proto_reflect.go +0 -19
  344. data/vendor/google.golang.org/protobuf/proto/reset.go +0 -43
  345. data/vendor/google.golang.org/protobuf/proto/size.go +0 -97
  346. data/vendor/google.golang.org/protobuf/proto/size_gen.go +0 -55
  347. data/vendor/google.golang.org/protobuf/proto/wrappers.go +0 -29
  348. data/vendor/google.golang.org/protobuf/reflect/protodesc/desc.go +0 -276
  349. data/vendor/google.golang.org/protobuf/reflect/protodesc/desc_init.go +0 -248
  350. data/vendor/google.golang.org/protobuf/reflect/protodesc/desc_resolve.go +0 -286
  351. data/vendor/google.golang.org/protobuf/reflect/protodesc/desc_validate.go +0 -374
  352. data/vendor/google.golang.org/protobuf/reflect/protodesc/proto.go +0 -252
  353. data/vendor/google.golang.org/protobuf/reflect/protoreflect/methods.go +0 -77
  354. data/vendor/google.golang.org/protobuf/reflect/protoreflect/proto.go +0 -504
  355. data/vendor/google.golang.org/protobuf/reflect/protoreflect/source.go +0 -128
  356. data/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go +0 -461
  357. data/vendor/google.golang.org/protobuf/reflect/protoreflect/type.go +0 -665
  358. data/vendor/google.golang.org/protobuf/reflect/protoreflect/value.go +0 -285
  359. data/vendor/google.golang.org/protobuf/reflect/protoreflect/value_pure.go +0 -59
  360. data/vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go +0 -411
  361. data/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe.go +0 -98
  362. data/vendor/google.golang.org/protobuf/reflect/protoregistry/registry.go +0 -869
  363. data/vendor/google.golang.org/protobuf/runtime/protoiface/legacy.go +0 -15
  364. data/vendor/google.golang.org/protobuf/runtime/protoiface/methods.go +0 -167
  365. data/vendor/google.golang.org/protobuf/runtime/protoimpl/impl.go +0 -44
  366. data/vendor/google.golang.org/protobuf/runtime/protoimpl/version.go +0 -56
  367. data/vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go +0 -4039
  368. data/vendor/modules.txt +0 -79
@@ -1,606 +0,0 @@
1
- // Copyright 2012 The Gorilla Authors. All rights reserved.
2
- // Use of this source code is governed by a BSD-style
3
- // license that can be found in the LICENSE file.
4
-
5
- package mux
6
-
7
- import (
8
- "context"
9
- "errors"
10
- "fmt"
11
- "net/http"
12
- "path"
13
- "regexp"
14
- )
15
-
16
- var (
17
- // ErrMethodMismatch is returned when the method in the request does not match
18
- // the method defined against the route.
19
- ErrMethodMismatch = errors.New("method is not allowed")
20
- // ErrNotFound is returned when no route match is found.
21
- ErrNotFound = errors.New("no matching route was found")
22
- )
23
-
24
- // NewRouter returns a new router instance.
25
- func NewRouter() *Router {
26
- return &Router{namedRoutes: make(map[string]*Route)}
27
- }
28
-
29
- // Router registers routes to be matched and dispatches a handler.
30
- //
31
- // It implements the http.Handler interface, so it can be registered to serve
32
- // requests:
33
- //
34
- // var router = mux.NewRouter()
35
- //
36
- // func main() {
37
- // http.Handle("/", router)
38
- // }
39
- //
40
- // Or, for Google App Engine, register it in a init() function:
41
- //
42
- // func init() {
43
- // http.Handle("/", router)
44
- // }
45
- //
46
- // This will send all incoming requests to the router.
47
- type Router struct {
48
- // Configurable Handler to be used when no route matches.
49
- NotFoundHandler http.Handler
50
-
51
- // Configurable Handler to be used when the request method does not match the route.
52
- MethodNotAllowedHandler http.Handler
53
-
54
- // Routes to be matched, in order.
55
- routes []*Route
56
-
57
- // Routes by name for URL building.
58
- namedRoutes map[string]*Route
59
-
60
- // If true, do not clear the request context after handling the request.
61
- //
62
- // Deprecated: No effect, since the context is stored on the request itself.
63
- KeepContext bool
64
-
65
- // Slice of middlewares to be called after a match is found
66
- middlewares []middleware
67
-
68
- // configuration shared with `Route`
69
- routeConf
70
- }
71
-
72
- // common route configuration shared between `Router` and `Route`
73
- type routeConf struct {
74
- // If true, "/path/foo%2Fbar/to" will match the path "/path/{var}/to"
75
- useEncodedPath bool
76
-
77
- // If true, when the path pattern is "/path/", accessing "/path" will
78
- // redirect to the former and vice versa.
79
- strictSlash bool
80
-
81
- // If true, when the path pattern is "/path//to", accessing "/path//to"
82
- // will not redirect
83
- skipClean bool
84
-
85
- // Manager for the variables from host and path.
86
- regexp routeRegexpGroup
87
-
88
- // List of matchers.
89
- matchers []matcher
90
-
91
- // The scheme used when building URLs.
92
- buildScheme string
93
-
94
- buildVarsFunc BuildVarsFunc
95
- }
96
-
97
- // returns an effective deep copy of `routeConf`
98
- func copyRouteConf(r routeConf) routeConf {
99
- c := r
100
-
101
- if r.regexp.path != nil {
102
- c.regexp.path = copyRouteRegexp(r.regexp.path)
103
- }
104
-
105
- if r.regexp.host != nil {
106
- c.regexp.host = copyRouteRegexp(r.regexp.host)
107
- }
108
-
109
- c.regexp.queries = make([]*routeRegexp, 0, len(r.regexp.queries))
110
- for _, q := range r.regexp.queries {
111
- c.regexp.queries = append(c.regexp.queries, copyRouteRegexp(q))
112
- }
113
-
114
- c.matchers = make([]matcher, len(r.matchers))
115
- copy(c.matchers, r.matchers)
116
-
117
- return c
118
- }
119
-
120
- func copyRouteRegexp(r *routeRegexp) *routeRegexp {
121
- c := *r
122
- return &c
123
- }
124
-
125
- // Match attempts to match the given request against the router's registered routes.
126
- //
127
- // If the request matches a route of this router or one of its subrouters the Route,
128
- // Handler, and Vars fields of the the match argument are filled and this function
129
- // returns true.
130
- //
131
- // If the request does not match any of this router's or its subrouters' routes
132
- // then this function returns false. If available, a reason for the match failure
133
- // will be filled in the match argument's MatchErr field. If the match failure type
134
- // (eg: not found) has a registered handler, the handler is assigned to the Handler
135
- // field of the match argument.
136
- func (r *Router) Match(req *http.Request, match *RouteMatch) bool {
137
- for _, route := range r.routes {
138
- if route.Match(req, match) {
139
- // Build middleware chain if no error was found
140
- if match.MatchErr == nil {
141
- for i := len(r.middlewares) - 1; i >= 0; i-- {
142
- match.Handler = r.middlewares[i].Middleware(match.Handler)
143
- }
144
- }
145
- return true
146
- }
147
- }
148
-
149
- if match.MatchErr == ErrMethodMismatch {
150
- if r.MethodNotAllowedHandler != nil {
151
- match.Handler = r.MethodNotAllowedHandler
152
- return true
153
- }
154
-
155
- return false
156
- }
157
-
158
- // Closest match for a router (includes sub-routers)
159
- if r.NotFoundHandler != nil {
160
- match.Handler = r.NotFoundHandler
161
- match.MatchErr = ErrNotFound
162
- return true
163
- }
164
-
165
- match.MatchErr = ErrNotFound
166
- return false
167
- }
168
-
169
- // ServeHTTP dispatches the handler registered in the matched route.
170
- //
171
- // When there is a match, the route variables can be retrieved calling
172
- // mux.Vars(request).
173
- func (r *Router) ServeHTTP(w http.ResponseWriter, req *http.Request) {
174
- if !r.skipClean {
175
- path := req.URL.Path
176
- if r.useEncodedPath {
177
- path = req.URL.EscapedPath()
178
- }
179
- // Clean path to canonical form and redirect.
180
- if p := cleanPath(path); p != path {
181
-
182
- // Added 3 lines (Philip Schlump) - It was dropping the query string and #whatever from query.
183
- // This matches with fix in go 1.2 r.c. 4 for same problem. Go Issue:
184
- // http://code.google.com/p/go/issues/detail?id=5252
185
- url := *req.URL
186
- url.Path = p
187
- p = url.String()
188
-
189
- w.Header().Set("Location", p)
190
- w.WriteHeader(http.StatusMovedPermanently)
191
- return
192
- }
193
- }
194
- var match RouteMatch
195
- var handler http.Handler
196
- if r.Match(req, &match) {
197
- handler = match.Handler
198
- req = requestWithVars(req, match.Vars)
199
- req = requestWithRoute(req, match.Route)
200
- }
201
-
202
- if handler == nil && match.MatchErr == ErrMethodMismatch {
203
- handler = methodNotAllowedHandler()
204
- }
205
-
206
- if handler == nil {
207
- handler = http.NotFoundHandler()
208
- }
209
-
210
- handler.ServeHTTP(w, req)
211
- }
212
-
213
- // Get returns a route registered with the given name.
214
- func (r *Router) Get(name string) *Route {
215
- return r.namedRoutes[name]
216
- }
217
-
218
- // GetRoute returns a route registered with the given name. This method
219
- // was renamed to Get() and remains here for backwards compatibility.
220
- func (r *Router) GetRoute(name string) *Route {
221
- return r.namedRoutes[name]
222
- }
223
-
224
- // StrictSlash defines the trailing slash behavior for new routes. The initial
225
- // value is false.
226
- //
227
- // When true, if the route path is "/path/", accessing "/path" will perform a redirect
228
- // to the former and vice versa. In other words, your application will always
229
- // see the path as specified in the route.
230
- //
231
- // When false, if the route path is "/path", accessing "/path/" will not match
232
- // this route and vice versa.
233
- //
234
- // The re-direct is a HTTP 301 (Moved Permanently). Note that when this is set for
235
- // routes with a non-idempotent method (e.g. POST, PUT), the subsequent re-directed
236
- // request will be made as a GET by most clients. Use middleware or client settings
237
- // to modify this behaviour as needed.
238
- //
239
- // Special case: when a route sets a path prefix using the PathPrefix() method,
240
- // strict slash is ignored for that route because the redirect behavior can't
241
- // be determined from a prefix alone. However, any subrouters created from that
242
- // route inherit the original StrictSlash setting.
243
- func (r *Router) StrictSlash(value bool) *Router {
244
- r.strictSlash = value
245
- return r
246
- }
247
-
248
- // SkipClean defines the path cleaning behaviour for new routes. The initial
249
- // value is false. Users should be careful about which routes are not cleaned
250
- //
251
- // When true, if the route path is "/path//to", it will remain with the double
252
- // slash. This is helpful if you have a route like: /fetch/http://xkcd.com/534/
253
- //
254
- // When false, the path will be cleaned, so /fetch/http://xkcd.com/534/ will
255
- // become /fetch/http/xkcd.com/534
256
- func (r *Router) SkipClean(value bool) *Router {
257
- r.skipClean = value
258
- return r
259
- }
260
-
261
- // UseEncodedPath tells the router to match the encoded original path
262
- // to the routes.
263
- // For eg. "/path/foo%2Fbar/to" will match the path "/path/{var}/to".
264
- //
265
- // If not called, the router will match the unencoded path to the routes.
266
- // For eg. "/path/foo%2Fbar/to" will match the path "/path/foo/bar/to"
267
- func (r *Router) UseEncodedPath() *Router {
268
- r.useEncodedPath = true
269
- return r
270
- }
271
-
272
- // ----------------------------------------------------------------------------
273
- // Route factories
274
- // ----------------------------------------------------------------------------
275
-
276
- // NewRoute registers an empty route.
277
- func (r *Router) NewRoute() *Route {
278
- // initialize a route with a copy of the parent router's configuration
279
- route := &Route{routeConf: copyRouteConf(r.routeConf), namedRoutes: r.namedRoutes}
280
- r.routes = append(r.routes, route)
281
- return route
282
- }
283
-
284
- // Name registers a new route with a name.
285
- // See Route.Name().
286
- func (r *Router) Name(name string) *Route {
287
- return r.NewRoute().Name(name)
288
- }
289
-
290
- // Handle registers a new route with a matcher for the URL path.
291
- // See Route.Path() and Route.Handler().
292
- func (r *Router) Handle(path string, handler http.Handler) *Route {
293
- return r.NewRoute().Path(path).Handler(handler)
294
- }
295
-
296
- // HandleFunc registers a new route with a matcher for the URL path.
297
- // See Route.Path() and Route.HandlerFunc().
298
- func (r *Router) HandleFunc(path string, f func(http.ResponseWriter,
299
- *http.Request)) *Route {
300
- return r.NewRoute().Path(path).HandlerFunc(f)
301
- }
302
-
303
- // Headers registers a new route with a matcher for request header values.
304
- // See Route.Headers().
305
- func (r *Router) Headers(pairs ...string) *Route {
306
- return r.NewRoute().Headers(pairs...)
307
- }
308
-
309
- // Host registers a new route with a matcher for the URL host.
310
- // See Route.Host().
311
- func (r *Router) Host(tpl string) *Route {
312
- return r.NewRoute().Host(tpl)
313
- }
314
-
315
- // MatcherFunc registers a new route with a custom matcher function.
316
- // See Route.MatcherFunc().
317
- func (r *Router) MatcherFunc(f MatcherFunc) *Route {
318
- return r.NewRoute().MatcherFunc(f)
319
- }
320
-
321
- // Methods registers a new route with a matcher for HTTP methods.
322
- // See Route.Methods().
323
- func (r *Router) Methods(methods ...string) *Route {
324
- return r.NewRoute().Methods(methods...)
325
- }
326
-
327
- // Path registers a new route with a matcher for the URL path.
328
- // See Route.Path().
329
- func (r *Router) Path(tpl string) *Route {
330
- return r.NewRoute().Path(tpl)
331
- }
332
-
333
- // PathPrefix registers a new route with a matcher for the URL path prefix.
334
- // See Route.PathPrefix().
335
- func (r *Router) PathPrefix(tpl string) *Route {
336
- return r.NewRoute().PathPrefix(tpl)
337
- }
338
-
339
- // Queries registers a new route with a matcher for URL query values.
340
- // See Route.Queries().
341
- func (r *Router) Queries(pairs ...string) *Route {
342
- return r.NewRoute().Queries(pairs...)
343
- }
344
-
345
- // Schemes registers a new route with a matcher for URL schemes.
346
- // See Route.Schemes().
347
- func (r *Router) Schemes(schemes ...string) *Route {
348
- return r.NewRoute().Schemes(schemes...)
349
- }
350
-
351
- // BuildVarsFunc registers a new route with a custom function for modifying
352
- // route variables before building a URL.
353
- func (r *Router) BuildVarsFunc(f BuildVarsFunc) *Route {
354
- return r.NewRoute().BuildVarsFunc(f)
355
- }
356
-
357
- // Walk walks the router and all its sub-routers, calling walkFn for each route
358
- // in the tree. The routes are walked in the order they were added. Sub-routers
359
- // are explored depth-first.
360
- func (r *Router) Walk(walkFn WalkFunc) error {
361
- return r.walk(walkFn, []*Route{})
362
- }
363
-
364
- // SkipRouter is used as a return value from WalkFuncs to indicate that the
365
- // router that walk is about to descend down to should be skipped.
366
- var SkipRouter = errors.New("skip this router")
367
-
368
- // WalkFunc is the type of the function called for each route visited by Walk.
369
- // At every invocation, it is given the current route, and the current router,
370
- // and a list of ancestor routes that lead to the current route.
371
- type WalkFunc func(route *Route, router *Router, ancestors []*Route) error
372
-
373
- func (r *Router) walk(walkFn WalkFunc, ancestors []*Route) error {
374
- for _, t := range r.routes {
375
- err := walkFn(t, r, ancestors)
376
- if err == SkipRouter {
377
- continue
378
- }
379
- if err != nil {
380
- return err
381
- }
382
- for _, sr := range t.matchers {
383
- if h, ok := sr.(*Router); ok {
384
- ancestors = append(ancestors, t)
385
- err := h.walk(walkFn, ancestors)
386
- if err != nil {
387
- return err
388
- }
389
- ancestors = ancestors[:len(ancestors)-1]
390
- }
391
- }
392
- if h, ok := t.handler.(*Router); ok {
393
- ancestors = append(ancestors, t)
394
- err := h.walk(walkFn, ancestors)
395
- if err != nil {
396
- return err
397
- }
398
- ancestors = ancestors[:len(ancestors)-1]
399
- }
400
- }
401
- return nil
402
- }
403
-
404
- // ----------------------------------------------------------------------------
405
- // Context
406
- // ----------------------------------------------------------------------------
407
-
408
- // RouteMatch stores information about a matched route.
409
- type RouteMatch struct {
410
- Route *Route
411
- Handler http.Handler
412
- Vars map[string]string
413
-
414
- // MatchErr is set to appropriate matching error
415
- // It is set to ErrMethodMismatch if there is a mismatch in
416
- // the request method and route method
417
- MatchErr error
418
- }
419
-
420
- type contextKey int
421
-
422
- const (
423
- varsKey contextKey = iota
424
- routeKey
425
- )
426
-
427
- // Vars returns the route variables for the current request, if any.
428
- func Vars(r *http.Request) map[string]string {
429
- if rv := r.Context().Value(varsKey); rv != nil {
430
- return rv.(map[string]string)
431
- }
432
- return nil
433
- }
434
-
435
- // CurrentRoute returns the matched route for the current request, if any.
436
- // This only works when called inside the handler of the matched route
437
- // because the matched route is stored in the request context which is cleared
438
- // after the handler returns.
439
- func CurrentRoute(r *http.Request) *Route {
440
- if rv := r.Context().Value(routeKey); rv != nil {
441
- return rv.(*Route)
442
- }
443
- return nil
444
- }
445
-
446
- func requestWithVars(r *http.Request, vars map[string]string) *http.Request {
447
- ctx := context.WithValue(r.Context(), varsKey, vars)
448
- return r.WithContext(ctx)
449
- }
450
-
451
- func requestWithRoute(r *http.Request, route *Route) *http.Request {
452
- ctx := context.WithValue(r.Context(), routeKey, route)
453
- return r.WithContext(ctx)
454
- }
455
-
456
- // ----------------------------------------------------------------------------
457
- // Helpers
458
- // ----------------------------------------------------------------------------
459
-
460
- // cleanPath returns the canonical path for p, eliminating . and .. elements.
461
- // Borrowed from the net/http package.
462
- func cleanPath(p string) string {
463
- if p == "" {
464
- return "/"
465
- }
466
- if p[0] != '/' {
467
- p = "/" + p
468
- }
469
- np := path.Clean(p)
470
- // path.Clean removes trailing slash except for root;
471
- // put the trailing slash back if necessary.
472
- if p[len(p)-1] == '/' && np != "/" {
473
- np += "/"
474
- }
475
-
476
- return np
477
- }
478
-
479
- // uniqueVars returns an error if two slices contain duplicated strings.
480
- func uniqueVars(s1, s2 []string) error {
481
- for _, v1 := range s1 {
482
- for _, v2 := range s2 {
483
- if v1 == v2 {
484
- return fmt.Errorf("mux: duplicated route variable %q", v2)
485
- }
486
- }
487
- }
488
- return nil
489
- }
490
-
491
- // checkPairs returns the count of strings passed in, and an error if
492
- // the count is not an even number.
493
- func checkPairs(pairs ...string) (int, error) {
494
- length := len(pairs)
495
- if length%2 != 0 {
496
- return length, fmt.Errorf(
497
- "mux: number of parameters must be multiple of 2, got %v", pairs)
498
- }
499
- return length, nil
500
- }
501
-
502
- // mapFromPairsToString converts variadic string parameters to a
503
- // string to string map.
504
- func mapFromPairsToString(pairs ...string) (map[string]string, error) {
505
- length, err := checkPairs(pairs...)
506
- if err != nil {
507
- return nil, err
508
- }
509
- m := make(map[string]string, length/2)
510
- for i := 0; i < length; i += 2 {
511
- m[pairs[i]] = pairs[i+1]
512
- }
513
- return m, nil
514
- }
515
-
516
- // mapFromPairsToRegex converts variadic string parameters to a
517
- // string to regex map.
518
- func mapFromPairsToRegex(pairs ...string) (map[string]*regexp.Regexp, error) {
519
- length, err := checkPairs(pairs...)
520
- if err != nil {
521
- return nil, err
522
- }
523
- m := make(map[string]*regexp.Regexp, length/2)
524
- for i := 0; i < length; i += 2 {
525
- regex, err := regexp.Compile(pairs[i+1])
526
- if err != nil {
527
- return nil, err
528
- }
529
- m[pairs[i]] = regex
530
- }
531
- return m, nil
532
- }
533
-
534
- // matchInArray returns true if the given string value is in the array.
535
- func matchInArray(arr []string, value string) bool {
536
- for _, v := range arr {
537
- if v == value {
538
- return true
539
- }
540
- }
541
- return false
542
- }
543
-
544
- // matchMapWithString returns true if the given key/value pairs exist in a given map.
545
- func matchMapWithString(toCheck map[string]string, toMatch map[string][]string, canonicalKey bool) bool {
546
- for k, v := range toCheck {
547
- // Check if key exists.
548
- if canonicalKey {
549
- k = http.CanonicalHeaderKey(k)
550
- }
551
- if values := toMatch[k]; values == nil {
552
- return false
553
- } else if v != "" {
554
- // If value was defined as an empty string we only check that the
555
- // key exists. Otherwise we also check for equality.
556
- valueExists := false
557
- for _, value := range values {
558
- if v == value {
559
- valueExists = true
560
- break
561
- }
562
- }
563
- if !valueExists {
564
- return false
565
- }
566
- }
567
- }
568
- return true
569
- }
570
-
571
- // matchMapWithRegex returns true if the given key/value pairs exist in a given map compiled against
572
- // the given regex
573
- func matchMapWithRegex(toCheck map[string]*regexp.Regexp, toMatch map[string][]string, canonicalKey bool) bool {
574
- for k, v := range toCheck {
575
- // Check if key exists.
576
- if canonicalKey {
577
- k = http.CanonicalHeaderKey(k)
578
- }
579
- if values := toMatch[k]; values == nil {
580
- return false
581
- } else if v != nil {
582
- // If value was defined as an empty string we only check that the
583
- // key exists. Otherwise we also check for equality.
584
- valueExists := false
585
- for _, value := range values {
586
- if v.MatchString(value) {
587
- valueExists = true
588
- break
589
- }
590
- }
591
- if !valueExists {
592
- return false
593
- }
594
- }
595
- }
596
- return true
597
- }
598
-
599
- // methodNotAllowed replies to the request with an HTTP status code 405.
600
- func methodNotAllowed(w http.ResponseWriter, r *http.Request) {
601
- w.WriteHeader(http.StatusMethodNotAllowed)
602
- }
603
-
604
- // methodNotAllowedHandler returns a simple request handler
605
- // that replies to each request with a status code 405.
606
- func methodNotAllowedHandler() http.Handler { return http.HandlerFunc(methodNotAllowed) }