مكتبات العملاء في GAPI

بالنسبة إلى الاتصال من خادم إلى خادم (موثوق به)، ننصح باستخدام مكتبات عميل GAPI الخاصة بكل لغة للحصول على تجربة أفضل من التطوير عبر REST أو gRPC غير معدَّل. وتتوفّر ملفات النموذج الأوّلي التي يستند إليها هؤلاء العملاء للجميع على https://github.com/googleapis/googleapis/tree/master/google/maps/fleetengine/delivery/v1.

إذا لم تكن المكتبات متوفّرة بلغة تطبيقك، ننصحك باستخدام نقطة نهاية Fleet Engine REST.

ملاحظة: تم تصميم مكتبات GAPIC للتشغيل في بيئات (خادم) موثوق بها. ملفات JWT غير ضرورية. يمكنك استخدام بيانات الاعتماد التلقائية للتطبيق إلى جانب دور deliveryAdmin المناسب.

Java

يتم نشر مكتبات Java ضمن google.maps.fleetengine.delivery.v1.

Gradle

plugins {
  id "maven-publish"
  id "com.google.cloud.artifactregistry.gradle-plugin" version "2.1.4"
}

publishing {
  repositories {
    maven {
      url "artifactregistry://us-maven.pkg.dev/fleetengine-gapic/maven"
    }
  }
}

repositories {
  maven {
    url "artifactregistry://us-maven.pkg.dev/fleetengine-gapic/maven"
  }
}

dependencies {
  implementation 'com.google.maps:gapic-google-maps-fleetengine-delivery-v1-java:latest.release'
}

Maven

<project>
  <distributionManagement>
    <snapshotRepository>
      <id>artifact-registry</id>
      <url>artifactregistry://us-maven.pkg.dev/fleetengine-gapic/maven</url>
    </snapshotRepository>
    <repository>
      <id>artifact-registry</id>
      <url>artifactregistry://us-maven.pkg.dev/fleetengine-gapic/maven</url>
    </repository>
  </distributionManagement>

  <repositories>
    <repository>
      <id>artifact-registry</id>
      <url>artifactregistry://us-maven.pkg.dev/fleetengine-gapic/maven</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </repository>
  </repositories>

  <build>
    <extensions>
      <extension>
        <groupId>com.google.cloud.artifactregistry</groupId>
        <artifactId>artifactregistry-maven-wagon</artifactId>
        <version>2.1.4</version>
      </extension>
    </extensions>
  </build>

  <dependency>
    <groupId>com.google.maps</groupId>
    <artifactId>gapic-google-maps-fleetengine-delivery-v1-java</artifactId>
    <version>LATEST</version>
  </dependency>
</project>

يمكنك استخدام مكتبة مصادقة Fleet Engine للغة Java لإنشاء رموز ويب مميزة بتنسيق JSON موقّع داخل بيئة Java.

يمكنك عرض أمثلة Java للتفاعل مع Fleet Engine API في صفحة بدء استخدام Fleet Engine.

Node.js / TypeScript

npm

يمكنك تحديد عنوان URL للمكتبة في القسم dependencies من package.json:

{
  "dependencies": {
    "@googlemaps/fleetengine-delivery": "https://storage.googleapis.com/fleetengine-gapic/dist/latest_release/maps-fleetengine-delivery-v1-nodejs.tar.gz",
    "google-auth-library": "^9.2.0",
    "googleapis": "^118.0.0"
  }
}

نموذج التعليمات البرمجية:

const {google} = require('googleapis');
const fleetengine = require('@googlemaps/fleetengine-delivery');
const {GoogleAuth} = require('google-auth-library');

// CONSTANTS
const PROJECT_ID = 'YOUR_GCP_PROJECT_NAME';
const VEHICLE_ID = 'YOUR_VEHICLE_ID';
const SERVICE_ACCOUNT = 'YOUR_SERVICE_ACCOUNT';
const SERVICE_ACCOUNT_EMAIL = `${SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com`;

// CREATE A JWT FOR AUTHENTICATION
const HOWLONG = 55 * 60;          // 55 minutes, cannot be more than 60 minutes

async function signToken(claims) {
  const googleAuth = new google.auth.GoogleAuth({
    scopes: ['https://www.googleapis.com/auth/cloud-platform'],
  });
  const authClient = await googleAuth.getClient();
  google.options({auth: authClient});

  const now = Math.round(Date.now() / 1000);
  const iat = now - 300;
  const exp = now + HOWLONG;

  const request = {
      name: `projects/-/serviceAccounts/${SERVICE_ACCOUNT_EMAIL}`,
      requestBody: {
          payload: JSON.stringify({
              iss: SERVICE_ACCOUNT_EMAIL,
              sub: SERVICE_ACCOUNT_EMAIL,
              aud: 'https://fleetengine.googleapis.com/',
              iat: iat,
              exp: exp,
              authorization: claims
          }),
      }
  };

  const response = await google.iamcredentials('v1').projects.serviceAccounts
      .signJwt(request)
      .catch((err) => {
        if (err.errors) throw err.errors;
        else throw err;
      });
  return response.data.signedJwt;
}

// MAKE A REQUEST
async function main() {
    const claims = {
      deliveryvehicleid: VEHICLE_ID
    };

    signToken(claims).then(token => {
      let auth = new GoogleAuth();
      auth.cachedCredential = new AuthorizationHeaderProvider(token);
      const client = new fleetengine.DeliveryServiceClient({ auth: auth });

      client.getDeliveryVehicle({name: `providers/${PROJECT_ID}/deliveryVehicles/${VEHICLE_ID}`}).then(function(resp) {
        console.log(resp);
      }, function(err) {
        console.log(err);
      });
    });
}

class AuthorizationHeaderProvider {
    constructor(token) {
        this.token = token;
    }

    getRequestMetadata(url, callback) {
        callback(null, {'authorization': `Bearer ${this.token}`});
    }
}

main().catch(console.error);

البدء

تتوفّر مكتبة Go كوحدة على الرابط https://pkg.go.dev/cloud.google.com/go/maps

Python

راجِع https://pypi.org/project/google-maps-fleetengine-delivery/0.1.0/.

pip

pip install google-auth
pip install google-maps-fleetengine-delivery

C#

ويمكن العثور على تعليمات تثبيت مكتبة C# على الرابط https://www.nuget.org/packages/Google.Maps.FleetEngine.Delivery.V1.

PHP

ويمكنك تنزيل مكتبة لغة PHP من خلال الرابط التالي: https://storage.googleapis.com/fleetengine-gapic/dist/latest_release/google-maps-fleetengine-delivery-v1-php.tar.gz

Ruby

يمكنك الاطّلاع على https://rubygems.org/gems/google-maps-fleet_engine-delivery.