BenjaminVanRyseghem / jira-todoist

A jira webhook to add tickets to todoist
Eclipse Public License 1.0
8 stars 1 forks source link

Guidance on usage #8

Open fakeh opened 9 years ago

fakeh commented 9 years ago

Thanks Benjamin, Having fixed issue #7 , I can now run it:

DanDev:jira-todoist-master-2 dan$ lein ring server
2015-01-15 15:07:45.471:INFO:oejs.Server:jetty-7.6.8.v20121106
2015-01-15 15:07:45.503:INFO:oejs.AbstractConnector:Started SelectChannelConnector@0.0.0.0:3000
Started server on port 3000

How am I to use it? I've configured the info.json, but am surprised that there's no login information necessary for Jira, so I included this information in the url like: http://user:pass@myjira.atlassian.net Is this correct?

Should I see anything at localhost:3000? I get a 200 but empty response.

I don't get any Todoist output when I create and assign Jira issues. How can I check what part of the integration is failing?

Thanks a lot, Dan.

BenjaminVanRyseghem commented 9 years ago

IIRC (should I say that? :smile_cat: ), you do not need to put your Jira credential as the clojure server is used as a webhook target.

In jira, you need to add a new webhook, and there add the address where your clojure server can be reached.

Then when a ticket is updated, your clojure server will be notified.

Hope it helps :+1:

fakeh commented 9 years ago

