From f5abdd8ed9a0e6ff61880f2ddebe37fb06e8b0d7 Mon Sep 17 00:00:00 2001 From: Ste Vaidis Date: Tue, 20 Feb 2024 12:18:45 +0200 Subject: [PATCH] better endpoint fields --- endpoints/NodesController.php | 274 +++++++++++++++++ endpoints/NodesController.php.bk | 289 ++++++++++++++++++ endpoints/add-fields.sh | 53 ++-- endpoints/bundle_AAAAA/bundle_AAAAA.info.yml | 8 - .../bundle_AAAAA/bundle_AAAAA.routing.yml | 39 --- .../src/Controller/CategoryController.php | 65 ---- .../src/Controller/NodeController.php | 163 ---------- .../src/Controller/NodesController.php | 238 --------------- .../builders_test/builders_test.info.yml | 6 - .../builders_test/src/ArticleBuilder.php | 101 ------ .../builders_test/src/ArticleTypeBuilder.php | 36 --- .../modules/builders_test/src/FileBuilder.php | 34 --- .../modules/builders_test/src/PageBuilder.php | 30 -- .../modules/builders_test/src/UserBuilder.php | 30 -- .../bundle_article_test.info.yml | 6 - ...node.article.field_article_description.yml | 20 -- ...field.node.article.field_article_files.yml | 26 -- ...ield.node.article.field_article_photos.yml | 37 --- ....field.node.article.field_article_type.yml | 28 -- ...ield.node.article.field_article_videos.yml | 26 -- ...field.node.article.field_facebook_page.yml | 22 -- .../field.field.node.article.field_source.yml | 22 -- ...field.field.node.article.field_summary.yml | 20 -- ...eld.field.node.article.field_thumbnail.yml | 37 --- .../field.field.node.article.field_url.yml | 22 -- .../field.field.user.user.field_user_name.yml | 19 -- ...eld.field.user.user.field_user_surname.yml | 19 -- ...storage.node.field_article_description.yml | 18 -- ...field.storage.node.field_article_files.yml | 22 -- ...ield.storage.node.field_article_photos.yml | 29 -- .../field.storage.node.field_article_type.yml | 19 -- ...ield.storage.node.field_article_videos.yml | 22 -- ...field.storage.node.field_facebook_page.yml | 18 -- .../field.storage.node.field_source.yml | 18 -- .../field.storage.node.field_summary.yml | 18 -- .../field.storage.node.field_thumbnail.yml | 29 -- .../install/field.storage.node.field_url.yml | 18 -- .../field.storage.user.field_user_name.yml | 20 -- .../field.storage.user.field_user_surname.yml | 20 -- .../config/install/node.type.article.yml | 9 - .../tests/src/Kernel/GetArticleTypesTest.php | 41 --- .../tests/src/Kernel/GetArticlesTest.php | 134 -------- endpoints/endpoint-get-delete.sh | 20 +- endpoints/endpoint-get.sh | 23 +- endpoints/get-fields.sh | 9 +- 45 files changed, 625 insertions(+), 1532 deletions(-) create mode 100644 endpoints/NodesController.php create mode 100644 endpoints/NodesController.php.bk delete mode 100644 endpoints/bundle_AAAAA/bundle_AAAAA.info.yml delete mode 100644 endpoints/bundle_AAAAA/bundle_AAAAA.routing.yml delete mode 100644 endpoints/bundle_AAAAA/src/Controller/CategoryController.php delete mode 100644 endpoints/bundle_AAAAA/src/Controller/NodeController.php delete mode 100644 endpoints/bundle_AAAAA/src/Controller/NodesController.php delete mode 100644 endpoints/bundle_AAAAA/tests/modules/builders_test/builders_test.info.yml delete mode 100644 endpoints/bundle_AAAAA/tests/modules/builders_test/src/ArticleBuilder.php delete mode 100644 endpoints/bundle_AAAAA/tests/modules/builders_test/src/ArticleTypeBuilder.php delete mode 100644 endpoints/bundle_AAAAA/tests/modules/builders_test/src/FileBuilder.php delete mode 100644 endpoints/bundle_AAAAA/tests/modules/builders_test/src/PageBuilder.php delete mode 100644 endpoints/bundle_AAAAA/tests/modules/builders_test/src/UserBuilder.php delete mode 100644 endpoints/bundle_AAAAA/tests/modules/bundle_article_test/bundle_article_test.info.yml delete mode 100644 endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.field.node.article.field_article_description.yml delete mode 100644 endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.field.node.article.field_article_files.yml delete mode 100644 endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.field.node.article.field_article_photos.yml delete mode 100644 endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.field.node.article.field_article_type.yml delete mode 100644 endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.field.node.article.field_article_videos.yml delete mode 100644 endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.field.node.article.field_facebook_page.yml delete mode 100644 endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.field.node.article.field_source.yml delete mode 100644 endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.field.node.article.field_summary.yml delete mode 100644 endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.field.node.article.field_thumbnail.yml delete mode 100644 endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.field.node.article.field_url.yml delete mode 100644 endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.field.user.user.field_user_name.yml delete mode 100644 endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.field.user.user.field_user_surname.yml delete mode 100644 endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.storage.node.field_article_description.yml delete mode 100644 endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.storage.node.field_article_files.yml delete mode 100644 endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.storage.node.field_article_photos.yml delete mode 100644 endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.storage.node.field_article_type.yml delete mode 100644 endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.storage.node.field_article_videos.yml delete mode 100644 endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.storage.node.field_facebook_page.yml delete mode 100644 endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.storage.node.field_source.yml delete mode 100644 endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.storage.node.field_summary.yml delete mode 100644 endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.storage.node.field_thumbnail.yml delete mode 100644 endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.storage.node.field_url.yml delete mode 100644 endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.storage.user.field_user_name.yml delete mode 100644 endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.storage.user.field_user_surname.yml delete mode 100644 endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/node.type.article.yml delete mode 100644 endpoints/bundle_AAAAA/tests/src/Kernel/GetArticleTypesTest.php delete mode 100644 endpoints/bundle_AAAAA/tests/src/Kernel/GetArticlesTest.php diff --git a/endpoints/NodesController.php b/endpoints/NodesController.php new file mode 100644 index 0000000..db961ea --- /dev/null +++ b/endpoints/NodesController.php @@ -0,0 +1,274 @@ +loadNodes($request, $lang, $category); + $nodes_response = $this->buildNodes($nodes, $lang, $category); + + $this->response = [ + 'code' => $this->statusCode, + 'count' => count($nodes_response), + 'nodes' => $nodes_response + ]; + return new JsonResponse($this->response, $this->statusCode); + } + + /* + * + * Response List + * + */ + private function buildNodes(array $nodes, $lang): array { + $nodes_response = []; + foreach ($nodes as $node) { + /* don't show node if it hasn't translation */ + if ( $node->hasTranslation($lang)) { + $node = $node->getTranslation($lang); + $published = $node->get('status')->value; + + /* USER - get user name */ + $uid = $node->getOwnerId(); + $user = \Drupal\user\Entity\User::load($uid); + $name = $user->getDisplayName(); + // AUTO_ADD_CODE_BELLOW_extractor + + $manager = ''; + if ($node->hasField('manager') && !$node->get('manager')->isEmpty()) { + $manager = $node->get('manager')->value; + } + + $manager = ''; + if ($node->hasField('manager') && !$node->get('manager')->isEmpty()) { + $manager = $node->get('manager')->value; + } + + $manager = ''; + if ($node->hasField('manager') && !$node->get('manager')->isEmpty()) { + $manager = $node->get('manager')->value; + } + + $manager = ''; + if ($node->hasField('manager') && !$node->get('manager')->isEmpty()) { + $manager = $node->get('manager')->value; + } + + $manager = ''; + if ($node->hasField('manager') && !$node->get('manager')->isEmpty()) { + $manager = $node->get('manager')->value; + } + + $manager = ''; + if ($node->hasField('manager') && !$node->get('manager')->isEmpty()) { + $manager = $node->get('manager')->value; + } + + $manager = ''; + if ($node->hasField('manager') && !$node->get('manager')->isEmpty()) { + $manager = $node->get('manager')->value; + } + + $manager = ''; + if ($node->hasField('manager') && !$node->get('manager')->isEmpty()) { + $manager = $node->get('manager')->value; + } + + $body = ''; + if ($node->hasField('body') && !$node->get('body')->isEmpty()) { + $body = $node->get('body')->value; + } + + if ($published == 1) { + $nodes_response[] = [ + 'id' => intval($node->id()), + 'title' => $node->getTitle(), + 'lang' => $node->get('langcode')->value, + 'alias' => $node->get('path')->alias, + 'author' => $name, + // AUTO_ADD_CODE_BELLOW_response +'manager' => $manager, +'manager' => $manager, +'manager' => $manager, +'manager' => $manager, +'manager' => $manager, +'manager' => $manager, +'manager' => $manager, +'manager' => $manager, + 'created' => $node->get('created')->value + ]; + } + } + } + return $nodes_response; + } + +// + // FIELD_EXPLODE + // + + /* + * + * Multivalue fields + * + */ + // private function getTerms(Node $node, string $field): array { + // $terms = $node->get($field)->referencedEntities(); + // $response = []; + // foreach ($terms as $term) { + // $name = $term->getName(); + // $tid = $term->id(); + // $response[] = array( + // 'name' => $name, + // 'id' => $tid + // ); + // } + // return $response; + // } + + // private function getFiles(Node $node, string $field): array { + // $uris = []; + // foreach ($node->get($field) as $value) { + // $file = \Drupal::entityTypeManager() + // ->getStorage('file') + // ->load($value->getValue()['target_id']); + // $url = \Drupal::service('file_url_generator') + // ->generateAbsoluteString($file->getFileUri()); + // $uris[] = array("url" => $url); + // } + // return $uris; + // } + + // private function getImages(Node $node, string $field): array { + // $uris = []; + // foreach ($node->get($field)->getValue() as $value) { + // $file = \Drupal::entityTypeManager() + // ->getStorage('file') + // ->load($value['target_id']); + // $url = \Drupal::service('file_url_generator') + // ->generateAbsoluteString($file->getFileUri()); + // $uris[] = array("url" => $url, "alt" => $value['alt']); + // } + // return $uris; + // } + + /* + * + * get response nodes + * + */ + private function loadNodes($request, $lang, $category) { + + /* build the query for nodes */ + $query = \Drupal::entityTypeManager() + ->getStorage('node') + ->getQuery() + ->accessCheck(false); + + /* if category exist as URL parameter, create a query condition */ + if ($category != 'all'){ + $query->condition(self::FIELD_CATEGORY, $category); + } + + /* if subcategory exist as URL query, create the query condition */ + if ($request->query->get('subcategory')){ + $or_group = $query->orConditionGroup(); + $terms = explode(',', $request->query->get('subcategory')); + foreach ($terms as $term) { + $or_group->condition(self::FIELD_SUBCATEGORY.'.target_id', $term); + } + $query->condition($or_group); + } + + /* add pager */ + $query->range($request->get('start'), $request->get('length')); + + /* sort results by DESC or ASC */ + if ($request->get('sort')) { + $sort = $request->get('sort'); + if(strcasecmp($sort, 'desc') == 0 || strcasecmp($sort, 'asc') == 0){ + $sort = $request->get('sort'); + } + else{ + $sort = 'DESC'; + } + } + else{ + $sort = 'DESC'; + } + + /* sort results by field */ + if ($request->get('sortby')) { + $sortby = $request->get('sortby'); + if(strcasecmp($sortby, 'title') == 0 || strcasecmp($sortby, 'created') == 0){ + $sortby = $request->get('sortby'); + } + else{ + $sortby = 'created'; + } + } + else{ + $sortby = 'title'; + } + + /* execute query to get node ids */ + $nodeIds = $query + ->condition('type', self::NODE_TYPE) + ->sort($sortby, $sort, $lang) + ->execute(); + + /* get nodes from ids */ + $nodes=\Drupal::entityTypeManager() + ->getStorage('node') + ->loadMultiple($nodeIds); + + /* Response List */ + $nodeList=[]; + foreach ($nodes as $node) { + $tid = $node->id(); + $nodeList[$tid] = $node->hasTranslation($lang) ? $node->getTranslation($lang) : $node; + $node->currentTranslation = $lang; + } + return $nodeList; + } + // \Drupal::logger('Bundle publication')->notice(''.$some_var); +} diff --git a/endpoints/NodesController.php.bk b/endpoints/NodesController.php.bk new file mode 100644 index 0000000..2db5330 --- /dev/null +++ b/endpoints/NodesController.php.bk @@ -0,0 +1,289 @@ +loadNodes($request, $lang, $category); + $nodes_response = $this->buildNodes($nodes, $lang, $category); + + $this->response = [ + 'code' => $this->statusCode, + 'count' => count($nodes_response), + 'nodes' => $nodes_response + ]; + return new JsonResponse($this->response, $this->statusCode); + } + + /* + * + * Response List + * + */ + private function buildNodes(array $nodes, $lang): array { + $nodes_response = []; + foreach ($nodes as $node) { + /* don't show node if it hasn't translation */ + if ( $node->hasTranslation($lang)) { + $node = $node->getTranslation($lang); + $published = $node->get('status')->value; + + /* USER - get user name */ + $uid = $node->getOwnerId(); + $user = \Drupal\user\Entity\User::load($uid); + $name = $user->getDisplayName(); + // + // FIELD_EXTRACT + // + + $body = ''; + if ($node->hasField('body') && !$node->get('body')->isEmpty()) { + $body = $node->get('body')->value; + } + /* BODY Field - absolute urls for body inline images */ + // $base_url = Url::fromRoute('')->setAbsolute()->toString(); + // $url_components = parse_url($base_url); + // $domain = $url_components['scheme'].'://'.$url_components['host'].':'.$url_components['port']; + // $body = str_replace( + // '/sites/default/', + // $domain.'/sites/default/', + // $node->get('body')->value + // ); + + /* LINK Field */ + // $field_link = []; + // if ($node->hasField('field_link') && !$node->get('field_link')->isEmpty()) { + // $link_field = $node->get('field_link')->first(); + // $url = $link_field->getUrl(); + // $title = $link_field->getTitle(); + // if ($url) { + // $field_link['url'] = $url->toString(); + // } + // if ($title) { + // $field_link['title'] = $link_field->getTitle(); + // } else { + // $field_link['title'] = $url->toString();; + // } + // } + + /* GEOLOCATION Field */ + // $field_geolocation = []; + // if ($node->hasField('field_geolocation') && !$node->get('field_geolocation')->isEmpty()) { + // $geolocation_field = $node->get('field_geolocation')->first(); + // $latitude = $geolocation_field->lat; + // $longitude = $geolocation_field->lng; + // if ($latitude && $longitude) { + // $field_geolocation['lat'] = $latitude; + // $field_geolocation['lng'] = $longitude; + // } + // } + + if ($published == 1) { + $nodes_response[] = [ + 'id' => intval($node->id()), + 'title' => $node->getTitle(), + 'lang' => $node->get('langcode')->value, + 'alias' => $node->get('path')->alias, + 'author' => $name, + // + // FIELD_RESPONSE + // + // 'field_geolocation' => $field_geolocation, + // 'field_link' => $field_link, + 'body' => $body, + // 'file' => $this->getFiles($node, 'field_file'), + // 'image' => $this->getImages($node, 'field_image'), + // 'category_id' => ( + // $node + // ->get(self::FIELD_CATEGORY) + // ->entity)?\Drupal::service('entity.repository') + // ->getTranslationFromContext( + // $node->get(self::FIELD_CATEGORY)->entity, + // $node->currentTranslation + // )->id():'', + // 'category_label' => ( + // $node + // ->get(self::FIELD_CATEGORY) + // ->entity)?\Drupal::service('entity.repository') + // ->getTranslationFromContext( + // $node->get(self::FIELD_CATEGORY)->entity, + // $node->currentTranslation + // )->getName():'', + // 'subcategory' => $this->getTerms($node, self::FIELD_SUBCATEGORY) + 'created' => $node->get('created')->value + ]; + } + } + } + return $nodes_response; + } + +// + // FIELD_EXPLODE + // + + /* + * + * Multivalue fields + * + */ + // private function getTerms(Node $node, string $field): array { + // $terms = $node->get($field)->referencedEntities(); + // $response = []; + // foreach ($terms as $term) { + // $name = $term->getName(); + // $tid = $term->id(); + // $response[] = array( + // 'name' => $name, + // 'id' => $tid + // ); + // } + // return $response; + // } + + // private function getFiles(Node $node, string $field): array { + // $uris = []; + // foreach ($node->get($field) as $value) { + // $file = \Drupal::entityTypeManager() + // ->getStorage('file') + // ->load($value->getValue()['target_id']); + // $url = \Drupal::service('file_url_generator') + // ->generateAbsoluteString($file->getFileUri()); + // $uris[] = array("url" => $url); + // } + // return $uris; + // } + + // private function getImages(Node $node, string $field): array { + // $uris = []; + // foreach ($node->get($field)->getValue() as $value) { + // $file = \Drupal::entityTypeManager() + // ->getStorage('file') + // ->load($value['target_id']); + // $url = \Drupal::service('file_url_generator') + // ->generateAbsoluteString($file->getFileUri()); + // $uris[] = array("url" => $url, "alt" => $value['alt']); + // } + // return $uris; + // } + + /* + * + * get response nodes + * + */ + private function loadNodes($request, $lang, $category) { + + /* build the query for nodes */ + $query = \Drupal::entityTypeManager() + ->getStorage('node') + ->getQuery() + ->accessCheck(false); + + /* if category exist as URL parameter, create a query condition */ + if ($category != 'all'){ + $query->condition(self::FIELD_CATEGORY, $category); + } + + /* if subcategory exist as URL query, create the query condition */ + if ($request->query->get('subcategory')){ + $or_group = $query->orConditionGroup(); + $terms = explode(',', $request->query->get('subcategory')); + foreach ($terms as $term) { + $or_group->condition(self::FIELD_SUBCATEGORY.'.target_id', $term); + } + $query->condition($or_group); + } + + /* add pager */ + $query->range($request->get('start'), $request->get('length')); + + /* sort results by DESC or ASC */ + if ($request->get('sort')) { + $sort = $request->get('sort'); + if(strcasecmp($sort, 'desc') == 0 || strcasecmp($sort, 'asc') == 0){ + $sort = $request->get('sort'); + } + else{ + $sort = 'DESC'; + } + } + else{ + $sort = 'DESC'; + } + + /* sort results by field */ + if ($request->get('sortby')) { + $sortby = $request->get('sortby'); + if(strcasecmp($sortby, 'title') == 0 || strcasecmp($sortby, 'created') == 0){ + $sortby = $request->get('sortby'); + } + else{ + $sortby = 'created'; + } + } + else{ + $sortby = 'title'; + } + + /* execute query to get node ids */ + $nodeIds = $query + ->condition('type', self::NODE_TYPE) + ->sort($sortby, $sort, $lang) + ->execute(); + + /* get nodes from ids */ + $nodes=\Drupal::entityTypeManager() + ->getStorage('node') + ->loadMultiple($nodeIds); + + /* Response List */ + $nodeList=[]; + foreach ($nodes as $node) { + $tid = $node->id(); + $nodeList[$tid] = $node->hasTranslation($lang) ? $node->getTranslation($lang) : $node; + $node->currentTranslation = $lang; + } + return $nodeList; + } + // \Drupal::logger('Bundle publication')->notice(''.$some_var); +} diff --git a/endpoints/add-fields.sh b/endpoints/add-fields.sh index 6b011e1..939ef41 100755 --- a/endpoints/add-fields.sh +++ b/endpoints/add-fields.sh @@ -3,7 +3,7 @@ # # example: # -# add-fields.sh klimatologia4/web/modules/custom/src/Nodes.php manager string +# add-fields.sh klimatologia4/web/modules/custom/src/Nodes.php string manager # # @@ -14,54 +14,65 @@ B="\e[0;34m" W="\e[0;97m" E="\e[00m" -# Check parameters +# Check for 3 parameters [ $# -ne 3 ] && echo 'Parameter missing' && exit # Check Target file -PHP="${1}" -[ ! -f ${PHP} ] && echo 'File ${PHP} does not exist' && exit +DST_FILE="${1}" +[ ! -f ${DSTS_FILE} ] && echo 'File ${DSTS_FILE} does not exist' && exit # Field name -NAME="${2}" +NAME="${3}" # Field source files -TYPE="${3}" +TYPE="${2}" FIELD_DIR="/root/dev/endpoints/endpoint_get_fields/" -ls -1 $FIELD_DIR | grep -E "${TYPE}_(extractor|response|splitter)" > /dev/null +ls -1 $FIELD_DIR | grep -E "${TYPE}-(extractor|response|splitter)" > /dev/null [ "$?" -ne 0 ] && echo -e "File for field ${R}${TYPE}${E} not found" # # Iterate source files # -for FILE in `ls -1 $FIELD_DIR | grep -E "^${TYPE}_(extractor|response|splitter)"`; do - COMMENT=$(echo ${FILE} | awk -F_ '{print $2}') - COMMENT=$(echo ${FILE} | awk -F_ '{print $2}') - echo Adding 🍓 ${FILE} to 📩 $(basename ${PHP}) +for SRC_FILE in `ls -1 $FIELD_DIR | grep -E "^${TYPE}-(extractor|response|splitter)"`; do + COMMENT=$(echo ${SRC_FILE} | awk -F- '{print "// AUTO_ADD_CODE_BELLOW_"$2}') + NEW_CODE=$(cat ${FIELD_DIR}/${SRC_FILE} | sed -e "s/FFFFF/${NAME}/g") + COMMENT_LINE=$(grep -n "$COMMENT" "$DST_FILE" | cut -d ":" -f 1) + INSERT_LINE=$((${COMMENT_LINE} + 1)) + echo -e " 📩 ${W}SOURCE :${E} ${SRC_FILE}" + echo -e " 📩 ${W}DESTGINATION :${E} $(basename ${DST_FILE})" + echo -e " 🏁 ${W}AFTER COMMENT :${E} ${COMMENT}" + echo -e " 🏁 ${W}INSERT LINE :${E} ${INSERT_LINE}" + echo -e " đŸ§© ${W}CODE :${E} ${NEW_CODE}" + + awk -v insert="${INSERT_LINE}" -v text="${NEW_CODE}" 'NR == insert {print text} {print}' "$DST_FILE" > tmpfile && mv tmpfile "$DST_FILE" + + echo done exit + + comment="// FIELDS " ${} exit -new_code=$(cat << 'EOF' - -EOF -) +# new_code=$(cat << 'EOF' +# +# EOF +# ) # Find the line number of the comment -comment_line=$(grep -n "$comment" "$php_file" | cut -d ":" -f 1) +comment_line=$(grep -n "$comment" "$DST_FILE" | cut -d ":" -f 1) if [[ -n "$comment_line" ]]; then # Calculate the line number to insert the new code insert_line=$((comment_line + 1)) # Insert the new code into the PHP file - awk -v insert="$insert_line" -v text="$new_code" 'NR == insert {print text} {print}' "$php_file" > tmpfile && mv tm -pfile "$php_file" + awk -v insert="$insert_line" -v text="$NEW_CODE" 'NR == insert {print text} {print}' "$DST_FILES" > tmpfile && mv tmpfile "$DST_FILE" echo "New code added successfully!" else diff --git a/endpoints/bundle_AAAAA/bundle_AAAAA.info.yml b/endpoints/bundle_AAAAA/bundle_AAAAA.info.yml deleted file mode 100644 index 6c6b0b4..0000000 --- a/endpoints/bundle_AAAAA/bundle_AAAAA.info.yml +++ /dev/null @@ -1,8 +0,0 @@ -name: 'AAAAA bundle' -description: 'AAAAA bundle' -package: DOTSOFT - -type: module -version: 1.0 - -core_version_requirement: ^10 diff --git a/endpoints/bundle_AAAAA/bundle_AAAAA.routing.yml b/endpoints/bundle_AAAAA/bundle_AAAAA.routing.yml deleted file mode 100644 index dc3c137..0000000 --- a/endpoints/bundle_AAAAA/bundle_AAAAA.routing.yml +++ /dev/null @@ -1,39 +0,0 @@ -bundle_AAAAA.node: - path: '/api/{lang}/AAAAAs/{alias}' - defaults: - _controller: 'Drupal\bundle_AAAAA\Controller\NodeController::getNode' - methods: [GET] - requirements: - _access: 'TRUE' - options: - no_cache: 'TRUE' - -bundle_AAAAA.nodes: - path: '/api/{lang}/AAAAAs' - defaults: - _controller: 'Drupal\bundle_AAAAA\Controller\NodesController::getNodes' - methods: [GET] - requirements: - _access: 'TRUE' - options: - no_cache: 'TRUE' - -# bundle_AAAAA.categories: -# path: '/api/{lang}/AAAAAs/categories' -# defaults: -# _controller: 'Drupal\bundle_AAAAA\Controller\CategoryController::getCategories' -# methods: [GET] -# requirements: -# _access: 'TRUE' -# options: -# no_cache: 'TRUE' - -# bundle_AAAAA.nodes_category: -# path: '/api/{lang}/AAAAAs/categories/{category}' -# defaults: -# _controller: 'Drupal\bundle_AAAAA\Controller\NodesController::getNodes' -# methods: [GET] -# requirements: -# _access: 'TRUE' -# options: -# no_cache: 'TRUE' diff --git a/endpoints/bundle_AAAAA/src/Controller/CategoryController.php b/endpoints/bundle_AAAAA/src/Controller/CategoryController.php deleted file mode 100644 index 00b63f2..0000000 --- a/endpoints/bundle_AAAAA/src/Controller/CategoryController.php +++ /dev/null @@ -1,65 +0,0 @@ -response = [ - 'code' => $this->statusCode, - 'lang' => $lang, - 'categories' => $this->buildVocabulary($lang)]; - - return new JsonResponse($this->response, $this->statusCode); - } - - // RESPONSE ARRAY - - private function buildVocabulary($lang): array { - $terms = $this->loadTerms($lang); - $terms_response = []; - foreach ($terms as $type) { - $terms_response[] = [ - 'id' => $type->id(), - 'name' => $type->getName() - ]; - } - return $terms_response; - } - - // RESPONSE ARRAY VALUES - - private function loadTerms($lang) { - - // All terms from the vocabulary - $terms=\Drupal::entityTypeManager() - ->getStorage('taxonomy_term') - ->loadByProperties([ - 'vid' => self::VOCABULARY, - ]); - - // Current language only - $termList=[]; - foreach($terms as $term) { - if($term->hasTranslation($lang)){ - $tid = $term->id(); - $translated_term = \Drupal::service('entity.repository')->getTranslationFromContext($term, $lang); - $termList[$tid] = $translated_term; - } - } - return $termList; - } - -} diff --git a/endpoints/bundle_AAAAA/src/Controller/NodeController.php b/endpoints/bundle_AAAAA/src/Controller/NodeController.php deleted file mode 100644 index 2a97f9d..0000000 --- a/endpoints/bundle_AAAAA/src/Controller/NodeController.php +++ /dev/null @@ -1,163 +0,0 @@ -errorAliasMissing(); - return new JsonResponse($this->response, $this->statusCode); - } - - // check if alias exist in drupal - $path_alias = '/'.$alias; - $path = \Drupal::service('path_alias.manager')->getPathByAlias($path_alias); - if ( $path_alias == $path) { - $this->errorNodeNotExist($alias, $path); - return new JsonResponse($this->response, $this->statusCode); - } - - // check if node has translation - $nid = Url::fromUri('internal:' . $path_alias)->getRouteParameters()['node']; - $node = \Drupal::entityTypeManager()->getStorage('node')->load($nid); - if (! $node->hasTranslation($lang)) { - $this->errorTranslationNotExist($lang, $alias); - return new JsonResponse($this->response, $this->statusCode); - } - - // build response - $this->buildNodeResponse($lang, $alias); - return new JsonResponse($this->response, $this->statusCode); - } - - // Response - - private function buildNodeResponse($lang, $alias) { - $path = \Drupal::service('path_alias.manager')->getPathByAlias($alias); - $nid = Url::fromUri('internal:/' . $path)->getRouteParameters()['node']; - $node = \Drupal::entityTypeManager()->getStorage('node')->load($nid)->getTranslation($lang); - - $uid = $node->getOwnerId(); - $user = \Drupal\user\Entity\User::load($uid); - $name = $user->getDisplayName(); - - $this->response = [ - 'code' => $this->statusCode, - 'alias' => $alias, - 'path' => $path, - 'nid' => $nid, - 'title' => $node->get('title')->value, - 'body' => $node->get('body')->value, - 'lang' => $node->get('langcode')->value, - 'alias' => $node->get('path')->alias, - 'created' => $node->get('created')->value, - 'author' => $name, - // 'files' => $this->getFiles($node, 'field_file'), - // 'images' => $this->getImages($node, 'field_image'), - // 'category' => $this->getTerms($node, self::FIELD_CATEGORY) - // // single value taxonomy field - // 'tag' => ( - // $node - // ->get('field_tags') - // ->entity)?\Drupal::service('entity.repository') - // ->getTranslationFromContext( - // $node->get('field_tags')->entity, - // $node->currentTranslation - // )->getName():'' - ]; - } - - - // Multiple vallue fields - - // private function getTerms(Node $node, string $field): array { - // $terms = $node->get($field)->referencedEntities(); - // $response = []; - // foreach ($terms as $term) { - // $name = $term->getName(); - // $tid = $term->id(); - // $response[] = array( - // 'name' => $name, - // 'id' => $tid - // ); - // } - // return $response; - // } - - // private function getFiles(Node $node, string $field): array { - // $uris = []; - // foreach ($node->get($field) as $value) { - // $file = \Drupal::entityTypeManager() - // ->getStorage('file') - // ->load($value->getValue()['target_id']); - // - // $url = \Drupal::service('file_url_generator') - // ->generateAbsoluteString($file->getFileUri()); - // - // $uris[] = array("url" => $url); - // } - // return $uris; - // } - - // private function getImages(Node $node, string $field): array { - // $uris = []; - // foreach ($node->get($field)->getValue() as $value) { - // $file = \Drupal::entityTypeManager() - // ->getStorage('file') - // ->load($value['target_id']); - // $url = \Drupal::service('file_url_generator') - // ->generateAbsoluteString($file->getFileUri()); - // $uris[] = array("url" => $url, "alt" => $value['alt']); - // } - // return $uris; - // } - - // Error functions - - private function errorNodeNotExist($alias, $path) { - $this->statusCode = self::HTTP_NOT_FOUND; - $this->response = [ - 'code' => $this->statusCode, - "message" => "Node with alias " . $alias . " does not exist." . $path - ]; - } - - private function errorTranslationNotExist($lang, $alias) { - $this->statusCode = self::HTTP_NOT_FOUND; - $this->response = [ - 'code' => $this->statusCode, - "message" => "Node with alias " . $alias . " does not have a translation for language code " . $lang - ]; - } - - private function errorAliasMissing() { - $this->statusCode = self::HTTP_BAD_REQUEST; - $this->response = [ - 'code' => $this->statusCode, - 'message' => 'Query parameter "alias" is mandatory and is missing.' - ]; - } - // \Drupal::logger('hello')->notice(''.$nid); -} diff --git a/endpoints/bundle_AAAAA/src/Controller/NodesController.php b/endpoints/bundle_AAAAA/src/Controller/NodesController.php deleted file mode 100644 index b926bb1..0000000 --- a/endpoints/bundle_AAAAA/src/Controller/NodesController.php +++ /dev/null @@ -1,238 +0,0 @@ -loadNodes($request, $lang, $category); - $nodes_response = $this->buildNodes($nodes, $lang, $category); - - $this->response = [ - 'code' => $this->statusCode, - 'count' => count($nodes_response), - 'nodes' => $nodes_response - ]; - return new JsonResponse($this->response, $this->statusCode); - } - - // Response List - - private function buildNodes(array $nodes, $lang): array { - $nodes_response = []; - foreach ($nodes as $node) { - // don't show node if it hasn't translation - if ( $node->hasTranslation($lang)) { - $node = $node->getTranslation($lang); - $published = $node->get('status')->value; - - // get user name - $uid = $node->getOwnerId(); - $user = \Drupal\user\Entity\User::load($uid); - $name = $user->getDisplayName(); - - if ($published == 1) { - $nodes_response[] = [ - 'id' => $node->id(), - 'title' => $node->getTitle(), - 'body' => $node->get('body')->value, - 'lang' => $node->get('langcode')->value, - 'created' => $node->get('created')->value, - 'alias' => $node->get('path')->alias, - 'author' => $name, - // 'file' => $this->getFiles($node, 'field_file'), - // 'image' => $this->getImages($node, 'field_image'), - // 'category_id' => ( - // $node - // ->get(self::FIELD_CATEGORY) - // ->entity)?\Drupal::service('entity.repository') - // ->getTranslationFromContext( - // $node->get(self::FIELD_CATEGORY)->entity, - // $node->currentTranslation - // )->id():'', - // 'category_label' => ( - // $node - // ->get(self::FIELD_CATEGORY) - // ->entity)?\Drupal::service('entity.repository') - // ->getTranslationFromContext( - // $node->get(self::FIELD_CATEGORY)->entity, - // $node->currentTranslation - // )->getName():'', - // 'subcategory_id' => ( - // $node - // ->get(self::FIELD_SUBCATEGORY) - // ->entity)?\Drupal::service('entity.repository') - // ->getTranslationFromContext( - // $node->get(self::FIELD_SUBCATEGORY)->entity, - // $node->currentTranslation - // )->id():'', - // 'subcategory_label' => ( - // $node - // ->get(self::FIELD_SUBCATEGORY) - // ->entity)?\Drupal::service('entity.repository') - // ->getTranslationFromContext( - // $node->get(self::FIELD_SUBCATEGORY)->entity, - // $node->currentTranslation - // )->getName():'', - // 'terms' => $this->getTerms($node, 'field_tags') - ]; - } - } - } - return $nodes_response; - } - - // Multivalue fields - - private function getTerms(Node $node, string $field): array { - $terms = $node->get($field)->referencedEntities(); - $response = []; - foreach ($terms as $term) { - $name = $term->getName(); - $tid = $term->id(); - $response[] = array( - 'name' => $name, - 'id' => $tid - ); - } - return $response; - } - - private function getFiles(Node $node, string $field): array { - $uris = []; - foreach ($node->get($field) as $value) { - $file = \Drupal::entityTypeManager() - ->getStorage('file') - ->load($value->getValue()['target_id']); - $url = \Drupal::service('file_url_generator') - ->generateAbsoluteString($file->getFileUri()); - $uris[] = array("url" => $url); - } - return $uris; - } - - private function getImages(Node $node, string $field): array { - $uris = []; - foreach ($node->get($field)->getValue() as $value) { - $file = \Drupal::entityTypeManager() - ->getStorage('file') - ->load($value['target_id']); - $url = \Drupal::service('file_url_generator') - ->generateAbsoluteString($file->getFileUri()); - $uris[] = array("url" => $url, "alt" => $value['alt']); - } - return $uris; - } - - - // get response data - - private function loadNodes($request, $lang, $category) { - - // build query for nodes - $query = \Drupal::entityTypeManager() - ->getStorage('node') - ->getQuery() - ->accessCheck(false); - - // category is a URL parameter, matched with a taxonomy field - if ($category != 'all'){ - $query->condition(self::FIELD_CATEGORY, $category); - } - - // add subcategory URL query filter, matched with a taxonomy field - if ($request->query->get('subcategory')){ - $or_group = $query->orConditionGroup(); - $terms = explode(',', $request->query->get('subcategory')); - foreach ($terms as $term) { - $or_group->condition(self::FIELD_SUBCATEGORY.'.target_id', $term); - } - $query->condition($or_group); - } - // add pager - $query->range($request->get('start'), $request->get('length')); - - // sort results by DESC or ASC - if ($request->get('sort')) { - $sort = $request->get('sort'); - if(strcasecmp($sort, 'desc') == 0 || strcasecmp($sort, 'asc') == 0){ - $sort = $request->get('sort'); - } - else{ - $sort = 'DESC'; - } - } - else{ - $sort = 'DESC'; - } - - // sort results by field - if ($request->get('sortby')) { - $sortby = $request->get('sortby'); - if(strcasecmp($sortby, 'title') == 0 || strcasecmp($sortby, 'created') == 0){ - $sortby = $request->get('sortby'); - } - else{ - $sortby = 'created'; - } - } - else{ - $sortby = 'created'; - } - - // execute query to get node ids - $nodeIds = $query - ->condition('type', self::NODE_TYPE) - ->sort($sortby, $sort, $lang) - ->execute(); - - // get nodes from ids - $nodes=\Drupal::entityTypeManager() - ->getStorage('node') - ->loadMultiple($nodeIds); - - // Response List - $nodeList=[]; - foreach ($nodes as $node) { - $tid = $node->id(); - $nodeList[$tid] = $node->hasTranslation($lang) ? $node->getTranslation($lang) : $node; - $node->currentTranslation = $lang; - } - return $nodeList; - - } - // \Drupal::logger('Bundle AAAAA')->notice(''.$some_var); -} diff --git a/endpoints/bundle_AAAAA/tests/modules/builders_test/builders_test.info.yml b/endpoints/bundle_AAAAA/tests/modules/builders_test/builders_test.info.yml deleted file mode 100644 index fed70b2..0000000 --- a/endpoints/bundle_AAAAA/tests/modules/builders_test/builders_test.info.yml +++ /dev/null @@ -1,6 +0,0 @@ -name: 'Builders test' -description: 'Builders test' -package: Testing - -type: module -version: 1.0 diff --git a/endpoints/bundle_AAAAA/tests/modules/builders_test/src/ArticleBuilder.php b/endpoints/bundle_AAAAA/tests/modules/builders_test/src/ArticleBuilder.php deleted file mode 100644 index 2313550..0000000 --- a/endpoints/bundle_AAAAA/tests/modules/builders_test/src/ArticleBuilder.php +++ /dev/null @@ -1,101 +0,0 @@ -node = Node::create([ - 'type' => 'article', - 'langcode' => $this->languageCode, - 'title' => $this->title, - 'field_article_type' => $this->typeId, - 'field_article_description' => $this->description, - 'field_thumbnail' => $this->thumbnail, - 'uid' => $this->authorId, - 'created' => $this->created - ]); - } - - public static function create(): ArticleBuilder { - return new ArticleBuilder(); - } - - public function withLanguageCode(string $languageCode): ArticleBuilder { - $this->languageCode = $languageCode; - $this->node->set('langcode', $this->languageCode); - return $this; - } - - public function withType(int $typeId): ArticleBuilder { - $this->typeId = $typeId; - $this->node->set('field_article_type', $this->typeId); - return $this; - } - - public function withSummary(string $summary): ArticleBuilder { - $this->summary = $summary; - $this->node->set('field_summary', $this->summary); - return $this; - } - - public function withPhotos(array $photos): ArticleBuilder { - $this->photos = $photos; - $this->node->set('field_article_photos', $this->photos); - return $this; - } - - public function withVideos(array $videos): ArticleBuilder { - $this->videos = $videos; - $this->node->set('field_article_videos', $this->videos); - return $this; - } - - public function withFiles(array $files): ArticleBuilder { - $this->files = $files; - $this->node->set('field_article_files', $this->files); - return $this; - } - - public function withSources(array $sources): ArticleBuilder { - $this->sources = $sources; - $this->node->set('field_source', $this->sources); - return $this; - } - - public function withLinks(array $links): ArticleBuilder { - $this->links = $links; - $this->node->set('field_url', $this->links); - return $this; - } - - public function withFacebookPage(string $facebookPage): ArticleBuilder { - $this->facebookPage = $facebookPage; - $this->node->set('field_facebook_page', $this->facebookPage); - return $this; - } - - public function build(): Node { - $this->node->save(); - return $this->node; - } - -} diff --git a/endpoints/bundle_AAAAA/tests/modules/builders_test/src/ArticleTypeBuilder.php b/endpoints/bundle_AAAAA/tests/modules/builders_test/src/ArticleTypeBuilder.php deleted file mode 100644 index 8974088..0000000 --- a/endpoints/bundle_AAAAA/tests/modules/builders_test/src/ArticleTypeBuilder.php +++ /dev/null @@ -1,36 +0,0 @@ -term = Term::create([ - 'vid' => 'article_types', - 'langcode' => $this->languageCode, - 'name' => $this->name - ]); - } - - public static function create(): ArticleTypeBuilder { - return new ArticleTypeBuilder(); - } - - public function withLanguageCode(string $languageCode): ArticleTypeBuilder { - $this->languageCode = $languageCode; - $this->term->set('langcode', $this->languageCode); - return $this; - } - - public function build(): Term { - $this->term->save(); - return $this->term; - } - -} diff --git a/endpoints/bundle_AAAAA/tests/modules/builders_test/src/FileBuilder.php b/endpoints/bundle_AAAAA/tests/modules/builders_test/src/FileBuilder.php deleted file mode 100644 index 88fe796..0000000 --- a/endpoints/bundle_AAAAA/tests/modules/builders_test/src/FileBuilder.php +++ /dev/null @@ -1,34 +0,0 @@ -file = File::create([ - 'uri' => $this->baseUrl . '/' . $this->fileName - ]); - } - - public static function create(): FileBuilder { - return new FileBuilder(); - } - - public function withFileName(string $fileName): FileBuilder { - $this->fileName = $fileName; - $this->file->set('uri', $this->baseUrl . '/' . $this->fileName); - return $this; - } - - public function build(): File { - $this->file->save(); - return $this->file; - } - -} diff --git a/endpoints/bundle_AAAAA/tests/modules/builders_test/src/PageBuilder.php b/endpoints/bundle_AAAAA/tests/modules/builders_test/src/PageBuilder.php deleted file mode 100644 index c599712..0000000 --- a/endpoints/bundle_AAAAA/tests/modules/builders_test/src/PageBuilder.php +++ /dev/null @@ -1,30 +0,0 @@ -node = Node::create([ - 'type' => 'page', - 'langcode' => $this->languageCode, - 'title' => $this->title - ]); - } - - public static function create(): PageBuilder { - return new PageBuilder(); - } - - public function build(): Node { - $this->node->save(); - return $this->node; - } - -} diff --git a/endpoints/bundle_AAAAA/tests/modules/builders_test/src/UserBuilder.php b/endpoints/bundle_AAAAA/tests/modules/builders_test/src/UserBuilder.php deleted file mode 100644 index c839d34..0000000 --- a/endpoints/bundle_AAAAA/tests/modules/builders_test/src/UserBuilder.php +++ /dev/null @@ -1,30 +0,0 @@ -user = User::create([ - 'name' => $this->name . '@' . $this->surname . '.com', - 'field_user_name' => $this->name, - 'field_user_surname' => $this->surname - ]); - } - - public static function create(): UserBuilder { - return new UserBuilder(); - } - - public function build(): User { - $this->user->save(); - return $this->user; - } - -} diff --git a/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/bundle_article_test.info.yml b/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/bundle_article_test.info.yml deleted file mode 100644 index 67ad7c3..0000000 --- a/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/bundle_article_test.info.yml +++ /dev/null @@ -1,6 +0,0 @@ -name: 'Article bundle test' -description: 'Article bundle test' -package: Testing - -type: module -version: 1.0 diff --git a/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.field.node.article.field_article_description.yml b/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.field.node.article.field_article_description.yml deleted file mode 100644 index c067d4f..0000000 --- a/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.field.node.article.field_article_description.yml +++ /dev/null @@ -1,20 +0,0 @@ -langcode: en -status: true -dependencies: - config: - - field.storage.node.field_article_description - - node.type.article - module: - - text -id: node.article.field_article_description -field_name: field_article_description -entity_type: node -bundle: article -label: 'Description' -description: '' -required: true -translatable: false -default_value: { } -default_value_callback: '' -settings: { } -field_type: text_long diff --git a/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.field.node.article.field_article_files.yml b/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.field.node.article.field_article_files.yml deleted file mode 100644 index ebd4622..0000000 --- a/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.field.node.article.field_article_files.yml +++ /dev/null @@ -1,26 +0,0 @@ -langcode: en -status: true -dependencies: - config: - - field.storage.node.field_article_files - - node.type.article - module: - - file -id: node.article.field_article_files -field_name: field_article_files -entity_type: node -bundle: article -label: 'Files' -description: '' -required: false -translatable: false -default_value: { } -default_value_callback: '' -settings: - file_directory: '[date:custom:Y]-[date:custom:m]' - file_extensions: 'txt rtf doc csv docx ppt pptx xls xlsx xlsm pdf odf odg odp ods odt fodt fods fodp fodg key numbers pages asc zip ppsx svg' - max_filesize: '' - description_field: false - handler: 'default:file' - handler_settings: { } -field_type: file diff --git a/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.field.node.article.field_article_photos.yml b/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.field.node.article.field_article_photos.yml deleted file mode 100644 index 9f30672..0000000 --- a/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.field.node.article.field_article_photos.yml +++ /dev/null @@ -1,37 +0,0 @@ -langcode: el -status: true -dependencies: - config: - - field.storage.node.field_article_photos - - node.type.article - module: - - image -id: node.article.field_article_photos -field_name: field_article_photos -entity_type: node -bundle: article -label: 'Photos' -description: '' -required: false -translatable: false -default_value: { } -default_value_callback: '' -settings: - file_directory: '[date:custom:Y]-[date:custom:m]' - file_extensions: 'png gif jpg jpeg' - max_filesize: '' - max_resolution: '' - min_resolution: '' - alt_field: true - alt_field_required: true - title_field: true - title_field_required: false - default_image: - uuid: '' - alt: '' - title: '' - width: null - height: null - handler: 'default:file' - handler_settings: { } -field_type: image diff --git a/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.field.node.article.field_article_type.yml b/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.field.node.article.field_article_type.yml deleted file mode 100644 index 5e0e056..0000000 --- a/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.field.node.article.field_article_type.yml +++ /dev/null @@ -1,28 +0,0 @@ -langcode: en -status: true -dependencies: - config: - - field.storage.node.field_article_type - - node.type.article - - taxonomy.vocabulary.article_types -id: node.article.field_article_type -field_name: field_article_type -entity_type: node -bundle: article -label: 'Article type' -description: '' -required: false -translatable: false -default_value: { } -default_value_callback: '' -settings: - handler: 'default:taxonomy_term' - handler_settings: - target_bundles: - article_types: article_types - sort: - field: name - direction: asc - auto_create: false - auto_create_bundle: '' -field_type: entity_reference diff --git a/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.field.node.article.field_article_videos.yml b/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.field.node.article.field_article_videos.yml deleted file mode 100644 index e00f836..0000000 --- a/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.field.node.article.field_article_videos.yml +++ /dev/null @@ -1,26 +0,0 @@ -langcode: en -status: true -dependencies: - config: - - field.storage.node.field_article_videos - - node.type.article - module: - - file -id: node.article.field_article_videos -field_name: field_article_videos -entity_type: node -bundle: article -label: 'Videos' -description: '' -required: false -translatable: false -default_value: { } -default_value_callback: '' -settings: - file_directory: '[date:custom:Y]-[date:custom:m]' - file_extensions: 'mp4 ogv' - max_filesize: '' - description_field: false - handler: 'default:file' - handler_settings: { } -field_type: file diff --git a/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.field.node.article.field_facebook_page.yml b/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.field.node.article.field_facebook_page.yml deleted file mode 100644 index 101467e..0000000 --- a/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.field.node.article.field_facebook_page.yml +++ /dev/null @@ -1,22 +0,0 @@ -langcode: en -status: true -dependencies: - config: - - field.storage.node.field_facebook_page - - node.type.article - module: - - link -id: node.article.field_facebook_page -field_name: field_facebook_page -entity_type: node -bundle: article -label: 'Facebook page' -description: '' -required: false -translatable: false -default_value: { } -default_value_callback: '' -settings: - link_type: 17 - title: 1 -field_type: link diff --git a/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.field.node.article.field_source.yml b/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.field.node.article.field_source.yml deleted file mode 100644 index 0024ee3..0000000 --- a/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.field.node.article.field_source.yml +++ /dev/null @@ -1,22 +0,0 @@ -langcode: en -status: true -dependencies: - config: - - field.storage.node.field_source - - node.type.article - module: - - link -id: node.article.field_source -field_name: field_source -entity_type: node -bundle: article -label: 'Sources' -description: '' -required: false -translatable: false -default_value: { } -default_value_callback: '' -settings: - link_type: 17 - title: 1 -field_type: link diff --git a/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.field.node.article.field_summary.yml b/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.field.node.article.field_summary.yml deleted file mode 100644 index 185bd62..0000000 --- a/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.field.node.article.field_summary.yml +++ /dev/null @@ -1,20 +0,0 @@ -langcode: en -status: true -dependencies: - config: - - field.storage.node.field_summary - - node.type.article - module: - - text -id: node.article.field_summary -field_name: field_summary -entity_type: node -bundle: article -label: 'Summary' -description: '' -required: false -translatable: false -default_value: { } -default_value_callback: '' -settings: { } -field_type: text_long diff --git a/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.field.node.article.field_thumbnail.yml b/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.field.node.article.field_thumbnail.yml deleted file mode 100644 index e47a9fd..0000000 --- a/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.field.node.article.field_thumbnail.yml +++ /dev/null @@ -1,37 +0,0 @@ -langcode: en -status: true -dependencies: - config: - - field.storage.node.field_thumbnail - - node.type.article - module: - - image -id: node.article.field_thumbnail -field_name: field_thumbnail -entity_type: node -bundle: article -label: 'ΚΔΜτρÎčÎșÎź Ï†Ï‰Ï„ÎżÎłÏÎ±Ï†ÎŻÎ±' -description: '' -required: false -translatable: false -default_value: { } -default_value_callback: '' -settings: - file_directory: '[date:custom:Y]-[date:custom:m]' - file_extensions: 'png gif jpg jpeg' - max_filesize: '' - max_resolution: '' - min_resolution: '' - alt_field: true - alt_field_required: true - title_field: true - title_field_required: false - default_image: - uuid: '' - alt: '' - title: '' - width: null - height: null - handler: 'default:file' - handler_settings: { } -field_type: image diff --git a/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.field.node.article.field_url.yml b/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.field.node.article.field_url.yml deleted file mode 100644 index d2a74d5..0000000 --- a/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.field.node.article.field_url.yml +++ /dev/null @@ -1,22 +0,0 @@ -langcode: en -status: true -dependencies: - config: - - field.storage.node.field_url - - node.type.article - module: - - link -id: node.article.field_url -field_name: field_url -entity_type: node -bundle: article -label: 'Links' -description: '' -required: false -translatable: false -default_value: { } -default_value_callback: '' -settings: - link_type: 17 - title: 1 -field_type: link diff --git a/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.field.user.user.field_user_name.yml b/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.field.user.user.field_user_name.yml deleted file mode 100644 index 2d45fbd..0000000 --- a/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.field.user.user.field_user_name.yml +++ /dev/null @@ -1,19 +0,0 @@ -langcode: en -status: true -dependencies: - config: - - field.storage.user.field_user_name - module: - - user -id: user.user.field_user_name -field_name: field_user_name -entity_type: user -bundle: user -label: 'Name' -description: '' -required: true -translatable: false -default_value: { } -default_value_callback: '' -settings: { } -field_type: string diff --git a/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.field.user.user.field_user_surname.yml b/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.field.user.user.field_user_surname.yml deleted file mode 100644 index 645ae84..0000000 --- a/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.field.user.user.field_user_surname.yml +++ /dev/null @@ -1,19 +0,0 @@ -langcode: en -status: true -dependencies: - config: - - field.storage.user.field_user_surname - module: - - user -id: user.user.field_user_surname -field_name: field_user_surname -entity_type: user -bundle: user -label: 'Surname' -description: '' -required: true -translatable: false -default_value: { } -default_value_callback: '' -settings: { } -field_type: string diff --git a/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.storage.node.field_article_description.yml b/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.storage.node.field_article_description.yml deleted file mode 100644 index a63e632..0000000 --- a/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.storage.node.field_article_description.yml +++ /dev/null @@ -1,18 +0,0 @@ -langcode: en -status: true -dependencies: - module: - - node - - text -id: node.field_article_description -field_name: field_article_description -entity_type: node -type: text_long -settings: { } -module: text -locked: false -cardinality: 1 -translatable: true -indexes: { } -persist_with_no_fields: false -custom_storage: false diff --git a/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.storage.node.field_article_files.yml b/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.storage.node.field_article_files.yml deleted file mode 100644 index a4485a1..0000000 --- a/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.storage.node.field_article_files.yml +++ /dev/null @@ -1,22 +0,0 @@ -langcode: en -status: true -dependencies: - module: - - file - - node -id: node.field_article_files -field_name: field_article_files -entity_type: node -type: file -settings: - display_field: true - display_default: true - uri_scheme: public - target_type: file -module: file -locked: false -cardinality: -1 -translatable: true -indexes: { } -persist_with_no_fields: false -custom_storage: false diff --git a/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.storage.node.field_article_photos.yml b/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.storage.node.field_article_photos.yml deleted file mode 100644 index ce3af2c..0000000 --- a/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.storage.node.field_article_photos.yml +++ /dev/null @@ -1,29 +0,0 @@ -langcode: en -status: true -dependencies: - module: - - file - - image - - node -id: node.field_article_photos -field_name: field_article_photos -entity_type: node -type: image -settings: - uri_scheme: public - default_image: - uuid: '' - alt: '' - title: '' - width: null - height: null - target_type: file - display_field: false - display_default: false -module: image -locked: false -cardinality: -1 -translatable: true -indexes: { } -persist_with_no_fields: false -custom_storage: false diff --git a/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.storage.node.field_article_type.yml b/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.storage.node.field_article_type.yml deleted file mode 100644 index 6dd81b0..0000000 --- a/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.storage.node.field_article_type.yml +++ /dev/null @@ -1,19 +0,0 @@ -langcode: en -status: true -dependencies: - module: - - node - - taxonomy -id: node.field_article_type -field_name: field_article_type -entity_type: node -type: entity_reference -settings: - target_type: taxonomy_term -module: core -locked: false -cardinality: 1 -translatable: true -indexes: { } -persist_with_no_fields: false -custom_storage: false diff --git a/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.storage.node.field_article_videos.yml b/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.storage.node.field_article_videos.yml deleted file mode 100644 index c6b9847..0000000 --- a/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.storage.node.field_article_videos.yml +++ /dev/null @@ -1,22 +0,0 @@ -langcode: en -status: true -dependencies: - module: - - file - - node -id: node.field_article_videos -field_name: field_article_videos -entity_type: node -type: file -settings: - display_field: true - display_default: true - uri_scheme: public - target_type: file -module: file -locked: false -cardinality: -1 -translatable: true -indexes: { } -persist_with_no_fields: false -custom_storage: false diff --git a/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.storage.node.field_facebook_page.yml b/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.storage.node.field_facebook_page.yml deleted file mode 100644 index 2955555..0000000 --- a/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.storage.node.field_facebook_page.yml +++ /dev/null @@ -1,18 +0,0 @@ -langcode: en -status: true -dependencies: - module: - - link - - node -id: node.field_facebook_page -field_name: field_facebook_page -entity_type: node -type: link -settings: { } -module: link -locked: false -cardinality: 1 -translatable: true -indexes: { } -persist_with_no_fields: false -custom_storage: false diff --git a/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.storage.node.field_source.yml b/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.storage.node.field_source.yml deleted file mode 100644 index 6c682a1..0000000 --- a/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.storage.node.field_source.yml +++ /dev/null @@ -1,18 +0,0 @@ -langcode: en -status: true -dependencies: - module: - - link - - node -id: node.field_source -field_name: field_source -entity_type: node -type: link -settings: { } -module: link -locked: false -cardinality: -1 -translatable: true -indexes: { } -persist_with_no_fields: false -custom_storage: false diff --git a/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.storage.node.field_summary.yml b/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.storage.node.field_summary.yml deleted file mode 100644 index 45b33a8..0000000 --- a/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.storage.node.field_summary.yml +++ /dev/null @@ -1,18 +0,0 @@ -langcode: en -status: true -dependencies: - module: - - node - - text -id: node.field_summary -field_name: field_summary -entity_type: node -type: text_long -settings: { } -module: text -locked: false -cardinality: 1 -translatable: true -indexes: { } -persist_with_no_fields: false -custom_storage: false diff --git a/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.storage.node.field_thumbnail.yml b/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.storage.node.field_thumbnail.yml deleted file mode 100644 index 66fe3f4..0000000 --- a/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.storage.node.field_thumbnail.yml +++ /dev/null @@ -1,29 +0,0 @@ -langcode: en -status: true -dependencies: - module: - - file - - image - - node -id: node.field_thumbnail -field_name: field_thumbnail -entity_type: node -type: image -settings: - uri_scheme: public - default_image: - uuid: '' - alt: '' - title: '' - width: null - height: null - target_type: file - display_field: false - display_default: false -module: image -locked: false -cardinality: 1 -translatable: true -indexes: { } -persist_with_no_fields: false -custom_storage: false diff --git a/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.storage.node.field_url.yml b/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.storage.node.field_url.yml deleted file mode 100644 index 66e9816..0000000 --- a/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.storage.node.field_url.yml +++ /dev/null @@ -1,18 +0,0 @@ -langcode: en -status: true -dependencies: - module: - - link - - node -id: node.field_url -field_name: field_url -entity_type: node -type: link -settings: { } -module: link -locked: false -cardinality: -1 -translatable: true -indexes: { } -persist_with_no_fields: false -custom_storage: false diff --git a/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.storage.user.field_user_name.yml b/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.storage.user.field_user_name.yml deleted file mode 100644 index 4729510..0000000 --- a/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.storage.user.field_user_name.yml +++ /dev/null @@ -1,20 +0,0 @@ -langcode: en -status: true -dependencies: - module: - - user -id: user.field_user_name -field_name: field_user_name -entity_type: user -type: string -settings: - max_length: 255 - is_ascii: false - case_sensitive: false -module: core -locked: false -cardinality: 1 -translatable: true -indexes: { } -persist_with_no_fields: false -custom_storage: false diff --git a/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.storage.user.field_user_surname.yml b/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.storage.user.field_user_surname.yml deleted file mode 100644 index af7d1d1..0000000 --- a/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/field.storage.user.field_user_surname.yml +++ /dev/null @@ -1,20 +0,0 @@ -langcode: en -status: true -dependencies: - module: - - user -id: user.field_user_surname -field_name: field_user_surname -entity_type: user -type: string -settings: - max_length: 255 - is_ascii: false - case_sensitive: false -module: core -locked: false -cardinality: 1 -translatable: true -indexes: { } -persist_with_no_fields: false -custom_storage: false diff --git a/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/node.type.article.yml b/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/node.type.article.yml deleted file mode 100644 index 58610fc..0000000 --- a/endpoints/bundle_AAAAA/tests/modules/bundle_article_test/config/install/node.type.article.yml +++ /dev/null @@ -1,9 +0,0 @@ -langcode: en -status: true -name: 'Article' -type: article -description: '' -help: '' -new_revision: false -preview_mode: 1 -display_submitted: false diff --git a/endpoints/bundle_AAAAA/tests/src/Kernel/GetArticleTypesTest.php b/endpoints/bundle_AAAAA/tests/src/Kernel/GetArticleTypesTest.php deleted file mode 100644 index 1ed481c..0000000 --- a/endpoints/bundle_AAAAA/tests/src/Kernel/GetArticleTypesTest.php +++ /dev/null @@ -1,41 +0,0 @@ -installEntitySchema('taxonomy_term'); - } - - public function testShouldReturnListOfArticleTypesInRequestedLanguage() { - ArticleTypeBuilder::create()->build(); - ArticleTypeBuilder::create()->withLanguageCode('el')->build(); - ArticleTypeBuilder::create()->build(); - - $request = Request::create('/type/article?languageCode=en'); - $response = $this->container->get('http_kernel')->handle($request); - - $this->assertEquals(200, $response->getStatusCode()); - $this->assertEquals('{"code":200,"languageCode":"en","types":[{"id":"1","name":"Type"},{"id":"3","name":"Type"}]}', $response->getContent()); - } - - public function testShouldReturnErrorMessageWhenLanguageCodeQueryParameterIsMissing() { - $request = Request::create('/type/article'); - $response = $this->container->get('http_kernel')->handle($request); - - $this->assertEquals(400, $response->getStatusCode()); - $this->assertEquals('{"code":400,"message":"Query parameter \u0022languageCode\u0022 is mandatory and is missing."}', $response->getContent()); - } - -} diff --git a/endpoints/bundle_AAAAA/tests/src/Kernel/GetArticlesTest.php b/endpoints/bundle_AAAAA/tests/src/Kernel/GetArticlesTest.php deleted file mode 100644 index 2e8c2cb..0000000 --- a/endpoints/bundle_AAAAA/tests/src/Kernel/GetArticlesTest.php +++ /dev/null @@ -1,134 +0,0 @@ -installEntitySchema('taxonomy_term'); - $this->installEntitySchema('user'); - $this->installSchema('system', ['sequences']); - $this->installEntitySchema('node'); - $this->installEntitySchema('file'); - $this->installSchema('file', ['file_usage']); - $this->installConfig('bundle_article_test'); - } - - public function testShouldReturnListOfArticles() { - ArticleTypeBuilder::create()->build(); - FileBuilder::create()->build(); - UserBuilder::create()->build(); - PageBuilder::create()->build(); - ArticleBuilder::create()->build(); - ArticleBuilder::create()->build(); - - $request = Request::create('/articles?languageCode=en'); - $response = $this->container->get('http_kernel')->handle($request); - - $secondArticleAsJson = '{"id":"2","typeId":"1","typeName":"Type","title":"Title","summary":"","description":"Description","thumbnail":"https:\/\/example.com\/filename.jpg","photos":[],"videos":[],"files":[],"sources":[],"links":[],"facebookEvent":"","author":"Name Surname","date":"1234567890"}'; - $thirdArticleAsJson = '{"id":"3","typeId":"1","typeName":"Type","title":"Title","summary":"","description":"Description","thumbnail":"https:\/\/example.com\/filename.jpg","photos":[],"videos":[],"files":[],"sources":[],"links":[],"facebookEvent":"","author":"Name Surname","date":"1234567890"}'; - $this->assertEquals(200, $response->getStatusCode()); - $this->assertEquals('{"code":200,"languageCode":"en","articles":[' . $secondArticleAsJson . ',' . $thirdArticleAsJson . ']}', $response->getContent()); - } - - - public function testShouldReturnListOfArticlesInRequestedLanguage() { - ArticleTypeBuilder::create()->build(); - $photo = FileBuilder::create()->build(); - $video = FileBuilder::create()->withFileName('filename.mp4')->build(); - $file = FileBuilder::create()->withFileName('filename.pdf')->build(); - UserBuilder::create()->build(); - ArticleBuilder::create()->withSummary('Summary') - ->withPhotos([$photo->id(), $photo->id(), $photo->id()]) - ->withVideos([$video->id(), $video->id(), $video->id()]) - ->withFiles([$file->id(), $file->id(), $file->id()]) - ->withSources(['https://example.com/source1', 'https://example.com/source2', 'https://example.com/source3']) - ->withLinks(['https://example.com/link1', 'https://example.com/link2', 'https://example.com/link3']) - ->withFacebookPage('https://facebook.com/event1') - ->build(); - ArticleBuilder::create()->withLanguageCode('el')->build(); - ArticleBuilder::create()->build(); - - $request = Request::create('/articles?languageCode=en'); - $response = $this->container->get('http_kernel')->handle($request); - - $firstArticleAsJson = '{"id":"1","typeId":"1","typeName":"Type","title":"Title","summary":"Summary","description":"Description","thumbnail":"https:\/\/example.com\/filename.jpg","photos":["https:\/\/example.com\/filename.jpg","https:\/\/example.com\/filename.jpg","https:\/\/example.com\/filename.jpg"],"videos":["https:\/\/example.com\/filename.mp4","https:\/\/example.com\/filename.mp4","https:\/\/example.com\/filename.mp4"],"files":["https:\/\/example.com\/filename.pdf","https:\/\/example.com\/filename.pdf","https:\/\/example.com\/filename.pdf"],"sources":["https:\/\/example.com\/source1","https:\/\/example.com\/source2","https:\/\/example.com\/source3"],"links":["https:\/\/example.com\/link1","https:\/\/example.com\/link2","https:\/\/example.com\/link3"],"facebookEvent":"https:\/\/facebook.com\/event1","author":"Name Surname","date":"1234567890"}'; - $thirdArticleAsJson = '{"id":"3","typeId":"1","typeName":"Type","title":"Title","summary":"","description":"Description","thumbnail":"https:\/\/example.com\/filename.jpg","photos":[],"videos":[],"files":[],"sources":[],"links":[],"facebookEvent":"","author":"Name Surname","date":"1234567890"}'; - $this->assertEquals(200, $response->getStatusCode()); - $this->assertEquals('{"code":200,"languageCode":"en","articles":[' . $firstArticleAsJson . ',' . $thirdArticleAsJson . ']}', $response->getContent()); - } - - public function testShouldReturnArticleWithRequestedIdAndLanguage() { - ArticleTypeBuilder::create()->build(); - FileBuilder::create()->build(); - UserBuilder::create()->build(); - ArticleBuilder::create()->build(); - ArticleBuilder::create()->build(); - ArticleBuilder::create()->build(); - - $request = Request::create('/articles?languageCode=en&id=2'); - $response = $this->container->get('http_kernel')->handle($request); - - $secondArticleAsJson = '{"id":"2","typeId":"1","typeName":"Type","title":"Title","summary":"","description":"Description","thumbnail":"https:\/\/example.com\/filename.jpg","photos":[],"videos":[],"files":[],"sources":[],"links":[],"facebookEvent":"","author":"Name Surname","date":"1234567890"}'; - $this->assertEquals(200, $response->getStatusCode()); - $this->assertEquals('{"code":200,"languageCode":"en","articles":[' . $secondArticleAsJson . ']}', $response->getContent()); - } - - public function testShouldReturnErrorWhenArticleForRequestedIdDoesNotExist() { - $request = Request::create('/articles?languageCode=en&id=1'); - $response = $this->container->get('http_kernel')->handle($request); - - $this->assertEquals(404, $response->getStatusCode()); - $this->assertEquals('{"code":404,"message":"Article with id 1 does not exist."}', $response->getContent()); - } - - public function testShouldReturnListOfArticlesForRequestedType() { - ArticleTypeBuilder::create()->build(); - ArticleTypeBuilder::create()->build(); - FileBuilder::create()->build(); - UserBuilder::create()->build(); - ArticleBuilder::create()->build(); - ArticleBuilder::create()->withType(2)->build(); - ArticleBuilder::create()->build(); - - $request = Request::create('/articles?languageCode=en&typeId=1'); - $response = $this->container->get('http_kernel')->handle($request); - - $firstArticleAsJson = '{"id":"1","typeId":"1","typeName":"Type","title":"Title","summary":"","description":"Description","thumbnail":"https:\/\/example.com\/filename.jpg","photos":[],"videos":[],"files":[],"sources":[],"links":[],"facebookEvent":"","author":"Name Surname","date":"1234567890"}'; - $thirdArticleAsJson = '{"id":"3","typeId":"1","typeName":"Type","title":"Title","summary":"","description":"Description","thumbnail":"https:\/\/example.com\/filename.jpg","photos":[],"videos":[],"files":[],"sources":[],"links":[],"facebookEvent":"","author":"Name Surname","date":"1234567890"}'; - $this->assertEquals(200, $response->getStatusCode()); - $this->assertEquals('{"code":200,"languageCode":"en","articles":[' . $firstArticleAsJson . ',' . $thirdArticleAsJson . ']}', $response->getContent()); - } - - public function testShouldReturnErrorMessageWhenLanguageCodeQueryParameterIsMissing() { - $request = Request::create('/articles'); - $response = $this->container->get('http_kernel')->handle($request); - - $this->assertEquals(400, $response->getStatusCode()); - $this->assertEquals('{"code":400,"message":"Query parameter \u0022languageCode\u0022 is mandatory and is missing."}', $response->getContent()); - } - -} diff --git a/endpoints/endpoint-get-delete.sh b/endpoints/endpoint-get-delete.sh index 5629d59..1df6cd9 100755 --- a/endpoints/endpoint-get-delete.sh +++ b/endpoints/endpoint-get-delete.sh @@ -13,7 +13,9 @@ MODULES="modules/custom" cd /var/www/sites/${SITE} echo -# if module does not exist +# +# module exist +# ../vendor/drush/drush/drush pml --fields=name,status | grep "endpoint_get_${NODE}" if [ $? -ne 0 ];then echo -n " 🌈 Cannot find module ${B}endpoint_get_${NODE}${E}" @@ -21,27 +23,35 @@ if [ $? -ne 0 ];then fi echo -e " 🍓 Found module ${B}endpoint_get_${NODE}${E}" +# +# Clear cache +# ../vendor/drush/drush/drush cr -# if is enabled, disable it +# +# if module is enabled, disable it +# ../vendor/drush/drush/drush pml --fields=name,status > /tmp/.drush.pml cat /tmp/.drush.pml | grep -e "Enabled" | grep "endpoint_get_${NODE}" -# cat ./drush.pml | grep -e "Enabled" | grep "(endpoint_get_${NODE})" &> /dev/null if [ $? -eq 0 ];then - echo -n " 🍓 Disabling module ${B}endpoint_get_${NODE}${E}" + echo -n "\e 🍓 Disabling module ${B}endpoint_get_${NODE}${E}" ../vendor/drush/drush/drush pmu "endpoint_get_${NODE}" fi +# # if is not disabled, dont delete it +# ../vendor/drush/drush/drush pml --fields=name,status > /tmp/.drush.pml cat ./drush.pml | grep -e "Enabled" | grep "endpoint_get_${NODE}" if [ $? -eq 0 ];then - echo -n " 🌈 Cannot delete enabled module ${B}endpoint_get_${NODE}${E}" + echo -n "\n 🌈 Cannot delete enabled module ${B}endpoint_get_${NODE}${E}" ../vendor/drush/drush/drush pml --fields=name,status | grep "endpoint_get_${NODE}" exit fi +# # delete the damn thing +# rm "/var/www/sites/${SITE}/modules/custom/endpoint_get_${NODE}" -rf if [ $? -eq 0 ];then echo -e " 🍓 Directory ${B}${SITE}/modules/custom/endpoint_get_${NODE}${E} deleted" diff --git a/endpoints/endpoint-get.sh b/endpoints/endpoint-get.sh index dd7f1f2..90edc3a 100755 --- a/endpoints/endpoint-get.sh +++ b/endpoints/endpoint-get.sh @@ -2,6 +2,7 @@ C="\e[0;36m" G="\e[0;32m" +R="\e[0;31m" B="\e[0;34m" W="\e[0;97m" E="\e[00m" @@ -13,6 +14,7 @@ BASE_DIR="/var/www/sites" MODULES="modules/custom" SITE=${1} +SITE_COMPOSER=${1} NODE=${2} IFS=$'\n' @@ -38,7 +40,7 @@ function log() { echo -e "${G}[ OK ]${E}" return 0 else - echo -e "${G}[FAIL]${E}" + echo -e "${R}[FAIL]${E}" return 1 fi } @@ -111,7 +113,6 @@ function file_permissions() { } function enable_module() { - return 0 echo echo -en " 🌈 Enable module" cd /var/www/sites/${SITE} @@ -136,23 +137,27 @@ function test_module() { ENDPOINT_STATUS=$(curl -sI --location --request GET $BASE_URL/$ENDPOINT?_format=json \ -b cookie.txt \ --header "Content-type: application/json" | grep HTTP | awk {'print $2'}) - RESPONSE=$(curl -s --location --request GET $BASE_URL/$ENDPOINT | head -c100) - echo -e "\n 🍒 GET $BASE_URL/$ENDPOINT $ENDPOINT_STATUS" - [ "${ENDPOINT_STATUS}" == "200" ] && curl -s --location --request GET $BASE_URL/$ENDPOINT | head -c75 - echo + if [ "${ENDPOINT_STATUS}" == "200" ];then + echo -e "\n 🍒 GET $BASE_URL/$ENDPOINT $ENDPOINT_STATUS" + curl -s --location --request GET $BASE_URL/$ENDPOINT | head -c75 + echo -e "${G}[ OK ]${E}" + else + echo -e "\n 🍒 GET $BASE_URL/$ENDPOINT $ENDPOINT_STATUS ${R}[FAIL]${E}" + return 1 + fi done - echo + return 0 } function add_fields () { - for FIELD in $(bash ${SCRIPT_DIR}/get-fields.sh ${SITE} node ${NODE});do + for FIELD in $(bash ${SCRIPT_DIR}/get-fields.sh ${SITE_COMPOSER} node ${NODE});do FIELD_NAME=$(echo $FIELD | awk '{print $1}') FIELD_TYPE=$(echo $FIELD | awk '{print $2}') echo - echo -en "Add field ${C}${FIELD_NAME}${E} of type ${C}${FIELD_TYPE}${E} ? [y/n] " + echo -en " 🍏 Add field ${C}${FIELD_NAME}${E} of type ${C}${FIELD_TYPE}${E} ? [y/n] " read -n 1 response echo if [[ "$response" =~ ^([yY])$ ]] diff --git a/endpoints/get-fields.sh b/endpoints/get-fields.sh index fc2f539..c300b97 100755 --- a/endpoints/get-fields.sh +++ b/endpoints/get-fields.sh @@ -17,16 +17,9 @@ NAME=$3 cd /var/www/sites/$SITE_DIR -for FIELD in $(../vendor/drush/drush/drush fi ${TYPE} ${NAME} | tail -n +3 | grep -v '\-\-\-'); do +for FIELD in $(vendor/drush/drush/drush --fields="Field name","Field type" fi ${TYPE} ${NAME} | tail -n +3 | grep -v '\-\-\-'); do NAME=$(echo $FIELD | awk '{print $1}') TYPE=$(echo $FIELD | awk '{print $2}') - COUNT=$(echo $TYPE | wc -c) - THIRD=$(echo $FIELD | awk '{print $3}') - - if [ "$COUNT" -lt 5 ] && [ -z "${SECOND// }" ]; then - TYPE=$THIRD - fi - echo "$NAME $TYPE" done