Provides tools for building modules that integrate Nosto into your e-commerce platform

Related tags

API nosto-php-sdk
Overview

php-sdk

Provides tools for building modules that integrate Nosto into your e-commerce platform.

Requirements

  • The Nosto PHP SDK requires at least PHP version 5.4.0 and it's also compatible with PHP >= 7.0.0

Getting started

Creating a new Nosto account

A Nosto account is needed for every shop and every language within each shop.

    .....
    try {
        /** @var NostoSignupInterface $meta */
        /** @var NostoSignup $account */
        $account = NostoSignup::create($meta);
        // save newly created account according to the platforms requirements
        .....
    } catch (NostoException $e) {
        // handle failure
        .....
    }
    .....

Connecting with an existing Nosto account

This should be done in the shops back end when the admin user wants to connect an existing Nosto account to the shop.

First redirect to the Nosto OAuth2 server.

    .....
    /** @var OAuthInterface $meta */
    $client = new NostoOAuthClient($meta);
  	header('Location: ' . $client->getAuthorizationUrl());

Then have a public endpoint ready to handle the return request.

    if (isset($_GET['code'])) {
        try {
            /** @var OAuthInterface $meta */
            $account = NostoSignup::syncFromNosto($meta, $_GET['code']);
            // save the synced account according to the platforms requirements
        } catch (NostoException $e) {
            // handle failures
        }
        // redirect to the admin page where the user can see the account controls
        .....
    }
    } elseif (isset($_GET['error'])) {
        // handle errors; 3 parameter will be sent, 'error', 'error_reason' and 'error_description'
        // redirect to the admin page where the user can see an error message
        .....
    } else {
        // 404
        .....
    }

Deleting a Nosto account

This should be used when you delete a Nosto account for a shop. It will notify Nosto that this account is no longer used.

    try {
        /** @var NostoSignup $account */
        $account->delete();
    } catch (NostoException $e) {
        // handle failure
    }

Get authenticated Nosto URL for the account controls

The Nosto account can be created and managed through the controls that should be accessible to the admin user in the shop's backend. The account controls will redirect to nosto.com.

    .....
    /**
     * @param ConnectionMetadataInterface $connection the connection meta data.
     * @param AccountInterface|null $account the configuration to return the url for.
     * @param UserInterface|null $user
     * @param array $params additional parameters to add to the connection url.
     */
    try
    {
        $url = Nosto::helper('connection')->getUrl($meta, $account, $user, $params);
    }
    catch (NostoException $e)
    {
        // handle failure
    }
    // render the link to the user with given url
    .....

Sending order confirmations using the Nosto API

Sending order confirmations to Nosto is a vital part of the functionality. OrderConfirm confirmations should be sent when an order has been completed in the shop. It is NOT recommended to do this when the "thank you" page is shown to the user, as payment gateways work differently and you cannot rely on the user always being redirected back to the shop after a payment has been made. Therefore, it is recommended to send the order conformation when the order is marked as payed in the shop.

OrderConfirm confirmations can be sent two different ways:

  • matched orders; where we know the Nosto customer ID of the user who placed the order
  • un-matched orders: where we do not know the Nosto customer ID of the user who placed the order

The Nosto customer ID is set in a cookie "2c.cId" by Nosto and it is up to the platform to keep a link between users and the Nosto customer ID. It is recommended to tie the Nosto customer ID to the order or shopping cart instead of an user ID, as the platform may support guest checkouts.

    .....
    try {
        /**
         * @var NostoOrderInterface $order
         * @var NostoSignupInterface $account
         * @var string $customerId
         */
        NostoOrderConfirmation::send($order, $account, $customerId);
    } catch (NostoException $e) {
        // handle error
    }
    .....

Sending product re-crawl requests using the Nosto API

Note: this feature has been deprecated in favor of the create/update/delete method below.

