Hacer un popote

12

Strawpolls son geniales, y los usamos en el chat todo el tiempo para obtener opiniones sobre las cosas. Pero son un poco molestos de hacer, ya que necesita un navegador web para hacerlos, y todos saben que accedo a PPCG solo a través de API de SE y curl. Así que quiero que escribas un código que use la API de Strawpoll para hacer una paja con las opciones dadas.

Especificaciones

Tome como entrada una lista en cualquier formato razonable de opciones como cadenas, y un título que también sea una cadena. Luego use la API para hacer una paja con ese título y esas opciones y envíe la URL.

No se deben permitir los múltiplos, se deben hacer controles duplicados y no deben ser necesarios los captchas.

Ejemplo

"My Awesome Poll"
["option 1", "I like pies", "I also like cakes"]

Salida: http://strawpoll.me/7275997

Este es el , por lo que gana el código más corto en bytes .

Maltysen
fuente
2
(Solo para ayudar a todos) TL; DR : haga esto:https://strawpoll.me/api/v2/polls{"title":"This is a test poll.","options":["Option #1","Option #2"],"multi": true}
Leaky Nun
1
" NOTA : debe especificar un encabezado" Tipo de contenido: aplicación / json "en su solicitud".
Leaky Nun
El tipo de API no funciona, o al menos no funciona como lo dicen los documentos
cat
https://strawpoll.me/api/v2/pollssiempre responde con http 400
cat
¿Está obligado a devolver el popote http://? ¿Puedo regresar en su https://lugar?
Value Ink el

Respuestas:

3

Factor, 257 262 bytes

TUPLE: p title options dupcheck ;
[ command-line rest [ first ] [ rest ] bi "normal" p boa >json "https://strawpoll.me/api/v2/polls" <post-request> "application/json" "Content-Type" set-header http-request nip json> id>> 10 base> "http://strawpoll.me/" prepend ]

Espera un nombre como la primera línea de comando arg, luego las opciones después de eso.

Requiere com-auto-use.

Sin golf:

TUPLE: poll
  title options dupcheck ;

: post-json ( post-data url -- response data )
  <post-request>
    "application/json" "Content-Type" set-header
  http-request ;

: strawpoll-main ( -- )
  command-line rest [ first ] [ rest ] bi "normal" poll boa
  >json "https://strawpoll.me/api/v2/polls" post-json nip
  json> id>> 10 base> "http://strawpoll.me/" prepend print ;
gato
fuente
1

Ruby 2.2.4 + HTTParty : 129 bytes

Función anónima; devuelve una cadena con la URL Strawpoll. Recuerde instalar la gema HTTParty antes de ejecutar.

->q,a{require'httparty';s="http%s://strawpoll.me/%s"
s%[p,HTTParty.post(s%[?s,"api/v2/polls"],body:{title:q,options:a},verify:p)["id"]]}

Si la URL se puede devolver en https://lugar de http://126 bytes:

->q,a{require'httparty';s="https://strawpoll.me/%s"
s%HTTParty.post(s%"api/v2/polls",body:{title:q,options:a},verify:p)["id"]}
Tinta de valor
fuente
¿Configuraste el Content-Type: application/jsonencabezado?
gato
Obtuve una respuesta adecuada, así que supongo que HTTParty ya lo hace por mí.
Value Ink
Esta gema no se instalará, lo cual es realmente molesto ya que me gustaría entender por qué sigo recibiendo HTTP 400.
cat
¿Cuál es tu versión de Ruby? Actualicé la mía a la versión que tengo, y la gema dice que necesita 1.9.3+
Value Ink