From 6ea92c71775c5aa45de0b32c66a7e3901100dcc5 Mon Sep 17 00:00:00 2001 From: Sagar Gugwad Date: Thu, 19 Dec 2013 16:03:03 +0530 Subject: [PATCH] Bitbucket issue creation app 'bissue'. --- apps/bissue/assets/images/icon.png | Bin 0 -> 1227 bytes apps/bissue/assets/images/screenshot.png | Bin 0 -> 3326 bytes apps/bissue/assets/views/button/overlay.hbs | 23 +++++++ apps/bissue/bissue.rb | 66 ++++++++++++++++++++ apps/bissue/config.yml | 29 +++++++++ 5 files changed, 118 insertions(+) create mode 100644 apps/bissue/assets/images/icon.png create mode 100644 apps/bissue/assets/images/screenshot.png create mode 100644 apps/bissue/assets/views/button/overlay.hbs create mode 100644 apps/bissue/bissue.rb create mode 100644 apps/bissue/config.yml diff --git a/apps/bissue/assets/images/icon.png b/apps/bissue/assets/images/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..cf34befff57a22026dda76dda996d4a855751cb1 GIT binary patch literal 1227 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEVE&Nl>>S|f?5q$_l%JNFlghxL zF|jxFZvO2M5&O>km?dKN3pV!giFU6K4UXO^Ew%O-o9E=EFP)@zp1q;9VEBTyyC%o=Ipm#|1T~LTe+NBWu8+`xNWW6$ION)E3Mb@E8KJY`9br(Z z(0BMWb5`||LqAWNi@gqhuW+w(N7j$ll>z%Q&Q4L=ky})G&TduPoa|lZUAE2Qg7;Tl zcAEHH*esy+FYGsXr|a`9s!r_nV%2x<1@|u>JKa$&Q2*lAE0*(-5zErz zp8jjq?u+Lu7PzLnIpm35r_0_2#~j{WUw&+duH}Qribc^zvBrHOPX8t)vu*C!Iq`Fz z^V*g<(z9ltF1CMSw^eK5`77&IO-tP?>rx}pr)shw;V{oTtB4JZMk^+?^X!u?2n=Rs z_L&lJC1{F7=ki3p)VGyS8x9v9nZdi}`b<-|%<~Tg-?hlhE)i~hbNso2<|OBo89fa? z_f+yH9#-kTBv@2%d7Di4`J}ryzkIecxuE@6w)xD?d2aC{@7Gjcy0E_f%XhKt-xKF# zYR|7=KX90D%M9j^zt-#h-Jtzxqm$mA>dmiT3HjKp+`sbn%CA?r-mPA_wPWHh+pTT; zLp_r7(k5KAv2&ZyE`C}e?r>^N&4q&h%#~$5+f|d!T3r{;j8K2UzO-G{;BS&JmsbDvEJk8iTPJ_c|DUa$z6GK&t`kYo(f&IIS2M$z4~pV#rmcw zWX@! z_Olh7{39O8P*`z9;}EDInC9u?7*a9k?FC1{0|pF-HcF1Cdx0^ExuoG51D&{KjG_gqWrYX zoKyw|jfuUXck^$Dh}d`L$1D-EU$C){Pqce|XmIpSX{oix*gPjMed#2%^Xv_+B_~Vs zq=K)TZM&QsI{zC}KF<&4hE42p6Dpjfc#eGA^pSCAS%NlOb*3t? z?Cq??OA)*L1OA^k%{PnsSoQJcr)O&Yk9PN8jVnKXMWB9N_D;_u`pWyB{g70v7yY>R zSd40Kg}%e5nX{^w9Qt|ETUa_2y zj98Wy_w-+@c3(VSvA{Lm%^^?hI$icIIOg!~`toBtbS)n|RxFA(iZ$*Nar!qYnQe2& z&WWG%oY%I@k)AdCbg}&tyRBLa&tF-$YFg@ES(h4#K2?(i35R*!Sw(DMG+HsCooAnH zL0~X5v(J=(D?w8vI+rK%rM|6v+Hkn=$PC^!*Jql#WuAX1_^w4}c8PH7o8!+FG$%Qy z%;;(Gxu=pp@vutwCBdSC%iCnS&nMlz`Q@{n$p!7lvdw39&U1?wdB3Lm(uMW)U%rcF z|DHG}Q+s{|`+>uJTV^nS{Iy>1?*{Ep8=ds_RBwL$O324%<^GkoSAM<1^=|dbtsN78 z*=}vyAL@~ump0*|jh)+scJb2+afefDYAzJ~XRa*k*{+&&*6O-&W`z0+_NDEr7PsX+ zr{14pKUMT8_tQN^<eX)> zE!H%-46ckG(e=d&Gpx*3pQ%#3Q0Y)xbt_%`?TWW^3VUzv(tjU3<@!^Tx>YM; zHhei)7isKk8Bn>&+xC^-g;xq2-Ye{1B){U|cioMjt5iPUXS4VselOBo>1GM@gKYi< zzqfi^YcGGac|K!|#RBs?tsl<$tJE=m$ol>LV|}dTp4oY(v-v;ld-a1Q;ql|N&-0(A z6+ia=vY)Nsc57(8A5T-G@yGywps35Hkz literal 0 HcmV?d00001 diff --git a/apps/bissue/assets/views/button/overlay.hbs b/apps/bissue/assets/views/button/overlay.hbs new file mode 100644 index 0000000..2bfd2c1 --- /dev/null +++ b/apps/bissue/assets/views/button/overlay.hbs @@ -0,0 +1,23 @@ +

