github.com/vchain-us/vcn@v0.9.11-0.20210921212052-a2484d23c0b3/pkg/api/tracking.go (about)

     1  /*
     2   * Copyright (c) 2018-2020 vChain, Inc. All Rights Reserved.
     3   * This software is released under GPL3.
     4   * The full license information can be found under:
     5   * https://www.gnu.org/licenses/gpl-3.0.en.html
     6   *
     7   */
     8  
     9  package api
    10  
    11  import (
    12  	"fmt"
    13  
    14  	"github.com/sirupsen/logrus"
    15  	"github.com/vchain-us/vcn/pkg/meta"
    16  )
    17  
    18  type verifyArtifactTrackingEventRequest struct {
    19  	Client   string `json:"client"`
    20  	Filename string `json:"filename"`
    21  	Hash     string `json:"hash"`
    22  	URL      string `json:"url"`
    23  }
    24  
    25  type signArtifactTrackingEventRequest struct {
    26  	Filename string `json:"filename"`
    27  	Hash     string `json:"hash"`
    28  	Name     string `json:"name"`
    29  	URL      string `json:"url"`
    30  }
    31  
    32  type publisherTrackingEventRequest struct {
    33  	Name string `json:"name"`
    34  }
    35  
    36  func trackingEvent() string {
    37  	return meta.APIEndpoint("tracking-event")
    38  }
    39  
    40  // TrackVerify is deprecated and will be removed
    41  func TrackVerify(user *User, hash string, filename string) (err error) {
    42  	logger().WithFields(logrus.Fields{
    43  		"hash":     hash,
    44  		"filename": filename,
    45  	}).Trace("TrackVerify")
    46  	restError := new(Error)
    47  	r, err := newSling(user.token()).
    48  		Post(trackingEvent()+"/verify").
    49  		BodyJSON(verifyArtifactTrackingEventRequest{
    50  			Client:   meta.UserAgent(),
    51  			Filename: filename,
    52  			Hash:     hash,
    53  		}).Receive(nil, restError)
    54  	if err != nil {
    55  		return err
    56  	}
    57  	if r.StatusCode != 200 {
    58  		return fmt.Errorf("TrackVerify failed: %+v", restError)
    59  	}
    60  	return nil
    61  }
    62  
    63  // TrackPublisher is deprecated and will be removed
    64  func TrackPublisher(user *User, event string) (err error) {
    65  	logger().WithFields(logrus.Fields{
    66  		"event": event,
    67  	}).Trace("TrackPublisher")
    68  	restError := new(Error)
    69  	r, err := newSling(user.token()).
    70  		Post(trackingEvent()+"/publisher").
    71  		BodyJSON(publisherTrackingEventRequest{
    72  			Name: event,
    73  		}).Receive(nil, restError)
    74  	if err != nil {
    75  		return err
    76  	}
    77  	if r.StatusCode != 200 {
    78  		return fmt.Errorf("TrackPublisher failed: %+v", restError)
    79  	}
    80  	return nil
    81  }
    82  
    83  // TrackSign is deprecated and will be removed
    84  func TrackSign(user *User, hash string, filename string, status meta.Status) (err error) {
    85  	logger().WithFields(logrus.Fields{
    86  		"hash":     hash,
    87  		"filename": filename,
    88  		"status":   status,
    89  	}).Trace("TrackSign")
    90  	restError := new(Error)
    91  	r, err := newSling(user.token()).
    92  		Post(trackingEvent()+"/sign").
    93  		BodyJSON(signArtifactTrackingEventRequest{
    94  			Name:     status.String(),
    95  			Hash:     hash,
    96  			Filename: filename,
    97  		}).Receive(nil, restError)
    98  	if err != nil {
    99  		return err
   100  	}
   101  	if r.StatusCode != 200 {
   102  		return fmt.Errorf("TrackSign failed: %+v", restError)
   103  	}
   104  	return nil
   105  }