When a product changes in the store, stock is reduced, price is updated etc. it is recommended to send an API request to Nosto that initiates a product "re-crawl" event. This is done to update the recommendations including that product so that the newest information can be shown to the users on the site.

Note: the $product model needs to include only productId and url properties, all others can be omitted.

    .....
    try {
        /**
         * @var NostoProductInterface $product
         * @var NostoSignupInterface $account
         */
        NostoProductReCrawl::send($product, $account);
    } catch (NostoException $e) {
        // handle error
    }
    .....

Batch re-crawling is also possible by creating a collection of product models:

    .....
    try {
        /**
         * @var NostoExportProductCollection $collection
         * @var NostoProductInterface $product
         * @var NostoSignupInterface $account
         */
        $collection[] = $product;
        NostoProductReCrawl::sendBatch($collection, $account);
    } catch (NostoException $e) {
        // handle error
    }
    .....

Sending product create/update/delete requests using the Nosto API

When a product changes in the store, stock is reduced, price is updated etc. it is recommended to send an API request to Nosto to handle the updated product info. This is also true when adding new products as well as deleting existing ones. This is done to update the recommendations including that product so that the newest information can be shown to the users on the site.

Creating new products:

    .....
    try {
        /**
         * @var NostoProductInterface $product
         * @var NostoSignupInterface $account
         */
        $op = new UpsertProduct($account);
        $op->addProduct($product);
        $op->create();
    } catch (NostoException $e) {
        // handle error
    }
    .....

Note: you can call addProduct multiple times to add more products to the request. This way you can batch create products.

Updating existing products:

    .....
    try {
        /**
         * @var NostoProductInterface $product
         * @var NostoSignupInterface $account
         */
        $op = new UpsertProduct($account);
        $op->addProduct($product);
        $op->update();
    } catch (NostoException $e) {
        // handle error
    }
    .....

Note: you can call addProduct multiple times to add more products to the request. This way you can batch update products.

Deleting existing products:

    .....
    try {
        /**
         * @var NostoProductInterface $product
         * @var NostoSignupInterface $account
         */
        $op = new UpsertProduct($account);
        $op->addProduct($product);
        $op->delete();
    } catch (NostoException $e) {
        // handle error
    }
    .....

Note: you can call addProduct multiple times to add more products to the request. This way you can batch delete products.

Exporting encrypted product/order information that Nosto can request

When new Nosto accounts are created for a shop, Nosto will try to fetch historical data about products and orders. This information is used to bootstrap recommendations and decreases the time needed to get accurate recommendations showing in the shop.