Edit the Issue Details

+{{#each tickets}} + {{#ticket}} +
    +
  1. + + +
  2. +
  3. + + +
  4. +
  5. + + +
  6. +
+ {{/ticket}} +{{/each}} + diff --git a/apps/bissue/bissue.rb b/apps/bissue/bissue.rb new file mode 100644 index 0000000..1c13018 --- /dev/null +++ b/apps/bissue/bissue.rb @@ -0,0 +1,66 @@ +module Bissue + module EventHandler + # Handle 'ticket.created' event + def ticket_created + return true + end + + # Handle all events + def all_events + return true + end + end +end + +module Bissue + module ActionHandler + def button + begin + response = create_bissue(payload.overlay.title, payload.overlay.status, payload.overlay.description) + html = comment_html(response) + comment_on_ticket(ticket, html) + rescue Exception => e + return [500, e.message] + end + [200, "Ticket sent to Bitbucket Issues"] + end + end +end + +module Bissue + require 'uri' + require 'json' + + class Base < SupportBeeApp::Base + # Settings + # bitbucket service need to be supported yet + # oauth :bitbucket, :required => true, :oauth_options => {:scope => "user,repo"} + string :accountname, :required => true, :label => 'Owner' + string :repo_slug, :required => true, :label => 'Repository' + + def validate + errors[:flash] = ["Please fill in all the required fields"] if settings.accountname.blank? or settings.repo_slug.blank? + errors.empty? ? true : false + end + + private + + def create_bissue(issue_title, issue_status, issue_description) + # Uncomment after adding bitbucket support + #token = settings.oauth_token_secret || settings.oauth_token + response = http_post "https://bitbucket.org/api/1.0/repositories/#{settings.accountname}/#{settings.repo_slug}/issues?access_token=#{token}" do |req| + req.body = {:title => issue_title, :status => issue_status, :content => URI.encode(issue_description)}.to_json + end + end + + def comment_html(response) + "Bitbucket Issue created!\n #{response.body['title']}" + end + + def comment_on_ticket(ticket, html) + ticket.comment(:html => html) + end + + end +end + diff --git a/apps/bissue/config.yml b/apps/bissue/config.yml new file mode 100644 index 0000000..013d8b7 --- /dev/null +++ b/apps/bissue/config.yml @@ -0,0 +1,29 @@ +name: Bissue +slug: bissue +access: public + +description: "This facilitates creating issue in bitbucket." + +category: Project Management + +tags: +- bitbucket +- issue forwarding + +developer: + name: Sagar Gugwad + email: saagar.gugwad@gmail.com + twitter: @geekgugi + github: geekgugi + +# The following config keys are used by Action Handlers +# Set button 'overlay' to true, if you want to have an overlay +# The valid values for screens are [ticket, all, unassigned, my, groups] +# Remove the following section if you do not want to define Action Handlers + +action: + button: + overlay: public + screens: + - ticket + label: Send To Bissue