Example #1
0
        /// <summary>
        /// Return a Poly search URL representing a ListUserAssetsRequest.
        /// </summary>
        private static string MakeSearchUrl(PolyListUserAssetsRequest listUserAssetsRequest)
        {
            StringBuilder sb = new StringBuilder();

            sb.Append(BASE_URL)
            .Append("/v1/users/me/assets")
            .AppendFormat("?key={0}", PolyMainInternal.Instance.apiKey);

            if (listUserAssetsRequest.formatFilter != null)
            {
                sb.AppendFormat("&format={0}", WWW.EscapeURL(FORMAT_FILTER[listUserAssetsRequest.formatFilter.Value]));
            }

            if (listUserAssetsRequest.visibility != PolyVisibilityFilter.UNSPECIFIED)
            {
                sb.AppendFormat("&visibility={0}", WWW.EscapeURL(VISIBILITY[listUserAssetsRequest.visibility]));
            }
            sb.AppendFormat("&order_by={0}", WWW.EscapeURL(ORDER_BY[listUserAssetsRequest.orderBy]));
            sb.AppendFormat("&page_size={0}", listUserAssetsRequest.pageSize);
            if (listUserAssetsRequest.pageToken != null)
            {
                sb.AppendFormat("&page_token={0}", WWW.EscapeURL(listUserAssetsRequest.pageToken));
            }

            return(sb.ToString());
        }
Example #2
0
 /// <summary>
 /// As documented in PolyClient.ListUserAssets.
 /// </summary>
 public void ListUserAssets(PolyListUserAssetsRequest listUserAssetsRequest, PolyApi.ListAssetsCallback callback)
 {
     // Users expect their own private assets to update quickly once they make a change (one use case
     // being: I go to Blocks or Tilt Brush, modify my asset, come back to PolyToolkit, I expect it to be updated).
     // So we don't use caching for these.
     polyClient.SendRequest(listUserAssetsRequest, (PolyStatus status, PolyListAssetsResult polyListResult) => {
         if (status.ok)
         {
             ProcessRequestResult(polyListResult, callback);
         }
         else
         {
             callback(new PolyStatusOr <PolyListAssetsResult>(PolyStatus.Error(status, "Request failed")));
         }
     }, /*maxCacheAge*/ WebRequestManager.CACHE_NONE);
 }
Example #3
0
        private void CmdListMy(string[] args)
        {
            PolyListUserAssetsRequest req;

            if (args.Length > 0 && args[0] == "newest")
            {
                // Default list request (newest).
                req = PolyListUserAssetsRequest.MyNewest();
            }
            else
            {
                // Custom list request.
                req = new PolyListUserAssetsRequest();
            }
            // Mutate the request according to parameters.
            req.visibility = GetEnumOpt(args, "-v", req.visibility);
            req.orderBy    = GetEnumOpt(args, "-o", req.orderBy);
            req.pageSize   = GetIntOpt(args, "-p", req.pageSize);
            req.pageToken  = GetOpt(args, "--pt", req.pageToken);
            // FormatFilter is weird because it's nullable, so we have to test before trying to parse:
            if (HasOpt(args, "-f"))
            {
                req.formatFilter = GetEnumOpt(args, "-f", PolyFormatFilter.BLOCKS /* not used */);
            }

            if (HasOpt(args, "--dry"))
            {
                // Dry run mode.
                PrintLn(req.ToString());
                return;
            }

            // Send the request.
            hasRunListCommand = true;
            PrintLn("Sending listmy request... Please wait.");
            PolyApi.ListUserAssets(req, (PolyStatusOr <PolyListAssetsResult> res) => {
                if (!res.Ok)
                {
                    PrintLn("Request ERROR: " + res.Status);
                    return;
                }
                PrintLn("Request SUCCESS.");
                currentResults = res.Value.assets;
                CmdShow(new string[] {});
            });
        }
Example #4
0
        /// <summary>
        /// Starts a new request. If there is already an existing request in progress, it will be cancelled.
        /// </summary>
        /// <param name="request">The request parameters; can be either a ListAssetsRequest or
        /// a PolyListUserAssetsRequest.</param>
        /// <param name="callback"> The callback to invoke when the request finishes.</param>
        private void StartRequest(PolyRequest request, Action <PolyStatusOr <PolyListAssetsResult> > callback)
        {
            int thisQueryId = PrepareForNewQuery(); // for the closure below.

            currentRequest = request;

            if (request is PolyListAssetsRequest)
            {
                PolyListAssetsRequest listAssetsRequest = request as PolyListAssetsRequest;
                PolyApi.ListAssets(listAssetsRequest, (PolyStatusOr <PolyListAssetsResult> result) => {
                    // Only process result if this is indeed the most recent query that we issued.
                    // If we have issued another query since (in which case thisQueryId < queryId),
                    // then ignore the result.
                    if (thisQueryId == queryId && callback != null)
                    {
                        callback(result);
                    }
                });
            }
            else if (request is PolyListUserAssetsRequest)
            {
                PolyListUserAssetsRequest listUserAssetsRequest = request as PolyListUserAssetsRequest;
                PolyApi.ListUserAssets(listUserAssetsRequest, (PolyStatusOr <PolyListAssetsResult> result) => {
                    if (thisQueryId == queryId && callback != null)
                    {
                        callback(result);
                    }
                });
            }
            else if (request is PolyListLikedAssetsRequest)
            {
                PolyListLikedAssetsRequest listLikedAssetsRequest = request as PolyListLikedAssetsRequest;
                PolyApi.ListLikedAssets(listLikedAssetsRequest, (PolyStatusOr <PolyListAssetsResult> result) => {
                    if (thisQueryId == queryId && callback != null)
                    {
                        callback(result);
                    }
                });
            }
            else
            {
                Debug.LogError("Request failed. Must be either a PolyListAssetsRequest or PolyListUserAssetsRequest");
            }
        }