Skip to content
Snippets Groups Projects
Select Git revision
  • 1e78c5b4a16a1a8fc0fb0750c40aef5ee8c089c1
  • master default protected
  • 11293-partition_table_backup
  • debian
  • tests
  • stretch-backports
  • no_vservers
  • pristine-tar
  • upstream
  • backupninja_debian/1.1.0-1
  • backupninja_upstream/1.1.0
  • backupninja-1.1.0
  • backupninja_debian/1.0.2-1
  • backupninja_upstream/1.0.2
  • backupninja-1.0.2
  • backupninja_debian/1.0.1-2
  • backupninja_debian/1.0.1-1
  • backupninja_upstream/1.0.1
  • backupninja-1.0.1
  • backupninja_debian/1.0-1
  • backupninja_upstream/1.0
  • backupninja-1.0
  • backupninja_debian/1.0_rc1-1
  • backupninja_upstream/1.0_rc1
  • backupninja-1.0-rc1
  • backupninja_debian/0.9.10-2
  • backupninja_debian/0.9.10-1
  • backupninja_upstream/0.9.10
  • backupninja-0.9.10
29 results

autogen.sh

Blame
  • Forked from Liberate / backupninja
    Source project has a limited visibility.
    transaction.go 2.09 KiB
    package api
    
    import (
    	"encoding/json"
    	"errors"
    	"log"
    	"net/http"
    	"strconv"
    
    	"0xacab.org/meskio/cicer/api/db"
    	"github.com/gorilla/mux"
    )
    
    func (a *api) ListTransactions(w http.ResponseWriter, req *http.Request) {
    	transactions, err := a.db.ListTransactions()
    	if err != nil {
    		log.Printf("Can't list transactions: %v", err)
    		w.WriteHeader(http.StatusInternalServerError)
    		return
    	}
    	w.Header().Set("Content-Type", "application/json")
    	w.WriteHeader(http.StatusOK)
    	err = json.NewEncoder(w).Encode(transactions)
    	if err != nil {
    		log.Printf("Can't encode transactions: %v", err)
    		w.WriteHeader(http.StatusInternalServerError)
    	}
    }
    
    func (a *api) GetTransaction(num int, role string, w http.ResponseWriter, req *http.Request) {
    	vars := mux.Vars(req)
    	id, _ := strconv.Atoi(vars["id"])
    	transaction, err := a.db.GetTransaction(id)
    	if err != nil {
    		if errors.Is(err, db.ErrorNotFound) {
    			w.WriteHeader(http.StatusNotFound)
    			return
    		}
    		log.Printf("Can't get transaction %s: %v", vars["id"], err)
    		w.WriteHeader(http.StatusInternalServerError)
    		return
    	}
    
    	if transaction.MemberNum != num && role != "admin" {
    		w.WriteHeader(http.StatusUnauthorized)
    		return
    	}
    
    	w.Header().Set("Content-Type", "application/json")
    	w.WriteHeader(http.StatusOK)
    	err = json.NewEncoder(w).Encode(transaction)
    	if err != nil {
    		log.Printf("Can't encode transaction: %v", err)
    		w.WriteHeader(http.StatusInternalServerError)
    		return
    	}
    }
    
    func (a *api) GetMemberTransactions(w http.ResponseWriter, req *http.Request) {
    	vars := mux.Vars(req)
    	num, _ := strconv.Atoi(vars["num"])
    	a.getTransactionsByMember(num, w, req)
    }
    
    func (a *api) getTransactionsByMember(num int, w http.ResponseWriter, req *http.Request) {
    	transactions, err := a.db.TransactionByMember(num)
    	if err != nil {
    		log.Printf("Can't list transactions: %v", err)
    		w.WriteHeader(http.StatusInternalServerError)
    		return
    	}
    	w.Header().Set("Content-Type", "application/json")
    	w.WriteHeader(http.StatusOK)
    	err = json.NewEncoder(w).Encode(transactions)
    	if err != nil {
    		log.Printf("Can't encode transactions: %v", err)
    		w.WriteHeader(http.StatusInternalServerError)
    	}
    }