github.com/deroproject/derosuite@v2.1.6-1.0.20200307070847-0f2e589c7a2b+incompatible/walletapi/rpc_gettransfers.go (about)

     1  // Copyright 2017-2018 DERO Project. All rights reserved.
     2  // Use of this source code in any form is governed by RESEARCH license.
     3  // license can be found in the LICENSE file.
     4  // GPG: 0F39 E425 8C65 3947 702A  8234 08B2 0360 A03A 9DE8
     5  //
     6  //
     7  // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
     8  // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
     9  // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
    10  // THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
    11  // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
    12  // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    13  // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
    14  // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
    15  // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    16  
    17  package walletapi
    18  
    19  import "context"
    20  import "encoding/hex"
    21  
    22  //import	"log"
    23  //import 	"net/http"
    24  
    25  import "github.com/romana/rlog"
    26  import "github.com/intel-go/fastjson"
    27  import "github.com/osamingo/jsonrpc"
    28  
    29  import "github.com/deroproject/derosuite/structures"
    30  
    31  type Get_Transfers_Handler struct { // this has access to the wallet
    32  	r *RPCServer
    33  }
    34  
    35  func (h Get_Transfers_Handler) ServeJSONRPC(c context.Context, params *fastjson.RawMessage) (interface{}, *jsonrpc.Error) {
    36  
    37  	var p structures.Get_Transfers_Params
    38  	var result structures.Get_Transfers_Result
    39  	//var err error
    40  
    41  	if errp := jsonrpc.Unmarshal(params, &p); errp != nil {
    42  		rlog.Errorf("Could not parse gettransfers json, err %s\n", errp)
    43  		return nil, errp
    44  	}
    45  
    46  	//entries := h.r.w.Show_Transfers(p.In, p.In,p.Out,p.Failed, p.Pool,p.Min_Height,p.Max_Height)
    47  	in_entries := h.r.w.Show_Transfers(p.In, p.In, false, false, false, false, p.Min_Height, p.Max_Height)
    48  	out_entries := h.r.w.Show_Transfers(false, false, p.Out, false, false, false, p.Min_Height, p.Max_Height)
    49  	for j := range in_entries {
    50  		result.In = append(result.In, structures.Transfer_Details{TXID: in_entries[j].TXID.String(),
    51  			Payment_ID:  hex.EncodeToString(in_entries[j].PaymentID),
    52  			Height:      in_entries[j].Height,
    53  			Amount:      in_entries[j].Amount,
    54  			Unlock_time: in_entries[j].Unlock_Time,
    55  			Type:        "in",
    56  		})
    57  
    58  	}
    59  
    60  	for j := range out_entries {
    61  		result.Out = append(result.Out, structures.Transfer_Details{TXID: out_entries[j].TXID.String(),
    62  			Payment_ID:  hex.EncodeToString(out_entries[j].PaymentID),
    63  			Height:      out_entries[j].Height,
    64  			Amount:      out_entries[j].Amount,
    65  			Unlock_time: out_entries[j].Unlock_Time,
    66  			Type:        "out",
    67  		})
    68  
    69  	}
    70  
    71  	return result, nil
    72  }