diff --git a/coderlog/Labex_Q1.R b/coderlog/Labex_Q1.R new file mode 100644 index 0000000..8f6e578 --- /dev/null +++ b/coderlog/Labex_Q1.R @@ -0,0 +1,30 @@ +library(httr) + +spotify_token <- function() { + endpoint_uri <- "https://accounts.spotify.com/api/token" + + body <- list( + grant_type = "client_credentials", + client_id = (Sys.getenv("SPOTIFY_ID")), + client_secret = (Sys.getenv("SPOTIFY_SECRET")) + ) + + response <- POST( + url = endpoint_uri, + body = body, + add_headers("Content-Type" = "application/x-www-form-urlencoded"), + encode = "form" + ) + + status_code <- status_code(response) + token <- content(response)$access_token + bearer_token <- paste("Bearer", token) + + result <- list( + status_code <- status_code, + token <- bearer_token + ) + + return(result) +} + diff --git a/coderlog/Labex_Q1_tests.R b/coderlog/Labex_Q1_tests.R new file mode 100644 index 0000000..30544d1 --- /dev/null +++ b/coderlog/Labex_Q1_tests.R @@ -0,0 +1,22 @@ +library(testthat) + +rm(list = ls()) +file_path <- "Labex_Q1.R" +source(file_path) + +result <- spotify_token() + +#--------------------------------Test 1.1--------------------------------# +test_that("Global Workspace'de spotify_token adlı bir değişken olmalı", { + expect_true(exists("spotify_token")) +}) + +#--------------------------------Test 1.2--------------------------------# +test_that("spotify_token adlı değişken bir 'function' tipinde olmalı", { + expect_true(is.function(spotify_token)) +}) + +#--------------------------------Test 1.3--------------------------------# +test_that("spotify_token() çağrıldığında döndürdüğü çıktı bir liste olmalı", { + expect_true(is.list(result)) +}) \ No newline at end of file diff --git a/coderlog/Labex_Q2.R b/coderlog/Labex_Q2.R new file mode 100644 index 0000000..f543bcf --- /dev/null +++ b/coderlog/Labex_Q2.R @@ -0,0 +1,68 @@ +library(httr) + +#----------------- Spotify Token Alma -----------------# +spotify_token <- function() { + endpoint_uri <- "https://accounts.spotify.com/api/token" + + body <- list( + grant_type = "client_credentials", + client_id = (Sys.getenv("SPOTIFY_ID")), + client_secret = (Sys.getenv("SPOTIFY_SECRET")) + ) + + response <- POST( + url = endpoint_uri, + body = body, + add_headers("Content-Type" = "application/x-www-form-urlencoded"), + encode = "form" + ) + + status_code <- status_code(response) + token <- content(response)$access_token + bearer_token <- paste("Bearer",token) + + result <- list( + status_code = status_code, + token = bearer_token + ) + + return(result) +} +#token <- spotify_token() +#print(token) + + + +#----------------- Sanatçı Adı ile Çıkan Sonuçları Listeleme -----------------# +spotify_search_artist <- function(artist_name) { + if(!is.character(artist_name)) stop("Artist name must be character type."); + + search_url <- paste0( + "https://api.spotify.com/v1/search?q=", URLencode(artist_name), + "&type=artist&limit=",5) + token <- spotify_token() + + response <- GET( + url = search_url, + add_headers("Authorization" = token$token) + ) + + status_code <- status_code(response) + search_result <- content(response, type = "application/json") + artists <- search_result$artists$items[seq_len(5)] + + search_results <- data.frame( + artist = sapply(artists, function(x) x$name), + id = sapply(artists, function(x) x$id) + ) + + result <- list( + status_code = status_code, + search_results = search_results + ) + + return(result) +} +artists <- spotify_search_artist("Eminem") +print(artists) + diff --git a/coderlog/Labex_Q2_tests.R b/coderlog/Labex_Q2_tests.R new file mode 100644 index 0000000..72bcebe --- /dev/null +++ b/coderlog/Labex_Q2_tests.R @@ -0,0 +1,22 @@ +library(testthat) + +rm(list = ls()) +file_path <- "Labex_Q2.R" +source(file_path) + +result <- spotify_search_artist("The Doors") + +#--------------------------------Test 2.1--------------------------------# +test_that("Global Workspace’de spotify_search_artist adlı bir değişken olmalı.",{ + expect_true(exists("spotify_search_artist")) +}) + +#--------------------------------Test 2.2--------------------------------# +test_that("spotify_search_artist adlı değişkenin tipi “function” olmalı.",{ + expect_is(spotify_search_artist, "function") +}) + +#--------------------------------Test 2.3--------------------------------# +test_that("spotify_search_artist() herhangi bir artist ismi ile çağrıldığında döndürdüğü çıktı bir liste olmalı.",{ + expect_is(result, "list") +}) \ No newline at end of file