Thanks. I really should have realised that! I created a test issue and it was created in Todoist. Great! Then I resolved the issue in JIRA (we have a simple project setup for this integration with OPEN, IN PROGRESS, TODO and DONE statuses, DONE also resolves the issue) but it was not marked as done in Todoist. I then made a second issue where the web hook call caused a 500 error on the server (sorry for the formatting, it's from Wireshark):

</style></head><body><div id="exception"><h1>java.lang.IllegalArgumentException</h1><div class="message">No method in multimethod 'dispatch-ticket-event' for dispatch value: jira:issue_created</div><div class="trace"><table><tbody><tr class="java"><td class="source">MultiFn.java:160</td><td class="method">clojure.lang.MultiFn.getFn</td></tr><tr class="java"><td class="source">MultiFn.java:227</td><td class="method">clojure.lang.MultiFn.invoke</td></tr><tr class="clojure"><td class="source">post.clj:14</td><td class="method">jira-todoist.post/handle-post</td></tr><tr class="clojure"><td class="source">handler.clj:9</td><td class="method">jira-todoist.handler/fn</td></tr><tr class="clojure"><td class="source">core.clj:99</td><td class="method">compojure.core/make-route[fn]</td></tr><tr class="clojure"><td class="source">core.clj:45</td><td class="method">compojure.core/if-route[fn]</td></tr><tr class="clojure"><td class="source">core.clj:30</td><td class="method">compojure.core/if-method[fn]</td></tr><tr class="clojure"><td class="source">core.clj:112</td><td class="method">compojure.core/routing[fn]</td></tr><tr class="clojure"><td class="source">core.clj:2515</td><td class="method">clojure.core/some</td></tr><tr class="clojure"><td class="source">core.clj:112</td><td class="method">compojure.core/routing</td></tr><tr class="java"><td class="source">RestFn.java:139</td><td class="method">clojure.lang.RestFn.applyTo</td></tr><tr class="clojure"><td class="source">core.clj:626</td><td class="method">clojure.core/apply</td></tr><tr class="clojure"><td class="source">core.clj:117</td><td class="method">compojure.core/routes[fn]</td></tr><tr class="clojure"><td class="source">keyword_params.clj:32</td><td class="method">ring.middleware.keyword-params/wrap-keyword-params[fn]</td></tr><tr class="clojure"><td class="source">nested_params.clj:75</td><td class="method">ring.middleware.nested-params/wrap-nested-params[fn]</td></tr><tr class="clojure"><td class="source">params.clj:58</td><td class="method">ring.middleware.params/wrap-params[fn]</td></tr><tr class="clojure"><td class="source">multipart_params.clj:107</td><td class="method">ring.middleware.multipart-params/wrap-multipart-params[fn]</td></tr><tr class="clojure"><td class="source">flash.clj:31</td><td class="method">ring.middleware.flash/wrap-flash[fn]</td></tr><tr class="clojure"><td class="source">session.clj:85</td><td class="method">ring.middleware.session/wrap-session[fn]</td></tr><tr class="java"><td class="source">Var.java:379</td><td class="method">clojure.lang.Var.invoke</td></tr><tr class="clojure"><td class="source">reload.clj:18</td><td class="method">ring.middleware.reload/wrap-reload[fn]</td></tr><tr class="clojure"><td class="source">stacktrace.clj:17</td><td class="method">ring.middleware.stacktrace/wrap-stacktrace-log[fn]</td></tr><tr class="clojure"><td class="source">stacktrace.clj:80</td><td class="method">ring.middleware.stacktrace/wrap-stacktrace-web[fn]</td></tr><tr class="clojure"><td class="source">jetty.clj:18</td><td class="method">ring.adapter.jetty/proxy-handler[fn]</td></tr><tr class="java"><td class="source">(Unknown Source)</td><td class="method">ring.adapter.jetty.proxy$org.eclipse.jetty.server.handler.AbstractHandler$ff19274a.handle</td></tr><tr class="java"><td class="source">HandlerWrapper.java:116</td><td class="method">org.eclipse.jetty.server.handler.HandlerWrapper.handle</td></tr><tr class="java"><td class="source">Server.java:363</td><td class="method">org.eclipse.jetty.server.Server.handle</td></tr><tr class="java"><td class="source">AbstractHttpConnection.java:483</td><td class="method">org.eclipse.jetty.server.AbstractHttpConnection.handleRequest</td></tr><tr class="java"><td class="source">AbstractHttpConnection.java:931</td><td class="method">org.eclipse.jetty.server.AbstractHttpConnection.content</td></tr><tr class="java"><td class="source">AbstractHttpConnection.java:992</td><td class="method">org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content</td></tr><tr class="java"><td class="source">HttpParser.java:856</td><td class="method">org.eclipse.jetty.http.HttpParser.parseNext</td></tr><tr class="java"><td class="source">HttpParser.java:235</td><td class="method">org.eclipse.jetty.http.HttpParser.parseAvailable</td></tr><tr class="java"><td class="source">AsyncHttpConnection.java:82</td><td class="method">org.eclipse.jetty.server.AsyncHttpConnection.handle</td></tr><tr class="java"><td class="source">SelectChannelEndPoint.java:628</td><td class="method">org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle</td></tr><tr class="java"><td class="source">SelectChannelEndPoint.java:52</td><td class="method">org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run</td></tr><tr class="java"><td class="source">QueuedThreadPool.java:608</td><td class="method">org.eclipse.jetty.util.thread.QueuedThreadPool.runJob</td></tr><tr class="java"><td class="source">QueuedThreadPool.java:543</td><td class="method">org.eclipse.jetty.util.thread.QueuedThreadPool$3.run</td></tr><tr class="java"><td class="source">Thread.java:722</td><td class="method">java.lang.Thread.run</td></tr></tbody></table></div></div></body></html>

Now I can't get subsequent issues to be Todoified. Thanks! Dan.

BenjaminVanRyseghem commented 9 years ago

I made to work with the work flow I use at work, so it can be that some ticket types are not supported. Sorry

Also it was one of my first clojure project ever, so it could be that some part of the code are smelly.

I think that adding the ticket type of event in the multimethod is enough :smile:

On Fri, Jan 16, 2015 at 11:42 AM, fakeh notifications@github.com wrote:

Thanks. I really should have realised that! I created a test issue and it was created in Todoist. Great! Then I resolved the issue in JIRA (we have a simple project setup for this integration with OPEN, IN PROGRESS, TODO and DONE statuses, DONE also resolves the issue) but it was not marked as done in Todoist. I then made a second issue where the web hook call caused a 500 error on the server (sorry for the formatting, it's from Wireshark):

</style></head><body><div id="exception"><h1>java.lang.IllegalArgumentException</h1><div class="message">No method in multimethod 'dispatch-ticket-event' for dispatch value: jira:issue_created</div><div class="trace"><table><tbody><tr class="java"><td class="source">MultiFn.java:160</td><td class="method">clojure.lang.MultiFn.getFn</td></tr><tr class="java"><td class="source">MultiFn.java:227</td><td class="method">clojure.lang.MultiFn.invoke</td></tr><tr class="clojure"><td class="source">post.clj:14</td><td class="method">jira-todoist.post/handle-post</td></tr><tr class="clojure"><td class="source">handler.clj:9</td><td class="method">jira-todoist.handler/fn</td></tr><tr class="clojure"><td class="source">core.clj:99</td><td class="method">compojure.core/make-route[fn]</td></tr><tr class="clojure"><td class="source">core.clj:45</td><td class="method">compojure.core/if-route[fn]</td></tr><tr class="clojure"><td class="source">core.clj:30</td><td class="method">compojure.core
 /if-meth
 od[fn]</td></tr><tr class="clojure"><td class="source">core.clj:112</td><td class="method">compojure.core/routing[fn]</td></tr><tr class="clojure"><td class="source">core.clj:2515</td><td class="method">clojure.core/some</td></tr><tr class="clojure"><td class="source">core.clj:112</td><td class="method">compojure.core/routing</td></tr><tr class="java"><td class="source">RestFn.java:139</td><td class="method">clojure.lang.RestFn.applyTo</td></tr><tr class="clojure"><td class="source">core.clj:626</td><td class="method">clojure.core/apply</td></tr><tr class="clojure"><td class="source">core.clj:117</td><td class="method">compojure.core/routes[fn]</td></tr><tr class="clojure"><td class="source">keyword_params.clj:32</td><td class="method">ring.middleware.keyword-params/wrap-keyword-params[fn]</td></tr><tr class="clojure"><td class="source">nested_params.clj:75</td><td class="method">ring.middleware.nested-params/wrap-nested-params[fn]</td></tr><tr class="clojure"><td class="sou
 rce">par
 ams.clj:58</td><td class="method">ring.middleware.params/wrap-params[fn]</td></tr><tr class="clojure"><td class="source">multipart_params.clj:107</td><td class="method">ring.middleware.multipart-params/wrap-multipart-params[fn]</td></tr><tr class="clojure"><td class="source">flash.clj:31</td><td class="method">ring.middleware.flash/wrap-flash[fn]</td></tr><tr class="clojure"><td class="source">session.clj:85</td><td class="method">ring.middleware.session/wrap-session[fn]</td></tr><tr class="java"><td class="source">Var.java:379</td><td class="method">clojure.lang.Var.invoke</td></tr><tr class="clojure"><td class="source">reload.clj:18</td><td class="method">ring.middleware.reload/wrap-reload[fn]</td></tr><tr class="clojure"><td class="source">stacktrace.clj:17</td><td class="method">ring.middleware.stacktrace/wrap-stacktrace-log[fn]</td></tr><tr class="clojure"><td class="source">stacktrace.clj:80</td><td class="method">ring.middleware.stacktrace/wrap-stacktrace-web[fn]</td>
 </tr><tr
  class="clojure"><td class="source">jetty.clj:18</td><td class="method">ring.adapter.jetty/proxy-handler[fn]</td></tr><tr class="java"><td class="source">(Unknown Source)</td><td class="method">ring.adapter.jetty.proxy$org.eclipse.jetty.server.handler.AbstractHandler$ff19274a.handle</td></tr><tr class="java"><td class="source">HandlerWrapper.java:116</td><td class="method">org.eclipse.jetty.server.handler.HandlerWrapper.handle</td></tr><tr class="java"><td class="source">Server.java:363</td><td class="method">org.eclipse.jetty.server.Server.handle</td></tr><tr class="java"><td class="source">AbstractHttpConnection.java:483</td><td class="method">org.eclipse.jetty.server.AbstractHttpConnection.handleRequest</td></tr><tr class="java"><td class="source">AbstractHttpConnection.java:931</td><td class="method">org.eclipse.jetty.server.AbstractHttpConnection.content</td></tr><tr class="java"><td class="source">AbstractHttpConnection.java:992</td><td class="method">org.eclipse.jetty
 .server.
 AbstractHttpConnection$RequestHandler.content</td></tr><tr class="java"><td class="source">HttpParser.java:856</td><td class="method">org.eclipse.jetty.http.HttpParser.parseNext</td></tr><tr class="java"><td class="source">HttpParser.java:235</td><td class="method">org.eclipse.jetty.http.HttpParser.parseAvailable</td></tr><tr class="java"><td class="source">AsyncHttpConnection.java:82</td><td class="method">org.eclipse.jetty.server.AsyncHttpConnection.handle</td></tr><tr class="java"><td class="source">SelectChannelEndPoint.java:628</td><td class="method">org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle</td></tr><tr class="java"><td class="source">SelectChannelEndPoint.java:52</td><td class="method">org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run</td></tr><tr class="java"><td class="source">QueuedThreadPool.java:608</td><td class="method">org.eclipse.jetty.util.thread.QueuedThreadPool.runJob</td></tr><tr class="java"><td class="source">QueuedThreadPool.java:543</td
 ><td cla
 ss="method">org.eclipse.jetty.util.thread.QueuedThreadPool$3.run</td></tr><tr class="java"><td class="source">Thread.java:722</td><td class="method">java.lang.Thread.run</td></tr></tbody></table></div></div></body></html>

Now I can't get subsequent issues to be Todoified.

Thanks! Dan.

Reply to this email directly or view it on GitHub: https://github.com/BenjaminVanRyseghem/jira-todoist/issues/8#issuecomment-70236603