| <?xml version="1.0" encoding="UTF-8"?> | |||||
| <project version="4"> | |||||
| <component name="PublishConfigData" serverName="c5016" remoteFilesAllowedToDisappearOnAutoupload="false"> | |||||
| <serverData> | |||||
| <paths name="c5016"> | |||||
| <serverdata> | |||||
| <mappings> | |||||
| <mapping local="$USER_HOME$/GolandProjects/SFM-loan" web="/" /> | |||||
| <mapping local="$PROJECT_DIR$" web="/" /> | |||||
| </mappings> | |||||
| </serverdata> | |||||
| </paths> | |||||
| </serverData> | |||||
| </component> | |||||
| </project> |
| <?xml version="1.0" encoding="UTF-8"?> | |||||
| <project version="4"> | |||||
| <component name="SshConfigs"> | |||||
| <configs> | |||||
| <sshConfig authType="OPEN_SSH" host="c5016.biukop.com.au" id="4c37c16f-8619-475c-89e3-ac3e5f71cdd1" port="22" nameFormat="DESCRIPTIVE" username="root" /> | |||||
| </configs> | |||||
| </component> | |||||
| </project> |
| <?xml version="1.0" encoding="UTF-8"?> | |||||
| <project version="4"> | |||||
| <component name="WebServers"> | |||||
| <option name="servers"> | |||||
| <webServer id="2d14bdeb-6cf7-4487-8af1-235dd3bc8a6f" name="c5016"> | |||||
| <fileTransfer accessType="SFTP" host="c5016.biukop.com.au" port="22" sshConfigId="4c37c16f-8619-475c-89e3-ac3e5f71cdd1" sshConfig="root@c5016.biukop.com.au:22 agent" authAgent="true"> | |||||
| <advancedOptions> | |||||
| <advancedOptions dataProtectionLevel="Private" keepAliveTimeout="0" passiveMode="true" shareSSLContext="true" /> | |||||
| </advancedOptions> | |||||
| </fileTransfer> | |||||
| </webServer> | |||||
| </option> | |||||
| </component> | |||||
| </project> |
| apiV1SendJson(data, w, r, ss) | apiV1SendJson(data, w, r, ss) | ||||
| } | } | ||||
| } | } | ||||
| func apiV1GridListLoanOverview(w http.ResponseWriter, r *http.Request, ss *loan.Session) { | |||||
| input := loan.KdQueryInput{} | |||||
| e := input.ReadFromHttpRequest(r) | |||||
| if e != nil { | |||||
| apiV1Client404Error(w, r, ss) | |||||
| return | |||||
| } | |||||
| filter := loan.OverViewListFilter{KdQueryInput: input} | |||||
| ret := filter.Retrieve() | |||||
| apiV1SendJson(ret, w, r, ss) | |||||
| } |
| l.Status = input.Status | l.Status = input.Status | ||||
| l.Amount = input.Amount | l.Amount = input.Amount | ||||
| l.Item = input.Item | l.Item = input.Item | ||||
| l.Lender = input.Lender | |||||
| l.LenderLoanNumber = input.LenderLoanNumber | |||||
| l.Rating = input.Rating | l.Rating = input.Rating | ||||
| l.Settlement = input.Settlement | l.Settlement = input.Settlement | ||||
| l.Description = input.Description | l.Description = input.Description |
| "net/http" | "net/http" | ||||
| ) | ) | ||||
| func decodePayInFilter(r *http.Request) (ret loan.PayInListFilter, e error) { | |||||
| func decodePayInFilter(r *http.Request) (ret loan.PayInListFilterOld, e error) { | |||||
| decoder := json.NewDecoder(r.Body) | decoder := json.NewDecoder(r.Body) | ||||
| //decoder.DisallowUnknownFields() | //decoder.DisallowUnknownFields() | ||||
| e = decoder.Decode(&ret) | e = decoder.Decode(&ret) | ||||
| apiV1SendJson(ret, w, r, ss) | apiV1SendJson(ret, w, r, ss) | ||||
| } | } | ||||
| func apiV1FilteredPayInList(w http.ResponseWriter, r *http.Request, ss *loan.Session) { | |||||
| input := loan.KdQueryInput{} | |||||
| e := input.ReadFromHttpRequest(r) | |||||
| if e != nil { | |||||
| apiV1Client404Error(w, r, ss) | |||||
| return | |||||
| } | |||||
| payInListFilter := loan.PayInListFilter{KdQueryInput: input} | |||||
| ret := payInListFilter.Retrieve() | |||||
| apiV1SendJson(ret, w, r, ss) | |||||
| } |
| package main | |||||
| import ( | |||||
| "biukop.com/sfm/loan" | |||||
| "encoding/json" | |||||
| log "github.com/sirupsen/logrus" | |||||
| "net/http" | |||||
| "time" | |||||
| ) | |||||
| func decodeJsonPayOutEdit(r *http.Request) (ret loan.PayOut, e error) { | |||||
| decoder := json.NewDecoder(r.Body) | |||||
| //decoder.DisallowUnknownFields() | |||||
| e = decoder.Decode(&ret) | |||||
| if e != nil { | |||||
| log.Error("failed decoding PayIn for updating", e.Error()) | |||||
| return | |||||
| } | |||||
| return | |||||
| } | |||||
| func apiV1PayOutPost(w http.ResponseWriter, r *http.Request, ss *loan.Session) { | |||||
| input, e := decodeJsonPayOutEdit(r) | |||||
| log.Println(input) | |||||
| if e != nil { | |||||
| apiV1Client404Error(w, r, ss) | |||||
| return | |||||
| } else { | |||||
| lowerBound, _ := time.Parse("2006-01-02", "1900-01-01") | |||||
| if input.Ts.Before(lowerBound) { | |||||
| input.Ts = time.Now() | |||||
| } | |||||
| e = input.WriteWithRewardIds() | |||||
| if e != nil { | |||||
| log.Error("cannot save payout meta", e.Error()) | |||||
| apiV1Client404Error(w, r, ss) | |||||
| } else { | |||||
| poEx := loan.PayOutEx{} | |||||
| e = poEx.Read(input.Id) | |||||
| if e != nil { | |||||
| log.Error("weird failed to read PayInEx after successfully write PayIn", input, poEx, e.Error()) | |||||
| apiV1Client404Error(w, r, ss) | |||||
| } else { | |||||
| apiV1SendJson(poEx, w, r, ss) | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| func apiV1PayOutPrepared(w http.ResponseWriter, r *http.Request, ss *loan.Session) { | |||||
| input, e := decodeJsonPayOutEdit(r) | |||||
| log.Println(input) | |||||
| if e != nil { | |||||
| apiV1Client404Error(w, r, ss) | |||||
| return | |||||
| } | |||||
| po := loan.PayOut{} | |||||
| e = po.Read(input.Id) | |||||
| if e != nil { | |||||
| apiV1Client404Error(w, r, ss) | |||||
| return | |||||
| } | |||||
| po.Prepared = input.Prepared | |||||
| po.Approved = "" | |||||
| po.Paid = "" | |||||
| po.PayDate, _ = time.Parse("2006-01-02", "1900-01-01") | |||||
| po.PayAmount = 0 | |||||
| e = po.Write() | |||||
| if e != nil { | |||||
| apiV1Server500Error(w, r) | |||||
| return | |||||
| } | |||||
| ret := loan.PayOutEx{} | |||||
| e = ret.Read(input.Id) | |||||
| if e != nil { | |||||
| apiV1Server500Error(w, r) | |||||
| return | |||||
| } | |||||
| apiV1SendJson(ret, w, r, ss) | |||||
| } | |||||
| func apiV1PayOutUnprepared(w http.ResponseWriter, r *http.Request, ss *loan.Session) { | |||||
| input, e := decodeJsonPayOutEdit(r) | |||||
| log.Println(input) | |||||
| if e != nil { | |||||
| apiV1Client404Error(w, r, ss) | |||||
| return | |||||
| } | |||||
| po := loan.PayOut{} | |||||
| e = po.Read(input.Id) | |||||
| if e != nil { | |||||
| apiV1Client404Error(w, r, ss) | |||||
| return | |||||
| } | |||||
| po.Prepared = "" | |||||
| po.Approved = "" | |||||
| po.Paid = "" | |||||
| po.PayDate, _ = time.Parse("2006-01-02", "1900-01-01") | |||||
| po.PayAmount = 0 | |||||
| e = po.Write() | |||||
| if e != nil { | |||||
| apiV1Server500Error(w, r) | |||||
| return | |||||
| } | |||||
| ret := loan.PayOutEx{} | |||||
| e = ret.Read(input.Id) | |||||
| if e != nil { | |||||
| apiV1Server500Error(w, r) | |||||
| return | |||||
| } | |||||
| apiV1SendJson(ret, w, r, ss) | |||||
| } | |||||
| func apiV1PayOutApproved(w http.ResponseWriter, r *http.Request, ss *loan.Session) { | |||||
| input, e := decodeJsonPayOutEdit(r) | |||||
| log.Println(input) | |||||
| if e != nil { | |||||
| apiV1Client404Error(w, r, ss) | |||||
| return | |||||
| } | |||||
| po := loan.PayOut{} | |||||
| e = po.Read(input.Id) | |||||
| if e != nil { | |||||
| apiV1Client404Error(w, r, ss) | |||||
| return | |||||
| } | |||||
| if po.Prepared == "" { | |||||
| log.Error("try to approve unprepared payout") | |||||
| apiV1Client403Error(w, r, ss) | |||||
| return | |||||
| } | |||||
| po.Approved = input.Approved | |||||
| po.Paid = "" | |||||
| po.PayDate, _ = time.Parse("2006-01-02", "1900-01-01") | |||||
| po.PayAmount = 0 | |||||
| e = po.Write() | |||||
| if e != nil { | |||||
| apiV1Server500Error(w, r) | |||||
| return | |||||
| } | |||||
| ret := loan.PayOutEx{} | |||||
| e = ret.Read(input.Id) | |||||
| if e != nil { | |||||
| log.Error("can not approve payout ", e) | |||||
| apiV1Server500Error(w, r) | |||||
| return | |||||
| } | |||||
| apiV1SendJson(ret, w, r, ss) | |||||
| } | |||||
| func apiV1PayOutUnapproved(w http.ResponseWriter, r *http.Request, ss *loan.Session) { | |||||
| input, e := decodeJsonPayOutEdit(r) | |||||
| log.Println(input) | |||||
| if e != nil { | |||||
| apiV1Client404Error(w, r, ss) | |||||
| return | |||||
| } | |||||
| po := loan.PayOut{} | |||||
| e = po.Read(input.Id) | |||||
| if e != nil { | |||||
| apiV1Client404Error(w, r, ss) | |||||
| return | |||||
| } | |||||
| if po.Approved == "" { | |||||
| log.Error("try to unapprove draft payout") | |||||
| apiV1Client403Error(w, r, ss) | |||||
| return | |||||
| } | |||||
| po.Approved = "" | |||||
| po.Paid = "" | |||||
| po.PayDate, _ = time.Parse("2006-01-02", "1900-01-01") | |||||
| po.PayAmount = 0 | |||||
| e = po.Write() | |||||
| if e != nil { | |||||
| apiV1Server500Error(w, r) | |||||
| return | |||||
| } | |||||
| ret := loan.PayOutEx{} | |||||
| e = ret.Read(input.Id) | |||||
| if e != nil { | |||||
| log.Error("can not approve payout ", e) | |||||
| apiV1Server500Error(w, r) | |||||
| return | |||||
| } | |||||
| apiV1SendJson(ret, w, r, ss) | |||||
| } | |||||
| func apiV1PayOutPaid(w http.ResponseWriter, r *http.Request, ss *loan.Session) { | |||||
| input, e := decodeJsonPayOutEdit(r) | |||||
| log.Println(input) | |||||
| if e != nil { | |||||
| apiV1Client404Error(w, r, ss) | |||||
| return | |||||
| } | |||||
| po := loan.PayOut{} | |||||
| e = po.Read(input.Id) | |||||
| if e != nil { | |||||
| apiV1Client404Error(w, r, ss) | |||||
| return | |||||
| } | |||||
| if po.Approved == "" || po.Prepared == "" { | |||||
| log.Error("try to pay draft payout", po) | |||||
| apiV1Client403Error(w, r, ss) | |||||
| return | |||||
| } | |||||
| po.Paid = input.Paid | |||||
| po.PayDate = input.PayDate | |||||
| po.PayAmount = input.PayAmount | |||||
| e = po.Write() | |||||
| if e != nil { | |||||
| apiV1Server500Error(w, r) | |||||
| return | |||||
| } | |||||
| ret := loan.PayOutEx{} | |||||
| e = ret.Read(input.Id) | |||||
| if e != nil { | |||||
| log.Error("can not approve payout ", e) | |||||
| apiV1Server500Error(w, r) | |||||
| return | |||||
| } | |||||
| apiV1SendJson(ret, w, r, ss) | |||||
| } | |||||
| func apiV1PayOutUnpaid(w http.ResponseWriter, r *http.Request, ss *loan.Session) { | |||||
| input, e := decodeJsonPayOutEdit(r) | |||||
| log.Println(input) | |||||
| if e != nil { | |||||
| apiV1Client404Error(w, r, ss) | |||||
| return | |||||
| } | |||||
| po := loan.PayOut{} | |||||
| e = po.Read(input.Id) | |||||
| if e != nil { | |||||
| apiV1Client404Error(w, r, ss) | |||||
| return | |||||
| } | |||||
| if po.Approved == "" || po.Prepared == "" || po.Paid == "" { | |||||
| log.Error("try to un-pay draft payout", po) | |||||
| apiV1Client403Error(w, r, ss) | |||||
| return | |||||
| } | |||||
| po.Paid = "" | |||||
| po.PayDate, _ = time.Parse("2006-01-02", "1900-01-01") | |||||
| po.PayAmount = 0 | |||||
| e = po.Write() | |||||
| if e != nil { | |||||
| apiV1Server500Error(w, r) | |||||
| return | |||||
| } | |||||
| ret := loan.PayOutEx{} | |||||
| e = ret.Read(input.Id) | |||||
| if e != nil { | |||||
| log.Error("can not approve payout ", e) | |||||
| apiV1Server500Error(w, r) | |||||
| return | |||||
| } | |||||
| apiV1SendJson(ret, w, r, ss) | |||||
| } |
| import ( | import ( | ||||
| "biukop.com/sfm/loan" | "biukop.com/sfm/loan" | ||||
| "database/sql" | |||||
| log "github.com/sirupsen/logrus" | log "github.com/sirupsen/logrus" | ||||
| "net/http" | "net/http" | ||||
| "strconv" | "strconv" | ||||
| } | } | ||||
| e = ret.Read(int64(id)) | e = ret.Read(int64(id)) | ||||
| if e != nil { | if e != nil { | ||||
| if e == sql.ErrNoRows { | |||||
| apiV1Client404Error(w, r, ss) | |||||
| return | |||||
| } | |||||
| log.Error("failed to read PayOutEx", strId, e.Error()) | log.Error("failed to read PayOutEx", strId, e.Error()) | ||||
| apiV1Server500Error(w, r) | apiV1Server500Error(w, r) | ||||
| return | |||||
| } | } | ||||
| apiV1SendJson(ret, w, r, ss) | apiV1SendJson(ret, w, r, ss) |
| p.First = input.First | p.First = input.First | ||||
| p.Last = input.Last | p.Last = input.Last | ||||
| p.Middle = input.Middle | |||||
| p.Display = input.Display | p.Display = input.Display | ||||
| p.Enabled = input.Enabled | p.Enabled = input.Enabled | ||||
| return | return | ||||
| } else { | } else { | ||||
| re.Id = input.Id | re.Id = input.Id | ||||
| re.PayoutId = input.PayoutId | |||||
| re.PayOutId = input.PayOutId | |||||
| re.Description = input.Description | re.Description = input.Description | ||||
| re.LoanId = input.LoanId | re.LoanId = input.LoanId | ||||
| re.Amount = input.Amount | re.Amount = input.Amount | ||||
| re.From = input.From | |||||
| re.To = input.To | |||||
| re.FromId = input.FromId | |||||
| re.ToId = input.ToId | |||||
| re.Ts = input.Ts | re.Ts = input.Ts | ||||
| e = re.Write() | e = re.Write() | ||||
| if e != nil { | if e != nil { | ||||
| } | } | ||||
| apiV1SendJson(id64, w, r, ss) | apiV1SendJson(id64, w, r, ss) | ||||
| } | } | ||||
| func apiV1RewardExListPost(w http.ResponseWriter, r *http.Request, ss *loan.Session) { | |||||
| input := loan.KdQueryInput{} | |||||
| e := input.ReadFromHttpRequest(r) | |||||
| if e != nil { | |||||
| apiV1Client404Error(w, r, ss) | |||||
| return | |||||
| } | |||||
| rewardListFilter := loan.RewardExListFilter{KdQueryInput: input} | |||||
| ret := rewardListFilter.Retrieve() | |||||
| apiV1SendJson(ret, w, r, ss) | |||||
| return | |||||
| } |
| } | } | ||||
| apiV1SendJson(ret, w, r, ss) | apiV1SendJson(ret, w, r, ss) | ||||
| } | } | ||||
| func apiV1UserExList(w http.ResponseWriter, r *http.Request, ss *loan.Session) { | |||||
| filter := "" | |||||
| keys, ok := r.URL.Query()["filter"] | |||||
| if ok && len(keys) >= 1 { | |||||
| filter = keys[0] | |||||
| } | |||||
| data := loan.GetUserExList(filter) | |||||
| apiV1SendJson(data, w, r, ss) | |||||
| } |
| {"GET", "chart/past-year-monthly", apiV1ChartPastYearMonthly}, | {"GET", "chart/past-year-monthly", apiV1ChartPastYearMonthly}, | ||||
| {"GET", "chart/recent-10-loans", apiV1ChartRecent10Loans}, | {"GET", "chart/recent-10-loans", apiV1ChartRecent10Loans}, | ||||
| {"GET", "chart/top-broker", apiV1ChartTopBroker}, | {"GET", "chart/top-broker", apiV1ChartTopBroker}, | ||||
| {"POST", "grid/loan/full-loan-overview", apiV1GridLoanFullOverview}, | |||||
| //{"POST", "grid/loan/full-loan-overview", apiV1GridLoanFullOverview}, | |||||
| {"POST", "grid/loan/full-loan-overview", apiV1GridListLoanOverview}, | |||||
| {"GET", "chart/reward-vs-income-monthly", apiV1ChartRewardVsIncomeMonthly}, | {"GET", "chart/reward-vs-income-monthly", apiV1ChartRewardVsIncomeMonthly}, | ||||
| {"GET", "loan/", apiV1LoanSingleGet}, | {"GET", "loan/", apiV1LoanSingleGet}, | ||||
| {"DELETE", "loan/", apiV1LoanSingleDelete}, | {"DELETE", "loan/", apiV1LoanSingleDelete}, | ||||
| {"POST", "user-enable/", apiV1UserEnable}, | {"POST", "user-enable/", apiV1UserEnable}, | ||||
| {"GET", "user-ex/", apiV1UserExGet}, | {"GET", "user-ex/", apiV1UserExGet}, | ||||
| {"GET", "user-ex-list/", apiV1UserExList}, | |||||
| {"GET", "broker/", apiV1BrokerGet}, | {"GET", "broker/", apiV1BrokerGet}, | ||||
| {"POST", "broker/", apiV1BrokerPost}, | {"POST", "broker/", apiV1BrokerPost}, | ||||
| {"POST", "reward/", apiV1RewardPost}, | {"POST", "reward/", apiV1RewardPost}, | ||||
| {"DELETE", "reward/", apiV1RewardDelete}, | {"DELETE", "reward/", apiV1RewardDelete}, | ||||
| {"GET", "people-list/", apiV1PeopleList}, | {"GET", "people-list/", apiV1PeopleList}, | ||||
| {"GET", "broker-list/", apiV1BrokerList}, | {"GET", "broker-list/", apiV1BrokerList}, | ||||
| {"POST", "sync-people/", apiV1SyncPeople}, | {"POST", "sync-people/", apiV1SyncPeople}, | ||||
| {"POST", "payIn/", apiV1PayInPost}, | {"POST", "payIn/", apiV1PayInPost}, | ||||
| {"DELETE", "payIn/", apiV1PayInDelete}, | {"DELETE", "payIn/", apiV1PayInDelete}, | ||||
| {"POST", "pay-in-list/", apiV1PayInList}, | {"POST", "pay-in-list/", apiV1PayInList}, | ||||
| {"POST", "pay-in-filtered-list/", apiV1FilteredPayInList}, | |||||
| {"GET", "user-reward/", apiV1UserReward}, | {"GET", "user-reward/", apiV1UserReward}, | ||||
| {"GET", "login-available/", apiV1LoginAvailable}, | {"GET", "login-available/", apiV1LoginAvailable}, | ||||
| {"GET", "payout-ex/", apiV1PayOutExGet}, | {"GET", "payout-ex/", apiV1PayOutExGet}, | ||||
| {"POST", "reward-ex-list/", apiV1RewardExListPost}, | |||||
| {"POST", "payout/", apiV1PayOutPost}, | |||||
| {"POST", "payout-prepared/", apiV1PayOutPrepared}, | |||||
| {"POST", "payout-unprepared/", apiV1PayOutUnprepared}, | |||||
| {"POST", "payout-approved/", apiV1PayOutApproved}, | |||||
| {"POST", "payout-unapproved/", apiV1PayOutUnapproved}, | |||||
| {"POST", "payout-paid/", apiV1PayOutPaid}, | |||||
| {"POST", "payout-unpaid/", apiV1PayOutUnpaid}, | |||||
| {"GET", "login", apiV1DumpRequest}, | {"GET", "login", apiV1DumpRequest}, | ||||
| } | } | ||||
| } else { //production | } else { //production | ||||
| {"GET", "chart/past-year-monthly", apiV1ChartPastYearMonthly}, | {"GET", "chart/past-year-monthly", apiV1ChartPastYearMonthly}, | ||||
| {"GET", "chart/recent-10-loans", apiV1ChartRecent10Loans}, | {"GET", "chart/recent-10-loans", apiV1ChartRecent10Loans}, | ||||
| {"GET", "chart/top-broker", apiV1ChartTopBroker}, | {"GET", "chart/top-broker", apiV1ChartTopBroker}, | ||||
| {"POST", "grid/loan/full-loan-overview", apiV1GridLoanFullOverview}, | |||||
| //{"POST", "grid/loan/full-loan-overview", apiV1GridLoanFullOverview}, | |||||
| {"POST", "grid/loan/full-loan-overview", apiV1GridListLoanOverview}, | |||||
| {"GET", "chart/reward-vs-income-monthly", apiV1ChartRewardVsIncomeMonthly}, | {"GET", "chart/reward-vs-income-monthly", apiV1ChartRewardVsIncomeMonthly}, | ||||
| {"GET", "loan/", apiV1LoanSingleGet}, | {"GET", "loan/", apiV1LoanSingleGet}, | ||||
| {"DELETE", "loan/", apiV1LoanSingleDelete}, | {"DELETE", "loan/", apiV1LoanSingleDelete}, | ||||
| {"POST", "user-enable/", apiV1UserEnable}, | {"POST", "user-enable/", apiV1UserEnable}, | ||||
| {"GET", "user-ex/", apiV1UserExGet}, | {"GET", "user-ex/", apiV1UserExGet}, | ||||
| {"GET", "user-ex-list/", apiV1UserExList}, | |||||
| {"GET", "broker/", apiV1BrokerGet}, | {"GET", "broker/", apiV1BrokerGet}, | ||||
| {"POST", "broker/", apiV1BrokerPost}, | {"POST", "broker/", apiV1BrokerPost}, | ||||
| {"POST", "reward/", apiV1RewardPost}, | {"POST", "reward/", apiV1RewardPost}, | ||||
| {"DELETE", "reward/", apiV1RewardDelete}, | {"DELETE", "reward/", apiV1RewardDelete}, | ||||
| {"GET", "people-list", apiV1PeopleList}, | {"GET", "people-list", apiV1PeopleList}, | ||||
| {"GET", "broker-list/", apiV1BrokerList}, | {"GET", "broker-list/", apiV1BrokerList}, | ||||
| {"POST", "sync-people/", apiV1SyncPeople}, | {"POST", "sync-people/", apiV1SyncPeople}, | ||||
| {"POST", "payIn/", apiV1PayInPost}, | {"POST", "payIn/", apiV1PayInPost}, | ||||
| {"DELETE", "payIn/", apiV1PayInDelete}, | {"DELETE", "payIn/", apiV1PayInDelete}, | ||||
| {"POST", "pay-in-list/", apiV1PayInList}, | {"POST", "pay-in-list/", apiV1PayInList}, | ||||
| {"POST", "pay-in-filtered-list/", apiV1FilteredPayInList}, | |||||
| {"GET", "user-reward/", apiV1UserReward}, | {"GET", "user-reward/", apiV1UserReward}, | ||||
| {"GET", "login-available/", apiV1LoginAvailable}, | {"GET", "login-available/", apiV1LoginAvailable}, | ||||
| {"GET", "payout-ex/", apiV1PayOutExGet}, | {"GET", "payout-ex/", apiV1PayOutExGet}, | ||||
| {"POST", "reward-ex-list/", apiV1RewardExListPost}, | |||||
| {"POST", "payout/", apiV1PayOutPost}, | |||||
| {"POST", "payout-prepared/", apiV1PayOutPrepared}, | |||||
| {"POST", "payout-unprepared/", apiV1PayOutUnprepared}, | |||||
| {"POST", "payout-approved/", apiV1PayOutApproved}, | |||||
| {"POST", "payout-unapproved/", apiV1PayOutUnapproved}, | |||||
| {"POST", "payout-paid/", apiV1PayOutPaid}, | |||||
| {"POST", "payout-unpaid/", apiV1PayOutUnpaid}, | |||||
| {"GET", "login", apiV1EmptyResponse}, | {"GET", "login", apiV1EmptyResponse}, | ||||
| } | } | ||||
| } | } |