Giter VIP home page Giter VIP logo

using-the-github-api-in-your-app's Introduction

⚠️ Note: This repository is not maintained. For more recent guides about how to build GitHub Apps, see "About writing code for a GitHub App."

This is an example GitHub App that adds a label to all new issues opened in a repository. You can follow the archived "Using the GitHub API in your app" guide to learn how to build the app code in server.rb.

This project listens for webhook events and uses the Octokit.rb library to make REST API calls. This example project consists of two different servers:

  • template_server.rb (GitHub App template code)
  • server.rb (completed project)

To learn how to set up a template GitHub App, follow the archived "Setting up your development environment" guide.

Install

To run the code, make sure you have Bundler installed; then enter bundle install on the command line.

Set environment variables

  1. Create a copy of the .env-example file called .env.
  2. Add your GitHub App's private key, app ID, and webhook secret to the .env file.

Run the server

  1. Run ruby template_server.rb or ruby server.rb on the command line.
  2. View the default Sinatra app at localhost:3000.

using-the-github-api-in-your-app's People

Contributors

dependabot[bot] avatar francisfuzz avatar kalrish avatar nicholasbishop avatar rachmari avatar skedwards88 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

using-the-github-api-in-your-app's Issues

ping event is not handled in server_template

It appears that a "ping" event can be sent, with a NULL payload, and this causes the authenticate_installation(@payload) to fail:

I don't know enough about ruby or sinatra yet to mend the template myself, so how should payload-less events be handled, and specifically, how should 'ping' be handled?

