Пример #1
0
static OMX_ERRORTYPE
obtain_next_url (scloud_prc_t * ap_prc, int a_skip_value)
{
  OMX_ERRORTYPE rc = OMX_ErrorNone;
  const long pathname_max = PATH_MAX + NAME_MAX;

  assert (ap_prc);
  assert (ap_prc->p_scloud_);

  if (!ap_prc->p_uri_param_)
    {
      ap_prc->p_uri_param_ = tiz_mem_calloc (
        1, sizeof (OMX_PARAM_CONTENTURITYPE) + pathname_max + 1);
    }

  tiz_check_null_ret_oom (ap_prc->p_uri_param_);

  ap_prc->p_uri_param_->nSize
    = sizeof (OMX_PARAM_CONTENTURITYPE) + pathname_max + 1;
  ap_prc->p_uri_param_->nVersion.nVersion = OMX_VERSION;

  {
    const char * p_next_url = a_skip_value > 0
                                ? tiz_scloud_get_next_url (ap_prc->p_scloud_)
                                : tiz_scloud_get_prev_url (ap_prc->p_scloud_);
    tiz_check_null_ret_oom (p_next_url);

    {
      const OMX_U32 url_len = strnlen (p_next_url, pathname_max);
      TIZ_TRACE (handleOf (ap_prc), "URL [%s]", p_next_url);

      /* Verify we are getting an http scheme */
      if (!p_next_url || !url_len
          || (strncasecmp (p_next_url, "http://", 7) != 0
              && strncasecmp (p_next_url, "https://", 8) != 0))
        {
          rc = OMX_ErrorContentURIError;
        }
      else
        {
          strncpy ((char *) ap_prc->p_uri_param_->contentURI, p_next_url,
                   url_len);
          ap_prc->p_uri_param_->contentURI[url_len] = '\0';

          /* Song metadata is now available, update the IL client */
          rc = update_metadata (ap_prc);
        }
    }
  }

  return rc;
}
END_TEST

START_TEST (test_scloud_play_playlist)
{
  tiz_scloud_t *p_soundcloud = NULL;
  int rc = tiz_scloud_init (&p_soundcloud, SOUNDCLOUD_USERNAME, SOUNDCLOUD_PASS);
  ck_assert (0 == rc);
  ck_assert (p_soundcloud);

  rc = tiz_scloud_play_playlist (p_soundcloud, SOUNDCLOUD_PLAYLIST);
  ck_assert (0 == rc);

  /* while (1) */
  {
/*     char cmd[CMD_LEN]; */

    {
      const char *next_url = tiz_scloud_get_next_url (p_soundcloud);
      ck_assert (next_url);
      fprintf (stderr, "url = %s\n", next_url);
    }

    {
      const char *user = tiz_scloud_get_current_track_user (p_soundcloud);
      ck_assert (user);
      fprintf (stderr, "user = %s\n", user);
    }

    {
      const char *title = tiz_scloud_get_current_track_title (p_soundcloud);
      ck_assert (title);
      fprintf (stderr, "title = %s\n", title);
    }

    {
      const char *duration
          = tiz_scloud_get_current_track_duration (p_soundcloud);
      ck_assert (duration);
      fprintf (stderr, "duration = %s\n", duration);
    }

    {
      const char *year = tiz_scloud_get_current_track_year (p_soundcloud);
      ck_assert (year);
      fprintf (stderr, "year = %s\n", year);
    }

    {
      const char *permalink = tiz_scloud_get_current_track_permalink (p_soundcloud);
      ck_assert (permalink);
      fprintf (stderr, "permalink = %s\n", permalink);
    }

    {
      const char *license = tiz_scloud_get_current_track_license (p_soundcloud);
      ck_assert (license);
      fprintf (stderr, "license = %s\n", license);
    }

    /*     snprintf (cmd, CMD_LEN, "%s '%s'", PLAYER, next_url); */
    /*     fprintf (stderr, "cmd = %s\n", cmd); */
    /*     ck_assert (-1 != system (cmd)); */
  }

  tiz_scloud_destroy (p_soundcloud);
}