mirror of
https://github.com/status-im/open-bounty.git
synced 2025-01-11 18:14:25 +00:00
Edit github comment on balance update
This commit is contained in:
parent
397b3259b1
commit
8fb363218a
@ -39,6 +39,7 @@
|
|||||||
[luminus-immutant "0.2.2"]
|
[luminus-immutant "0.2.2"]
|
||||||
[overtone/at-at "1.2.0"]
|
[overtone/at-at "1.2.0"]
|
||||||
[clj.qrgen "0.4.0"]
|
[clj.qrgen "0.4.0"]
|
||||||
|
[digest "1.4.4"]
|
||||||
[tentacles "0.5.1"]]
|
[tentacles "0.5.1"]]
|
||||||
|
|
||||||
:min-lein-version "2.0.0"
|
:min-lein-version "2.0.0"
|
||||||
|
@ -7,3 +7,5 @@ ALTER TABLE public.issues
|
|||||||
DROP COLUMN confirm_hash;
|
DROP COLUMN confirm_hash;
|
||||||
ALTER TABLE public.issues
|
ALTER TABLE public.issues
|
||||||
ADD address VARCHAR(256);
|
ADD address VARCHAR(256);
|
||||||
|
ALTER TABLE public.issues
|
||||||
|
DROP COLUMN comment_id;
|
||||||
|
@ -4,6 +4,8 @@ ALTER TABLE public.issues
|
|||||||
ADD contract_address VARCHAR(42) NULL;
|
ADD contract_address VARCHAR(42) NULL;
|
||||||
ALTER TABLE public.issues
|
ALTER TABLE public.issues
|
||||||
ADD confirm_hash VARCHAR(128) NULL;
|
ADD confirm_hash VARCHAR(128) NULL;
|
||||||
|
ALTER TABLE public.issues
|
||||||
|
ADD comment_id INTEGER NULL;
|
||||||
-- noinspection SqlResolve
|
-- noinspection SqlResolve
|
||||||
ALTER TABLE public.issues
|
ALTER TABLE public.issues
|
||||||
DROP COLUMN address;
|
DROP COLUMN address;
|
||||||
|
@ -129,6 +129,12 @@ SET contract_address = :contract_address
|
|||||||
FROM t
|
FROM t
|
||||||
RETURNING t.issue_id, t.issue_number, t.title, t.transaction_hash, t.contract_address, t.login, t.repo, t.repo_id;
|
RETURNING t.issue_id, t.issue_number, t.title, t.transaction_hash, t.contract_address, t.login, t.repo, t.repo_id;
|
||||||
|
|
||||||
|
-- :name update-comment-id :<! :1
|
||||||
|
-- :doc updates comment-id for a given issue
|
||||||
|
UPDATE issues
|
||||||
|
SET comment_id = :comment_id
|
||||||
|
WHERE issue_id = :issue_id;
|
||||||
|
|
||||||
-- :name list-pending-deployments :? :*
|
-- :name list-pending-deployments :? :*
|
||||||
-- :doc retrieves pending transaction ids
|
-- :doc retrieves pending transaction ids
|
||||||
SELECT
|
SELECT
|
||||||
@ -201,8 +207,8 @@ FROM issues i
|
|||||||
ON r.repo_id = i.repo_id
|
ON r.repo_id = i.repo_id
|
||||||
WHERE r.user_id = :owner_id;
|
WHERE r.user_id = :owner_id;
|
||||||
|
|
||||||
-- :name issues-list :? :*
|
-- :name owner-issues-list :? :*
|
||||||
-- :doc lists all issues
|
-- :doc lists all not yet fixed issues in a given owner's repository
|
||||||
SELECT
|
SELECT
|
||||||
i.contract_address AS contract_address,
|
i.contract_address AS contract_address,
|
||||||
i.issue_id AS issue_id,
|
i.issue_id AS issue_id,
|
||||||
@ -215,7 +221,22 @@ FROM issues i
|
|||||||
INNER JOIN repositories r
|
INNER JOIN repositories r
|
||||||
ON r.repo_id = i.repo_id
|
ON r.repo_id = i.repo_id
|
||||||
WHERE r.user_id = :owner_id
|
WHERE r.user_id = :owner_id
|
||||||
AND i.commit_id IS NULL;
|
AND i.commit_id IS NULL
|
||||||
|
AND NOT exists(SELECT 1
|
||||||
|
FROM pull_requests
|
||||||
|
WHERE issue_number = i.issue_number);
|
||||||
|
|
||||||
|
-- :name wallets-list :? :*
|
||||||
|
-- :doc lists all contract ids
|
||||||
|
SELECT
|
||||||
|
i.contract_address AS contract_address,
|
||||||
|
r.login AS login,
|
||||||
|
r.repo AS repo,
|
||||||
|
i.comment_id AS comment_id,
|
||||||
|
i.issue_number AS issue_number
|
||||||
|
FROM issues i
|
||||||
|
INNER JOIN repositories r ON r.repo_id = i.repo_id
|
||||||
|
WHERE contract_address IS NOT NULL;
|
||||||
|
|
||||||
-- :name get-bounty-address :? :1
|
-- :name get-bounty-address :? :1
|
||||||
SELECT
|
SELECT
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
(defn list-not-fixed-issues
|
(defn list-not-fixed-issues
|
||||||
[owner-id]
|
[owner-id]
|
||||||
(jdbc/with-db-connection [con-db *db*]
|
(jdbc/with-db-connection [con-db *db*]
|
||||||
(db/issues-list con-db {:owner_id owner-id})))
|
(db/owner-issues-list con-db {:owner_id owner-id})))
|
||||||
|
|
||||||
(defn pending-bounties-list
|
(defn pending-bounties-list
|
||||||
[]
|
[]
|
||||||
@ -28,3 +28,8 @@
|
|||||||
[user repo issue-number]
|
[user repo issue-number]
|
||||||
(jdbc/with-db-connection [con-db *db*]
|
(jdbc/with-db-connection [con-db *db*]
|
||||||
(db/get-bounty-address con-db {:login user :repo repo :issue_number issue-number})))
|
(db/get-bounty-address con-db {:login user :repo repo :issue_number issue-number})))
|
||||||
|
|
||||||
|
(defn list-wallets
|
||||||
|
[]
|
||||||
|
(jdbc/with-db-connection [con-db *db*]
|
||||||
|
(db/wallets-list con-db)))
|
||||||
|
@ -32,6 +32,13 @@
|
|||||||
(db/update-contract-address con-db {:issue_id issue-id
|
(db/update-contract-address con-db {:issue_id issue-id
|
||||||
:contract_address contract-address})))
|
:contract_address contract-address})))
|
||||||
|
|
||||||
|
(defn update-comment-id
|
||||||
|
"Updates issue with comment id"
|
||||||
|
[issue-id comment-id]
|
||||||
|
(jdbc/with-db-connection [con-db *db*]
|
||||||
|
(db/update-comment-id con-db {:issue_id issue-id
|
||||||
|
:comment_id comment-id})))
|
||||||
|
|
||||||
(defn list-pending-deployments
|
(defn list-pending-deployments
|
||||||
"Retrieves pending transaction ids"
|
"Retrieves pending transaction ids"
|
||||||
[]
|
[]
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
[ring.util.codec :as codec]
|
[ring.util.codec :as codec]
|
||||||
[clj-http.client :as http]
|
[clj-http.client :as http]
|
||||||
[commiteth.config :refer [env]]
|
[commiteth.config :refer [env]]
|
||||||
|
[digest :refer [sha-256]]
|
||||||
[clojure.tools.logging :as log])
|
[clojure.tools.logging :as log])
|
||||||
(:import [java.util UUID]))
|
(:import [java.util UUID]))
|
||||||
|
|
||||||
@ -93,9 +94,14 @@
|
|||||||
(println "removing webhook")
|
(println "removing webhook")
|
||||||
(repos/delete-hook user repo hook-id (auth-params token)))
|
(repos/delete-hook user repo hook-id (auth-params token)))
|
||||||
|
|
||||||
|
(defn github-comment-hash
|
||||||
|
[user repo issue-number]
|
||||||
|
(digest/sha-256 (str "SALT_Yoh2looghie9jishah7aiphahphoo6udiju" user repo issue-number)))
|
||||||
|
|
||||||
(defn- get-qr-url
|
(defn- get-qr-url
|
||||||
[user repo issue-number]
|
[user repo issue-number]
|
||||||
(str (server-address) (format "/qr/%s/%s/bounty/%s/qr.png" user repo issue-number)))
|
(let [hash (github-comment-hash user repo issue-number)]
|
||||||
|
(str (server-address) (format "/qr/%s/%s/bounty/%s/%s/qr.png" user repo issue-number hash))))
|
||||||
|
|
||||||
(defn- md-url
|
(defn- md-url
|
||||||
([text url]
|
([text url]
|
||||||
@ -107,15 +113,25 @@
|
|||||||
[alt src]
|
[alt src]
|
||||||
(str "!" (md-url alt src)))
|
(str "!" (md-url alt src)))
|
||||||
|
|
||||||
|
(defn generate-comment
|
||||||
|
[user repo issue-number balance]
|
||||||
|
(let [image-url (md-image "QR Code" (get-qr-url user repo issue-number))
|
||||||
|
balance (str balance " ETH")
|
||||||
|
site-url (md-url (server-address) (server-address))]
|
||||||
|
(format "Current balance: %s\n%s\n%s" balance image-url site-url)))
|
||||||
|
|
||||||
(defn post-comment
|
(defn post-comment
|
||||||
[user repo issue-number balance]
|
[user repo issue-number balance]
|
||||||
(let [balance (str balance " ETH")
|
(let [comment (generate-comment user repo issue-number balance)]
|
||||||
image-url (md-image "QR Code" (get-qr-url user repo issue-number))
|
|
||||||
site-url (md-url (server-address) (server-address))
|
|
||||||
comment (format "Current balance: %s\n%s\n%s" balance image-url site-url)]
|
|
||||||
(log/info "Comment to" (str user "/" repo) ":" comment)
|
(log/info "Comment to" (str user "/" repo) ":" comment)
|
||||||
(issues/create-comment user repo issue-number comment (self-auth-params))))
|
(issues/create-comment user repo issue-number comment (self-auth-params))))
|
||||||
|
|
||||||
|
(defn update-comment
|
||||||
|
[user repo comment-id issue-number balance]
|
||||||
|
(let [comment (generate-comment user repo issue-number balance)]
|
||||||
|
(log/info (str "Updating " user "/" repo " comment #" comment-id " with contents: " comment))
|
||||||
|
(issues/edit-comment user repo comment-id comment (self-auth-params))))
|
||||||
|
|
||||||
(defn get-issue
|
(defn get-issue
|
||||||
[user repo issue-number]
|
[user repo issue-number]
|
||||||
(issues/specific-issue user repo issue-number (self-auth-params)))
|
(issues/specific-issue user repo issue-number (self-auth-params)))
|
||||||
|
@ -5,7 +5,8 @@
|
|||||||
[commiteth.layout :as layout]
|
[commiteth.layout :as layout]
|
||||||
[commiteth.util.images :refer :all]
|
[commiteth.util.images :refer :all]
|
||||||
[clj.qrgen :as qr]
|
[clj.qrgen :as qr]
|
||||||
[commiteth.eth.core :as eth])
|
[commiteth.eth.core :as eth]
|
||||||
|
[commiteth.github.core :as github])
|
||||||
(:import [javax.imageio ImageIO]
|
(:import [javax.imageio ImageIO]
|
||||||
[java.io InputStream]))
|
[java.io InputStream]))
|
||||||
|
|
||||||
@ -28,13 +29,15 @@
|
|||||||
|
|
||||||
(defapi qr-routes
|
(defapi qr-routes
|
||||||
(context "/qr" []
|
(context "/qr" []
|
||||||
(GET "/:user/:repo/bounty/:issue{[0-9]{1,9}}/qr.png" [user repo issue]
|
(GET "/:user/:repo/bounty/:issue{[0-9]{1,9}}/:hash/qr.png" [user repo issue hash]
|
||||||
(let [{address :contract_address
|
(if (= hash (github/github-comment-hash user repo issue))
|
||||||
login :login
|
(let [{address :contract_address
|
||||||
repo :repo
|
login :login
|
||||||
issue-number :issue_number} (bounties/get-bounty-address user repo (Integer/parseInt issue))
|
repo :repo
|
||||||
balance (eth/get-balance-eth address 8)
|
issue-number :issue_number} (bounties/get-bounty-address user repo (Integer/parseInt issue))]
|
||||||
issue-url (str login "/" repo "/issues/" issue-number)]
|
(if address
|
||||||
(if address
|
(let [balance (eth/get-balance-eth address 8)
|
||||||
(ok (generate-image address balance issue-url 768 256))
|
issue-url (str login "/" repo "/issues/" issue-number)]
|
||||||
(bad-request))))))
|
(ok (generate-image address balance issue-url 768 256)))
|
||||||
|
(bad-request)))
|
||||||
|
(bad-request)))))
|
||||||
|
@ -26,8 +26,9 @@
|
|||||||
repo-id :repo_id
|
repo-id :repo_id
|
||||||
issue-number :issue_number} issue
|
issue-number :issue_number} issue
|
||||||
balance (eth/get-balance-eth contract-address 4)
|
balance (eth/get-balance-eth contract-address 4)
|
||||||
repo-owner-address (:address (users/get-repo-owner repo-id))]
|
repo-owner-address (:address (users/get-repo-owner repo-id))
|
||||||
(github/post-comment user repo issue-number balance)
|
{comment-id :id} (github/post-comment user repo issue-number balance)]
|
||||||
|
(issues/update-comment-id issue-id comment-id)
|
||||||
(wallet/add-owner contract-address (eth/eth-account))
|
(wallet/add-owner contract-address (eth/eth-account))
|
||||||
(wallet/add-owner contract-address repo-owner-address))))))
|
(wallet/add-owner contract-address repo-owner-address))))))
|
||||||
|
|
||||||
@ -42,7 +43,19 @@
|
|||||||
(wallet/execute contract-address payout-address value)
|
(wallet/execute contract-address payout-address value)
|
||||||
(bounties/update-confirm-hash issue-id)))))
|
(bounties/update-confirm-hash issue-id)))))
|
||||||
|
|
||||||
|
(defn update-balance
|
||||||
|
[]
|
||||||
|
(for [{contract-address :contract_address
|
||||||
|
login :login
|
||||||
|
repo :repo
|
||||||
|
comment-id :comment_id
|
||||||
|
issue-number :issue_number} (bounties/list-wallets)]
|
||||||
|
(when comment-id
|
||||||
|
(let [balance (eth/get-balance-eth contract-address 8)]
|
||||||
|
(github/update-comment login repo comment-id issue-number balance)))))
|
||||||
|
|
||||||
(mount/defstate scheduler :start
|
(mount/defstate scheduler :start
|
||||||
(do
|
(do
|
||||||
(every (* 5 60 1000) update-issue-contract-address pool)
|
(every (* 5 60 1000) update-issue-contract-address pool)
|
||||||
(every (* 60 1000) self-sign-bounty pool)))
|
(every (* 60 1000) self-sign-bounty pool)
|
||||||
|
(every (* 5 60 1000) update-balance pool)))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user