127.0.0.1 - - [27/Jul/2022:07:07:40 +0000] "POST /event_handler HTTP/1.1" 200 - 0.1179
127.0.0.1 - - [27/Jul/2022:07:07:40 UTC] "POST /event_handler HTTP/1.0" 200 0
- -> /event_handler
D, [2022-07-27T07:08:29.959523 #14800] DEBUG -- : ---- received event ping
2022-07-27 07:08:29 - NoMethodError - undefined method `[]' for nil:NilClass:
        template_server.rb:127:in `authenticate_installation'
        template_server.rb:55:in `block in <class:GHAapp>'
        /usr/share/gems/gems/sinatra-2.0.4/lib/sinatra/base.rb:1635:in `call'
        /usr/share/gems/gems/sinatra-2.0.4/lib/sinatra/base.rb:1635:in `block in compile!'
        /usr/share/gems/gems/sinatra-2.0.4/lib/sinatra/base.rb:1040:in `block in process_route'
        /usr/share/gems/gems/sinatra-2.0.4/lib/sinatra/base.rb:1038:in `catch'
        /usr/share/gems/gems/sinatra-2.0.4/lib/sinatra/base.rb:1038:in `process_route'
        /usr/share/gems/gems/sinatra-2.0.4/lib/sinatra/base.rb:983:in `block in filter!'
        /usr/share/gems/gems/sinatra-2.0.4/lib/sinatra/base.rb:983:in `each'
        /usr/share/gems/gems/sinatra-2.0.4/lib/sinatra/base.rb:983:in `filter!'
        /usr/share/gems/gems/sinatra-2.0.4/lib/sinatra/base.rb:1096:in `block in dispatch!'
        /usr/share/gems/gems/sinatra-2.0.4/lib/sinatra/base.rb:1076:in `block in invoke'
        /usr/share/gems/gems/sinatra-2.0.4/lib/sinatra/base.rb:1076:in `catch'
        /usr/share/gems/gems/sinatra-2.0.4/lib/sinatra/base.rb:1076:in `invoke'
        /usr/share/gems/gems/sinatra-2.0.4/lib/sinatra/base.rb:1094:in `dispatch!'
        /usr/share/gems/gems/sinatra-2.0.4/lib/sinatra/base.rb:924:in `block in call!'
        /usr/share/gems/gems/sinatra-2.0.4/lib/sinatra/base.rb:1076:in `block in invoke'
        /usr/share/gems/gems/sinatra-2.0.4/lib/sinatra/base.rb:1076:in `catch'
        /usr/share/gems/gems/sinatra-2.0.4/lib/sinatra/base.rb:1076:in `invoke'
        /usr/share/gems/gems/sinatra-2.0.4/lib/sinatra/base.rb:924:in `call!'
        /usr/share/gems/gems/sinatra-2.0.4/lib/sinatra/base.rb:913:in `call'
        /usr/share/gems/gems/rack-protection-2.0.4/lib/rack/protection/xss_header.rb:18:in `call'
        /usr/share/gems/gems/rack-protection-2.0.4/lib/rack/protection/path_traversal.rb:16:in `call'
        /usr/share/gems/gems/rack-protection-2.0.4/lib/rack/protection/json_csrf.rb:26:in `call'
        /usr/share/gems/gems/rack-protection-2.0.4/lib/rack/protection/base.rb:50:in `call'
        /usr/share/gems/gems/rack-protection-2.0.4/lib/rack/protection/base.rb:50:in `call'
        /usr/share/gems/gems/rack-protection-2.0.4/lib/rack/protection/frame_options.rb:31:in `call'
        /usr/share/gems/gems/rack-2.0.8/lib/rack/logger.rb:15:in `call'
        /usr/share/gems/gems/rack-2.0.8/lib/rack/common_logger.rb:33:in `call'
        /usr/share/gems/gems/sinatra-2.0.4/lib/sinatra/base.rb:231:in `call'
        /usr/share/gems/gems/sinatra-2.0.4/lib/sinatra/base.rb:224:in `call'
        /usr/share/gems/gems/rack-2.0.8/lib/rack/head.rb:12:in `call'
        /usr/share/gems/gems/rack-2.0.8/lib/rack/method_override.rb:22:in `call'
        /usr/share/gems/gems/sinatra-2.0.4/lib/sinatra/show_exceptions.rb:22:in `call'
        /usr/share/gems/gems/sinatra-2.0.4/lib/sinatra/base.rb:194:in `call'
        /usr/share/gems/gems/sinatra-2.0.4/lib/sinatra/base.rb:1957:in `call'
        /usr/share/gems/gems/sinatra-2.0.4/lib/sinatra/base.rb:1502:in `block in call'
        /usr/share/gems/gems/sinatra-2.0.4/lib/sinatra/base.rb:1729:in `synchronize'
        /usr/share/gems/gems/sinatra-2.0.4/lib/sinatra/base.rb:1502:in `call'
        /usr/share/gems/gems/rack-2.0.8/lib/rack/handler/webrick.rb:86:in `service'
        /usr/share/ruby/webrick/httpserver.rb:140:in `service'
        /usr/share/ruby/webrick/httpserver.rb:96:in `run'
        /usr/share/ruby/webrick/server.rb:307:in `block in start_thread'
127.0.0.1 - - [27/Jul/2022:07:08:29 UTC] "POST /event_handler HTTP/1.0" 500 123349
- -> /event_handler

Discusión

[]< Discusión:Definición
Saltar a navegaciónSaltar a buscar

  • '''[{{fullurl:Talk:Definition/Unstable|action=edit§ion=new}} Iniciar un nuevo tema de discusión]'''

  • [{{fullurl:Talk:Definition/Unstable|oldid=2129}} Comentarios archivados hasta el 20 de junio de 2006]

  • [{{fullurl:Talk:Definition/Unstable|oldid=8702}} Comentarios archivados hasta el 3 de enero de 2010]


TOC

== [[Usuario:TruthWorldOrder]] Ediciones ==

Si sirve de algo, estoy de acuerdo con [[User:Mormegil]] y su [http://freedomdefined.org/index.php?title=Definition%2FUnstable&action=historysubmit&diff=12071&oldid=12070 reciente reversión]. No entiendo qué problema [http://freedomdefined.org/index.php?title=Definition%2FUnstable&action=historysubmit&diff=12044&oldid=12024 the edits in question] están tratando de resolver. Quizá si las explicamos aquí, podamos hablar de ello. —[[Usuario:Benjamin Mako Hill|mak o]][[User_talk:Benjamin Mako Hill|๛]] 19: 41, 26 de septiembre de 2011 (EDT)

== Suprimiendo copyleft ==

En referencia a 171.226.171.169 ''Estoy tratando de eliminar GFDL, GPL, LGPL, CC-BY-SA y otras licencias copyleft'': Si bien puedo entender (y, en parte, estoy de acuerdo con) la opinión de que copyleft las licencias no son “gratuitas”, debo señalar que esto sería un cambio “extremo” de la definición. Tenga en cuenta que esta definición se origina en Wikipedia/Wikimedia Foundation, que utilizan ampliamente las licencias copyleft (todo el texto de Wikipedia tiene licencia CC-BY-SA, para empezar), y que utilizan la definición como [[wikimedia:Resolution:Licensing política|criterio de aceptabilidad]]. Cambiar la definición para excluir el copyleft significaría que todo el contenido de Wikipedia estaría en contra de sus propias reglas.

Simplemente no puedo imaginar que la definición pueda cambiar tan radicalmente (sin convertirse en una definición completamente diferente). Es posible una definición alternativa, pero sería exactamente eso: ''alternativa'', no solo una nueva versión de esto.

--[[Usuario:Mormegil|Mormegil]] 09:48, 17 de octubre de 2011 (EDT)

Yo pensaría que CC-BY-SA y LGPL pueden ser libres, pero GFDL y GPL son "obviamente" no libres. Porque puede incluir obras CC-BY-SA o LGPL como parte de obras distribuidas bajo otras licencias, pero no puede hacer lo mismo con obras GPL y GFDL. Esta es también la razón por la que Wikipedia se ha movido de GFDL a GFDL + CC-BY-SA.
Sección 5 "Combinación de Documentos" de la GFDL:
:Puede combinar el Documento con otros documentos publicados bajo esta Licencia, según los términos definidos en la sección 4 anterior para versiones modificadas, siempre que incluya en la combinación todas las Secciones Invariantes de todos los documentos originales, sin modificar, y enumere todo como Secciones invariables de su trabajo combinado en su aviso de licencia, y que conserve todas sus Exenciones de garantía.

:El trabajo combinado solo necesita contener una copia de esta Licencia, y varias Secciones Invariantes idénticas pueden reemplazarse con una sola copia. Si hay varias Secciones Invariantes con el mismo nombre pero contenido diferente, haga que el título de cada sección sea único agregando al final, entre paréntesis, el nombre del autor o editor original de esa sección, si se conoce, o bien un número único Haga el mismo ajuste a los títulos de las secciones en la lista de Secciones Invariantes en el aviso de licencia de la obra combinada.

:En la combinación, debe combinar todas las secciones tituladas "Historia" en los diversos documentos originales, formando una sección titulada "Historia"; combine igualmente las secciones tituladas "Agradecimientos" y las secciones tituladas "Dedicatorias". Debe eliminar todas las secciones tituladas "Aprobaciones".

[[Especial:Contribuciones/171.226.97.137|171.226.97.137]] 07:56, 31 de octubre de 2011 (EDT)

: Tal vez no entiendo su punto específico, pero AFAICT "no puede" generalmente combinar un trabajo [http://creativecommons.org/licenses/by-sa/3.0/ CC-BY-SA] con un trabajo bajo otra licencia o, más específicamente, cuando combina una obra CC-BY-SA con otra obra, el resultado también debe tener una licencia CC-BY-SA. Ese es el mismo copyleft que en GFDL/GPL. Por otro lado, LGPL te permite combinar una obra LGPL (normalmente, una biblioteca) con otra obra (normalmente, una aplicación), y distribuir el resultado bajo cualquier licencia. No puede hacer eso con CC-BY-SA, de eso se trata la etiqueta "compartir igual" (-SA). Por otro lado, [http://creativecommons.org/licenses/by/3.0/ CC-BY] es una licencia sin copyleft que permitiría eso (pero no es la licencia que usa Wikipedia). --[[Usuario:Mormegil|Mormegil]] 11:52, 1 de noviembre de 2011 (EDT)

: Cierto, GPL podría permitir menos libertades que, por ejemplo, la licencia MIT. Sin embargo, eso no necesariamente convierte a GPL en una licencia no libre. Si define una "licencia libre" como la licencia con la mayor cantidad de libertades, entonces incluso las licencias MIT/BSD/... tendrían que considerarse no libres, entonces solo el dominio público podría considerarse verdaderamente libre. Sin embargo, como ya existe una definición para el dominio público, todo el proyecto de "Definición de Obras Culturales Libres" no tendría sentido entonces. Por supuesto, el problema sigue siendo qué tan amplia le gustaría que fuera la Definición de Obras Culturales Libres. Pero al observar las versiones anteriores, la idea y la intención de la Definición de Obras Culturales Libres parece haber sido cubrir también las licencias copyleft, ya que no dañan la idea principal y el propósito del Contenido Libre. Como [[Usuario: Mormegil|Mormegil]] dijo antes, excluir las licencias copyleft es una definición completamente diferente. ¿Tal vez estás buscando más http://copyfree.org/standard/ en su lugar? --[[Usuario:TX|TX]] 14:36, 1 de noviembre de 2011 (EDT)

== Falta la definición de "Can" ==

"Las Obras Culturales Libres son obras que cualquiera puede usar, estudiar, copiar, cambiar y mejorar..." -> Las tribus en muchos países no tienen computadoras y, por lo tanto, "no pueden" usar la MIT/GPL /... software con licencia que escribí. ¿Entonces mi obra no es una Obra Cultural Libre? (Supongo que tal conclusión no es intencionada)

Tal vez debería añadirse una definición para ciertas palabras, como "puede", "puede", .... De manera similar, se especificaron palabras clave para los estándares de Internet/RFC de IETF (https://tools.ietf.org/html/rfc2119). --[[Usuario:TX|TX]] 13:37, 1 de noviembre de 2011 (EDT)

De manera similar, "debería" se usa mucho cuando algunos podrían argumentar a favor de "debe" (ver http://www.ietf.org/rfc/rfc2119.txt) ([http://lists.ibiblio.org/ pipermail/cc-licenses/2011-December/006433.html idea de]). - [[Usuario:KTucker|K]] 17:48, 12 de diciembre de 2011 (EST)

== Fusionando 4 libertades a 3, agregando explícitamente 'Distribución' ==

Las Obras Culturales Libres son obras que cualquiera puede

  • Utilizar
  • Estudiar
  • Copiar
  • Cambiar y Mejorar

Tengo dos puntos que no me gustan mucho de estas cuatro libertades:

  • 'Estudio' es una forma de 'Uso': es solo una forma más específica de uso, que, de acuerdo, muchos EULA y leyes intentan excluir.
  • Se debe agregar 'Distribución': si solo estuviera observando estas cuatro libertades, incluso algunos contenidos que obtiene a través de un NDA podrían encajar en estos puntos. Puede usar, estudiar e incluso copiar el trabajo para sus propias necesidades, puede cambiarlo y mejorarlo; sin embargo, no se le permitirá compartir ninguna de estas cosas después.

Por lo tanto, mi sugerencia, hacer más una trinidad completa con cada punto de la trinidad siendo una dualidad:

  • Uso y Estudio
  • Copiar y distribuir
  • Cambiar y Mejorar

De modo que el segundo verbo de cada libertad es en realidad una forma más específica del primer verbo de cada libertad. El propósito del segundo verbo es reflejar mejor la verdadera y buena intención de la acción más neutral y genérica definida en el primer verbo de una libertad, y poner algo de énfasis en esta buena intención, la idea detrás de ella.

(No estoy muy seguro de si preferiría la palabra 'distribuir' o 'compartir'. Tal vez un hablante nativo de inglés podría dar una idea de cuáles cree que podrían ser las diferentes connotaciones). --[[Usuario :TX|TX]] 04:25, 4 de noviembre de 2011 (EDT)

:: La definición de conocimiento libre lo expresa de esta manera:

{| clase = "wikitabla" ancho = "50%"
|
Los usuarios del conocimiento libre son libres de

:(0) usar el trabajo para cualquier propósito
:(1) estudiar sus mecanismos, para poder modificarlo y adaptarlo a sus propias necesidades
:(2) hacer y distribuir copias, en su totalidad o en parte
:(3) mejorar y/o ampliar el trabajo y compartir el resultado.
|}

::es decir, "estudiar" se trata de ser capaz de adaptar/modificar: usar (0) y adaptar (1) para "ayudarse a sí mismo", "copiar" (2) se trata de compartir para "ayudar a su prójimo", y la última libertad (3) es aclarar que también puedes compartir tus versiones modificadas (para ''ayudar a la comunidad'').

::Personalmente, prefiero conservar el enlace con la [http://www.gnu.org/philosophy/free-sw.html definición de software libre] al igual que la [http://wikieducator.org/Declaration_on_libre_knowledge definición de conocimiento libre ]. El conocimiento y los recursos culturales no pueden considerarse libres si no se puede acceder a ellos y modificarlos con software libre. La consistencia es importante. - [[Usuario:KTucker|K]] 18:12, 12 de diciembre de 2011 (EST)

==Libre==

Por favor, aclare que esta también sería la definición de "[[Libre|libre cultural obras]]".
:: La definición de conocimiento libre es completamente compatible por lo que puedo decir. Aparece de alguna forma en las siguientes páginas: [http://wikieducator.org/Declaration_on_libre_knowledge Declaración sobre conocimiento libre], [http://en.wikipedia.org/wiki/Libre_Knowledge Conocimiento libre en Wikipedia] y [http:/ /wikieducator.org/Say_Libre Di libre]. es decir, en algún punto clave, diga que libre significa "libre"/"libre como en libertad" - tal vez tan simple como escribir libre/libre al menos una vez cerca del principio. - [[Usuario:KTucker|K]] 18:37, 3 de marzo de 2012 (EST)
:: He creado una versión paralela "libre" - [[Libre|Definición de obras culturales libres]] - pero preferiría que esto no fuera necesario. Discuta este tema aquí mismo o en la [[Discusión:Libre|página de discusión]] de la versión libre - Gracias - [[User:KTucker|K]] 18:39, 5 de marzo de 2012 (EST)
::Creo que el significado gratis de "gratis" es muy confuso para los recién llegados y estoy a favor de reelaborar el texto para usar "libre" u otro adjetivo no ambiguo. [[Usuario:Cov|Cov]] 19:18, 2 de mayo de 2013 (EDT)

== Definición de hardware libre-libre-abierto ==

Hola, estoy comenzando una "bifurcación amigable" de la definición de OSHW aquí porque, actualmente, estoy escribiendo una propuesta de proyecto de hardware libre/libre/abierto para un conjunto de clientes potenciales que no están nada familiarizados con todo el género de libre/ enfoques libres/abiertos, siento que la definición actual de OSHW no es lo suficientemente concisa como para reproducirla como un extracto. También siento que la definición actual de OSHW corre el riesgo de la misma división entre los métodos de "código abierto" y la ética "libre" que ha complicado las relaciones durante años dentro de la comunidad de software libre/libre/de código abierto.

En 2004, mientras preparaba una presentación para mi Director General en el gobierno, necesitaba meter la definición OSI en una sola pantalla: http://www.goslingcommunity.org/gtec2004.shtml Al final, sentí que la versión corta que tenía adaptado fue más útil como definición que el original, en el mismo sentido que los diccionarios también contienen frases muy concisas. Con los años también, llegué a ver la importancia de incluir tanto los métodos como los elementos éticos en los proyectos.

Entonces, lo que aparece aquí como una "bifurcación" para facilitar la discusión es el borrador de texto actual que aparece en mi propio documento de hardware libre/libre/abierto.

''PROYECTO: '' http://freedomdefined.org/User:Jpotvin/Free-Libre-Open_Hardware_Definition

Espero que nadie se sienta ofendido por este cambio total. Ponerlo como un tenedor aquí parecía la mejor manera de discutirlo sin interferir con su texto de definición principal.

Saludos,

jose potvin

== Actualizando y creando una versión estable. ==

Hola, mi nombre es Michelle Kosik, soy nueva en esto, así que disculpe mi inexperiencia. Esperaba que pudiéramos hacer la fuente más grande o más audaz. ¿Cómo cambio la versión a la versión estable?

: No solo cambias la versión estable. Consulte [[Proceso de creación]] para obtener más información. --[[Usuario:Mormegil|Mormegil]] ([[Usuario:Mormegil|habla]]) 05:18, 26 de marzo de 2013 (EDT)

== Enlace permanente ==

[[Definition]] debe contener un enlace a [[Definition/1.1]] para que sea más fácil para las personas referirse específicamente a esa versión. (Las personas que escriben libros, por ejemplo, podrían no tener la intención de vincular a [[Definición]], que es un objetivo en movimiento, sino a [[Definición/1.1]], a la que se refiere su libro).

: Agregué el enlace en el cuadro de introducción gris. ¿Crees que está bien? --[[Usuario:Mormegil|Mormegil]] ([[Usuario:Mormegil|habla]]) 11:58, 17 de febrero de 2015 (EST)

== Caducan las licencias si se rompen ==

Algunas licencias, que se declaran libres, caducan si las rompe. No puedo ver que esta restricción esté permitida. -- [[User:David23x|David23x]] ([[User talk:David23x|talk]]) 10:55, 1 de octubre de 2015 (EDT)

== Requisito de fuente en estable frente a oferta de fuente opcional en inestable ==

He notado, gracias a '''algunas''' personas en un canal de IRC en chat.freenode.net, que la versión estable requiere que los archivos fuente se redistribuyan y estén en un formato/estándar/códec que sea compatible con free/ software libre, mientras que la versión inestable pone la redistribución de archivos fuente como una opción.

Personalmente, veo que, bajo la definición estable, casi ningún trabajo calificaría como trabajo cultural libre/libre, ni siquiera aquellos bajo licencias libres/libres.

No soy un activista de la cultura libre/libre (solo soy un activista del software libre/libre que piensa que los datos no funcionales (como imágenes, sonido y demás) deberían ser al menos compartibles), pero solo quiero saber ¿Por qué los cambios relacionados con esta diferencia no se realizaron en la versión estable? ¿Cuál es la razón para sostenerlo? Sé que no hay consenso, pero ¿puedes describir los puntos donde las opiniones()

Test

Its a personal test

Api

Client API

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.