For this to work, Nosto requires 2 public endpoints that can be called once a new account has been created through the API. These endpoints should serve the history data encrypted with AES. The SDK comes bundled with the ability to encrypt the data with a pure PHP solution (http://phpseclib.sourceforge.net/), It is recommended, but not required, to have mcrypt installed on the server.

Additionally, the endpoints need to support the ability to limit the amount of products/orders to export and an offset for fetching batches of data. These must be implemented as GET parameters "limit" and "offset" which will be sent as integer values and expected to be applied to the data set being exported.

    .....
    /**
     * @var NostoProductInterface[] $products
     * @var NostoSignupInterface $account
     */
    $collection = new NostoExportProductCollection();
    foreach ($products as $product) {
        $collection[] = $product;
    }
    // The exported will encrypt the collection and output the result.
    $cipher_text = NostoExporter::export($account, $collection);
    echo $cipher_text;
    // It is important to stop the script execution after the export, in order to avoid any additional data being outputted.
    die();
    .....
    /**
     * @var NostoOrderInterface[] $orders
     * @var NostoSignupInterface $account
     */
    $collection = new NostoExportOrderCollection();
    foreach ($orders as $order) {
        $collection[] = $order;
    }
    // The exported will encrypt the collection and output the result.
    $cipher_text = NostoExporter::export($account, $collection);
    echo $cipher_text;
    // It is important to stop the script execution after the export, in order to avoid any additional data being outputted.
    die();

Testing

The SDK is unit tested with Codeception (http://codeception.com/).

Running tests

First cd into the root directory.

Then install Codeception via composer:

    php composer.phar install

Then run the tests:

    vendor/bin/codecept run

Testing new added operation

The SDK unit test uses the apiary as the stub server. The apiary pulls the api-blueprint.md from master branch and builds fake api endpoints based on it. A way to test new added operation before merging it to master is using Drakov API Bleuprint Mock Server (https://github.com/Aconex/drakov) running on Node.

First cd into the root directory.

Then install Codeception via composer:

    php composer.phar install

After that you can install the drakov server via npm:

    npm install -g drakov

Update the endpoints in the tests/.env file:

    NOSTO_API_BASE_URL=localhost:3000
    NOSTO_OAUTH_BASE_URL=localhost:3000/oauth
    NOSTO_WEB_HOOK_BASE_URL=http://localhost:3000

Then start the drakov mock server with the API blueprint:

    drakov -f tests/api-blueprint.md

Then in another window run the tests:

    vendor/bin/codecept run

You can pass debugMode flag to the drakov server for debugging purposes:

    drakov -f tests/api-blueprint.md --debugMode

Running phpcs

First cd into the root directory.

Then the phpcs:

    phpcs --standard=ruleset.xml -v .
Comments
  • Update PHPCompatibility and other PHPCS related fixes

    Update PHPCompatibility and other PHPCS related fixes

    Description

    PHPCS/Composer: update PHPCompatibility

    Composer:

    • wimg/php-compatibility has been abandoned for nearly a year. Use phpcompatibility/php-compatibility instead.
    • Use the latest version of PHPCompatibility. You were missing out on a lot of new checks, including the checks to make sure your code is compatible with the upcoming PHP 7.4.
    • Use the latest version of PHP_CodeSniffer. Version 3.x includes new features like parallel scanning of files and altogether contains lots of bug fixes, so using the latest version is a good idea and will give more reliable results.
    • Add the DealerDirect Composer PHPCS plugin. This plugin will handle setting the PHPCS installed_paths automatically. This also allows to remove the unsupported/unused scripts-dev section from the Composer file, as well as the installed_paths setting in the ruleset file.

    PHPCS ruleset:

    • Actually check for cross-version compatibility. You were currently just checking if the code was compatible with PHP 5.4, not with PHP 5.4 and above.

    Refs:

    • https://github.com/PHPCompatibility/PHPCompatibility#sniffing-your-code-for-compatibility-with-specific-php-versions
    • https://github.com/PHPCompatibility/PHPCompatibility/releases/
    • https://github.com/squizlabs/php_codesniffer/releases
    • https://github.com/Dealerdirect/phpcodesniffer-composer-installer/releases

    PHPCS: improve ruleset

    • Rename the ruleset to phpcs.xml.dist which will allow PHPCS to automatically pick up on it. No need to pass the --standard=... command-line argument anymore.
    • Add the XSD schema for PHPCS to the ruleset.
    • Move the other command-line arguments from the build.xml script to the ruleset.
    • Enable the PHPCS 3.x basepath and parallel options.
    • Document the ruleset.

    CS: apply CS fixes

    CS: update/remove ignore annotations

    Looks like two are no longer necessary, probably due to bugs fixed, while one should be updated to the new PHPCS 3.2+ selective ignore annotations.

    Related Issue

    #234

    Motivation and Context

    See above description of the individual commits.

    The remaining 37 issues are actually one and the same issue which is the directory called Object which has then been translated to be part of the namespace for 37 classes.

    object is a reserved keyword in PHP and should not be used in namespaces.

    As changing this would constitute a BC-break, I am not addressing this in this PR, but leaving a decision on how to solve this to the developers of this project.

    How Has This Been Tested?

    Running PHPCS with the updated dependencies and ruleset locally.

    Documentation:

    N/A

    Checklist:

    • [x] My code follows the code style of this project. That's what this PR is all above and it fixes things previously left unfixed
    • [ ] ~~I have updated the documentation accordingly.~~ N/A
    • [ ] ~~All new and existing tests passed.~~ N/A
    • [ ] ~~I have assigned the correct milestone or created one if non-existent.~~ N/A, not possible for outside contributors
    • [ ] ~~I have correctly labeled this pull request.~~ N/A, not possible for outside contributors
    • [x] I have linked the corresponding issue in this description.
    • [ ] ~~I have updated the corresponding Jira ticket.~~ N/A
    • [ ] ~~I have requested a review from at least 2 reviewers~~ N/A, not possible for outside contributors
    • [x] I have checked the base branch of this pull request
    • [ ] ~~I have checked my code for any possible security vulnerabilities~~ N/A

    (pff... makes one wonder whether you actually welcome contributions from outsiders...)

    enhancement 
    opened by jrfnl 9
  • Feature/remove iframe

    Feature/remove iframe

    Description

    Removed iframe component and iframe related code.

    Related Issue

    Motivation and Context

    Google drops support for third-party cookies. Nosto account controls are no longer operated via iframe.

    How Has This Been Tested?

    Locally (M2.4.4, PHP8.1)

    Documentation:

    Checklist:

    • [x] My code follows the code style of this project.
    • [x] I have updated the documentation accordingly.
    • [x] All new and existing tests passed.
    • [x] I have assigned the correct milestone or created one if non-existent.
    • [x] I have correctly labeled this pull request.
    • [x] I have linked the corresponding issue in this description.
    • [x] I have updated the corresponding Jira ticket.
    • [x] I have requested a review from at least 2 reviewers
    • [x] I have checked the base branch of this pull request
    • [x] I have checked my code for any possible security vulnerabilities
    enhancement 
    opened by dairbuirabass 3
  • Outdated doc ?

    Outdated doc ?

    Most of the classes in the README does not exists :

    • NostoSignupInterface
    • NostoProductInterface
    • methods like UpsertProduct::create(), UpsertProduct::update()...
    • a lot more.
    opened by xxorax 2
  • Bump guzzlehttp/psr7 from 2.1.0 to 2.2.1

    Bump guzzlehttp/psr7 from 2.1.0 to 2.2.1

    Bumps guzzlehttp/psr7 from 2.1.0 to 2.2.1.

    Release notes

    Sourced from guzzlehttp/psr7's releases.

    2.2.1

    See change log for changes.

    2.2.0

    See change log for changes.

    2.1.2

    See change log for changes.

    2.1.1

    See change log for changes.

    Changelog

    Sourced from guzzlehttp/psr7's changelog.

    2.2.1 - 2022-03-20

    Fixed

    • Correct header value validation

    2.2.0 - 2022-03-20

    Added

    • A more compressive list of mime types
    • Add JsonSerializable to Uri
    • Missing return types

    Fixed

    • Bug MultipartStream no uri metadata
    • Bug MultipartStream with filename for data:// streams
    • Fixed new line handling in MultipartStream
    • Reduced RAM usage when copying streams
    • Updated parsing in Header::normalize()

    2.1.1 - 2022-03-20

    Fixed

    • Validate header values properly
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies php 
    opened by dependabot[bot] 2
  • Move CategoryMerchandising util to php-sdk

    Move CategoryMerchandising util to php-sdk

    Description

    Moved CategoryMerchendasing utility from CMP to php-sdk module.

    Related Issue

    Closes issue #136 in CMP repo.

    Motivation and Context

    The functionality within utility is more suited to PHP-SDK module than CMP

    How Has This Been Tested?

    Locally

    Documentation:

    Checklist:

    • [x] My code follows the code style of this project.
    • [ ] I have updated the documentation accordingly.
    • [x] All new and existing tests passed.
    • [x] I have assigned the correct milestone or created one if non-existent.
    • [x] I have correctly labeled this pull request.
    • [x] I have linked the corresponding issue in this description.
    • [ ] I have updated the corresponding Jira ticket.
    • [x] I have requested a review from at least 2 reviewers
    • [x] I have checked the base branch of this pull request
    • [x] I have checked my code for any possible security vulnerabilities
    enhancement 
    opened by dairbuirabass 2
  • Experiment - Add product json serialization and deserialization

    Experiment - Add product json serialization and deserialization

    Implement logic for serializing product object (and nested objects) to json and deserializing to product object from json.

    Description

    • Add a logic for deserializing / serializing objects
    • Introduce interface JsonDenormalizableInterface
    • Add traits to handle the actual serialization for objects that implement JsonDenormalizableInterface

    Related Issue

    #237

    Motivation and Context

    • The current serialization to json and html is currently meant only for Nosto API and tagging and we are lacking a somewhat standard serialization to json
    • We don't have deserialization support at all

    How Has This Been Tested?

    • Added new tests for serialization and deserialization

    Checklist:

    • [x] My code follows the code style of this project.
    • [x] I have updated the documentation accordingly.
    • [x] All new and existing tests passed.
    • [x] I have assigned the correct milestone or created one if non-existent.
    • [x] I have correctly labeled this pull request.
    • [x] I have linked the corresponding issue in this description.
    • [x] I have updated the corresponding Jira ticket.
    • [x] I have requested a review from at least 2 reviewers
    • [x] I have checked the base branch of this pull request
    • [x] I have checked my code for any possible security vulnerabilities
    enhancement 
    opened by fairlane 2
  • Serialization Error of SKU Customfield-Keys

    Serialization Error of SKU Customfield-Keys

    Keys with special chars like "Größe" end up like "gr":

    <span class="custom_fields">
          <span class="gr">41</span>
          <span class="farbe">Weiß</span>
    </span>
    

    toJson() / API works fine!

    bug 
    opened by sPooKee 2
  • UpsertProduct Operation is not using the

    UpsertProduct Operation is not using the "toJson()" method of the Products

    UpsertProduct::upsert() is using: $response = $request->post($this->collection); to send the Products.

    The ApiRequest::post() is using: return $this->postRaw(SerializationHelper::serialize($content));

    I suggest a AbstractCollection::toJson() method, which is calling the AbstractObject::toJson() method.

    BONUS: Automatic UTF-8 Conversion if necessary ;-)

    opened by sPooKee 2
  • Release/6.0.0

    Release/6.0.0

    Description

    • Remove NostoIframe.js and all references to the iframe
    • Remove NPM and Gruntfile

    Related Issue

    Motivation and Context

    How Has This Been Tested?

    Documentation:

    Checklist:

    • [x] My code follows the code style of this project.
    • [x] I have updated the documentation accordingly.
    • [x] All new and existing tests passed.
    • [x] I have assigned the correct milestone or created one if non-existent.
    • [x] I have correctly labeled this pull request.
    • [x] I have linked the corresponding issue in this description.
    • [x] I have updated the corresponding Jira ticket.
    • [x] I have requested a review from at least 2 reviewers
    • [x] I have checked the base branch of this pull request
    • [x] I have checked my code for any possible security vulnerabilities
    opened by dairbuirabass 1
  • Add PHPStorm Inspections as a CI build step

    Add PHPStorm Inspections as a CI build step

    Description

    Related Issue

    Motivation and Context

    How Has This Been Tested?

    Documentation:

    Checklist:

    • [ ] My code follows the code style of this project.
    • [ ] I have updated the documentation accordingly.
    • [ ] All new and existing tests passed.
    • [ ] I have assigned the correct milestone or created one if non-existent.
    • [ ] I have correctly labeled this pull request.
    • [ ] I have linked the corresponding issue in this description.
    • [ ] I have updated the corresponding Jira ticket.
    • [ ] I have requested a review from at least 2 reviewers
    • [ ] I have checked the base branch of this pull request
    • [ ] I have checked my code for any possible security vulnerabilities
    enhancement 
    opened by mridang 1
  • Replace short array syntax instead

    Replace short array syntax instead

    Description

    Replace array syntax with short array syntax.

    Related Issue

    N/A

    Motivation and Context

    Since this PHP package requires php-5.4 version at least, the short array syntax is available on php-5.4 version now.

    How Has This Been Tested?

    It's syntax changes, and it should not be tested.

    Documentation:

    N/A

    Checklist:

    • [ X ] My code follows the code style of this project.
    • [X] I have updated the documentation accordingly.
    • [X] All new and existing tests passed.
    • [ ] I have assigned the correct milestone or created one if non-existent.
    • [ ] I have correctly labeled this pull request.
    • [ ] I have linked the corresponding issue in this description.
    • [ ] I have updated the corresponding Jira ticket.
    • [ ] I have requested a review from at least 2 reviewers
    • [ ] I have checked the base branch of this pull request
    • [ ] I have checked my code for any possible security vulnerabilities
    opened by peter279k 1
  • Remove DeleteProduct operation

    Remove DeleteProduct operation

    Description

    Related Issue

    Motivation and Context

    How Has This Been Tested?

    Documentation:

    Checklist:

    • [x] My code follows the code style of this project.
    • [x] I have updated the documentation accordingly.
    • [x] All new and existing tests passed.
    • [x] I have assigned the correct milestone or created one if non-existent.
    • [x] I have correctly labeled this pull request.
    • [x] I have linked the corresponding issue in this description.
    • [x] I have updated the corresponding Jira ticket.
    • [x] I have requested a review from at least 2 reviewers
    • [x] I have checked the base branch of this pull request
    • [x] I have checked my code for any possible security vulnerabilities
    opened by dairbuirabass 0
  • Add fixtures & assertion library for serialization tests

    Add fixtures & assertion library for serialization tests

    In current format the JSON is unreadable. Add json to fixtures or put those into a variable in readable format & use assertion lib (for example https://github.com/martin-helmich/phpunit-json-assert) to do the comparison

    enhancement 
    opened by fairlane 0
  • Boolean should be encodable value as well

    Boolean should be encodable value as well

    https://github.com/Nosto/nosto-php-sdk/blob/develop/src/Helper/HtmlMarkupSerializationHelper.php#L238.

    Not allowing booleans becomes problematic especially with collections with mixed strings, nulls and boolean (custom fields for example)

    enhancement 
    opened by fairlane 0
Releases(6.1.1)
Owner
Nosto
Nosto - Ecommerce moves fast — so do we - We are Hiring https://www.nosto.com/join-us/ !
Nosto
Online Book Store is a E-commerce Website and Book Conversion(pdf to audio and Img to txt) and Book Sharing platform.

Online-Book-Store Online Book Store is a E-commerce Website and Book Conversion(pdf to audio and Img to txt) and Book Sharing platform. The main descr

Gokul krishnan 1 May 22, 2022
This bundle provides tools to build a complete GraphQL server in your Symfony App.

OverblogGraphQLBundle This Symfony bundle provides integration of GraphQL using webonyx/graphql-php and GraphQL Relay. It also supports: batching with

Webedia - Overblog 720 Dec 25, 2022
STEAM education curriculum centered on building a new civilization entirely from trash, which provides all human needs for free directly to the local community

TRASH ACADEMY STEAM(Science Technology Engineering Art Math) education curriculum centered around building self-replicating technology from trash whic

Trash Robot 3 Nov 9, 2021
The maker bundle allows you to generate content elements, front end modules

Contao 4 maker bundle The maker bundle allows you to generate content elements, front end modules, event listener, callbacks and hooks using interacti

Contao 7 Aug 3, 2022
The perfect starting point to integrate Algolia within your PHP project

⚡️ A fully-featured and blazing-fast PHP API client to interact with Algolia.

Algolia 629 Jan 4, 2023
Provides a Middleware to integration Tideways into Symfony Messenger Processing

Tideways Middleware for Symfony Messenger This package is currently under development and might be moved into the Tideways PHP Extension or stay indep

Tideways 6 Jul 5, 2022
Http-kernel - The HttpKernel component provides a structured process for converting a Request into a Response.

HttpKernel Component The HttpKernel component provides a structured process for converting a Request into a Response by making use of the EventDispatc

Symfony 7.8k Jan 9, 2023
Site E-Commerce avec Symfony 6

E-commerce Symfony 6 Site e-commerce créé avec Symfony 6dans une série de tutoriels présents sur la chaîne Nouvelle-Techno.fr à cette adresse : https:

Benoit Gambier 27 Jan 1, 2023
Bundle to integrate Tactician with Symfony projects

TacticianBundle Symfony2 Bundle for the Tactician library https://github.com/thephpleague/tactician/ Installation Step 1: Download the Bundle Open a c

The League of Extraordinary Packages 240 Jan 4, 2023
A Laravel Fractal package for building API responses, giving you the power of Fractal with Laravel's elegancy.

Laravel Responder is a package for building API responses, integrating Fractal into Laravel and Lumen. It can transform your data using transformers,

Alexander Tømmerås 776 Dec 25, 2022
PSR-7 middleware foundation for building and dispatching middleware pipelines

laminas-stratigility From "Strata", Latin for "layer", and "agility". This package supersedes and replaces phly/conduit. Stratigility is a port of Sen

Laminas Project 47 Dec 22, 2022
The 1Password Connect PHP SDK provides your PHP applications access to the 1Password Connect API hosted on your infrastructure and leverage the power of 1Password Secrets Automation

1Password Connect PHP SDK The 1Password Connect PHP SDK provides your PHP applications access to the 1Password Connect API hosted on your infrastructu

Michelangelo van Dam 12 Dec 26, 2022
Raidbots API wrapper which incorporates existing reports and static data into your project.

Raidbots API Raidbots API wrapper which incorporates existing reports and static data into your project. Usage use Logiek\Raidbots\Client; $client =

Logiek 2 Dec 23, 2021
Laravel library to convert your models into API responses.

Laravel Scene Laravel library to convert your models into API responses. Why a transformation library? By default you can use the default implementati

Ahmed Azaan 27 Nov 23, 2022
Facebook SDK for PHP (v6) - allows you to access the Facebook Platform from your PHP app

Facebook SDK for PHP (v6) This repository contains the open source PHP SDK that allows you to access the Facebook Platform from your PHP app. Installa

null 0 Aug 10, 2022
Content Negotiation tools for PHP.

Negotiation Negotiation is a standalone library without any dependencies that allows you to implement content negotiation in your application, whateve

William Durand 1.3k Dec 22, 2022
Laravel api tool kit is a set of tools that will help you to build a fast and well-organized API using laravel best practices.

Laravel API tool kit and best API practices Laravel api tool kit is a set of tools that will help you to build a fast and well-organized API using lar

Ahmed Esa 106 Nov 22, 2022
a tool to get Facebook data, and some Facebook bots, and extra tools found on Facebook Toolkit ++.

FACEBOOK TOOLKIT a tool to get Facebook data, and some Facebook bots, and extra tools found on Facebook Toolkit ++. Graph API Facebook. Made with ❤️ b

Wahyu Arif Purnomo 569 Dec 27, 2022
A Symfony bundle that provides #StandWithUkraine banner and has some built-in features to block access to your resource for Russian-speaking users.

StandWithUkraineBundle На русском? Смотри README.ru.md This bundle provides a built-in StandWithUkraine banner for your Symfony application and has so

Victor Bocharsky 10 Nov 12, 2022