الانتقال إلى المحتوى الرئيسي

BZ-Java-Client

عدة تطوير البرمجيات SDK بلغة Java ملائمة للمطورين وآمنة من حيث الأنواع، ومصممة خصيصًا للاستفادة من واجهة برمجة التطبيقات openapi.
مطوَّرة بواسطة Speakeasyرخصة MIT

الملخص

واجهات برمجة التطبيقات API الخاصة بـ Benzinga: توفر واجهة برمجة تطبيقات REST هذه نقاط نهاية لجميع واجهات برمجة التطبيقات الخاصة بـ Benzinga.

جدول المحتويات

تثبيت عدة تطوير البرمجيات (SDK)

البدء

يتطلب الأمر وجود JDK 11 أو أحدث. توضح الأمثلة أدناه كيفية استخدام أرتيفاكت منشور من عدة تطوير البرمجيات SDK: Gradle:
implementation 'org.benzinga:BZClient:0.2.7'
Maven:
<dependency>
    <groupId>org.benzinga</groupId>
    <artifactId>BZClient</artifactId>
    <version>0.2.7</version>
</dependency>

كيفية الإنشاء

بعد استنساخ مستودع git إلى نظام الملفات الخاص بك يمكنك إنشاء أرتيفاكت عدة تطوير البرمجيات SDK من المصدر في الدليل build بتشغيل الأمر ./gradlew build على أنظمة *nix أو gradlew.bat على أنظمة Windows. إذا كنت ترغب في الإنشاء من المصدر ونشر أرتيفاكت عدة تطوير البرمجيات SDK إلى مستودع Maven المحلي لديك (على نظام الملفات الخاص بك) فاستخدم الأمر التالي (بعد استنساخ مستودع git محليًا): على أنظمة *nix:
./gradlew publishToMavenLocal -Pskip.signing
على نظام التشغيل Windows:
gradlew.bat publishToMavenLocal -Pskip.signing

مثال على استخدام عدة تطوير البرمجيات (SDK)

مثال

package hello.world;

import java.lang.Exception;
import org.benzinga.BZClient.Bzclient;
import org.benzinga.BZClient.models.operations.GetAnalystReportsRawTextDataResponse;

public class Application {

    public static void main(String[] args) throws Exception {

        Bzclient sdk = Bzclient.builder()
                .apiKeyAuth("<YOUR_API_KEY_HERE>")
            .build();

        GetAnalystReportsRawTextDataResponse res = sdk.analystReportsRawText().get()
                .page(700347L)
                .pagesize(558834L)
                .call();

        if (res.modelsAnalystReportRawTexts().isPresent()) {
            // معالجة الاستجابة
        }
    }
}

المصادقة

مخططات الأمان لكل عميل

تدعم هذه عدة تطوير البرمجيات SDK مخطط الأمان التالي على مستوى العدة بالكامل:
NameTypeScheme
apiKeyAuthapiKeyAPI key
للمصادقة على واجهة برمجة التطبيقات API يجب ضبط معامل apiKeyAuth عند تهيئة مثيل عميل العدة. على سبيل المثال:
package hello.world;

import java.lang.Exception;
import org.benzinga.BZClient.Bzclient;
import org.benzinga.BZClient.models.operations.GetAnalystReportsRawTextDataResponse;

public class Application {

    public static void main(String[] args) throws Exception {

        Bzclient sdk = Bzclient.builder()
                .apiKeyAuth("<YOUR_API_KEY_HERE>")
            .build();

        GetAnalystReportsRawTextDataResponse res = sdk.analystReportsRawText().get()
                .page(700347L)
                .pagesize(558834L)
                .call();

        if (res.modelsAnalystReportRawTexts().isPresent()) {
            // معالجة الاستجابة
        }
    }
}

الموارد والعمليات المتاحة

  • جلب - جلب رؤى المحللين V1
  • get - جلب بيانات النص الخام لتقارير المحللين
  • get - جلب بيانات الشموع v2
  • جلب - جلب Bulls Say Bears Say V1
  • جلب - جلب مكالمات الأرباح
  • جلب - جلب تقييمات الإجماع
  • get - جلب الأرقام والنسب المشتقة V3
  • getV22 - جلب توزيعات الأرباح V2.2
  • get - جلب توزيعات الأرباح V2 و V2.1
  • get - جلب نسب الربحية V2.1
  • get - جلب بيانات الأرباح
  • get - جلب نصوص مكالمات الأرباح
  • getAudio - جلب الملفات الصوتية لمكالمات الأرباح
  • get - جلب بيانات Economics
  • get - جلب الأحداث
  • get - جلب بيانات FDA
  • get - جلب تقارير التداول الحكومية
  • get - جلب التداولات الحكومية
  • get - جلب التوجيهات
  • get - جلب معاملة داخلية
  • getOwner - جلب مالك المعاملة الداخلية
  • getV21 - جلب بيانات الاكتتابات العامة الأولية (IPOs) V2.1
  • get - جلب بيانات الاكتتابات العامة الأولية (IPOs) V2
  • bulkSync - جلب الشعارات لمفاتيح البحث المحددة
  • search - جلب الشعارات لمفاتيح البحث المحددة
  • get - جلب بيانات الاندماجات والاستحواذات
  • get - جلب الأخبار
  • getRemoved - جلب الأخبار المحذوفة
  • جلب - جلب بيانات Newsquantified
  • get - جلب العروض
  • GET - جلب نسب التشغيل v2.1
  • get - جلب بيانات OptionActivity V1

quotedelayed()

  • getV1 - جلب الأسعار المتأخرة V1
  • get - جلب عروض الأسعار المتأخرة V2
  • get - جلب التقييمات
  • get - جلب محللي التقييمات
  • get - جلب شركات التصنيف
  • get - جلب العناصر المحذوفة (v2)
  • get - جلب تجزئات الأسهم
  • get - جلب بيانات اتجاهات رمز التداول
  • getList - جلب بيانات قائمة اتجاهات رمز التداول
  • get - جلب نسب التقييم v2.1

إعادة المحاولة

بعض نقاط النهاية في هذه العدة تدعم إعادة المحاولة. إذا استخدمت عدة تطوير البرمجيات SDK بدون أي تهيئة، فسيتم استخدام استراتيجية إعادة المحاولة الافتراضية التي توفرها واجهة برمجة التطبيقات API. ومع ذلك، يمكن استبدال استراتيجية إعادة المحاولة الافتراضية لكل عملية على حدة، أو على مستوى العدة بالكامل. لتغيير استراتيجية إعادة المحاولة الافتراضية لاستدعاء واحد لواجهة برمجة التطبيقات API، يمكنك تمرير كائن RetryConfig عبر أسلوب الباني retryConfig:
package hello.world;

import java.lang.Exception;
import java.util.concurrent.TimeUnit;
import org.benzinga.BZClient.Bzclient;
import org.benzinga.BZClient.models.operations.GetAnalystReportsRawTextDataResponse;
import org.benzinga.BZClient.utils.BackoffStrategy;
import org.benzinga.BZClient.utils.RetryConfig;

public class Application {

    public static void main(String[] args) throws Exception {

        Bzclient sdk = Bzclient.builder()
                .apiKeyAuth("<YOUR_API_KEY_HERE>")
            .build();

        GetAnalystReportsRawTextDataResponse res = sdk.analystReportsRawText().get()
                .retryConfig(RetryConfig.builder()
                    .backoff(BackoffStrategy.builder()
                        .initialInterval(1L, TimeUnit.MILLISECONDS)
                        .maxInterval(50L, TimeUnit.MILLISECONDS)
                        .maxElapsedTime(1000L, TimeUnit.MILLISECONDS)
                        .baseFactor(1.1)
                        .jitterFactor(0.15)
                        .retryConnectError(false)
                        .build())
                    .build())
                .page(700347L)
                .pagesize(558834L)
                .call();

        if (res.modelsAnalystReportRawTexts().isPresent()) {
            // معالجة الاستجابة
        }
    }
}
إذا كنت ترغب في تجاوز استراتيجية إعادة المحاولة الافتراضية لجميع العمليات التي تدعم إعادة المحاولة، يمكنك توفير إعداد تكوين عند تهيئة عدة تطوير البرمجيات SDK:
package hello.world;

import java.lang.Exception;
import java.util.concurrent.TimeUnit;
import org.benzinga.BZClient.Bzclient;
import org.benzinga.BZClient.models.operations.GetAnalystReportsRawTextDataResponse;
import org.benzinga.BZClient.utils.BackoffStrategy;
import org.benzinga.BZClient.utils.RetryConfig;

public class Application {

    public static void main(String[] args) throws Exception {

        Bzclient sdk = Bzclient.builder()
                .retryConfig(RetryConfig.builder()
                    .backoff(BackoffStrategy.builder()
                        .initialInterval(1L, TimeUnit.MILLISECONDS)
                        .maxInterval(50L, TimeUnit.MILLISECONDS)
                        .maxElapsedTime(1000L, TimeUnit.MILLISECONDS)
                        .baseFactor(1.1)
                        .jitterFactor(0.15)
                        .retryConnectError(false)
                        .build())
                    .build())
                .apiKeyAuth("<YOUR_API_KEY_HERE>")
            .build();

        GetAnalystReportsRawTextDataResponse res = sdk.analystReportsRawText().get()
                .page(700347L)
                .pagesize(558834L)
                .call();

        if (res.modelsAnalystReportRawTexts().isPresent()) {
            // معالجة الاستجابة
        }
    }
}

معالجة الأخطاء

ستتوافق معالجة الأخطاء في عدة تطوير البرمجيات SDK هذه إلى حد كبير مع توقعاتك. تعيد كل عملية كائن استجابة أو تُطلِق استثناءً. بشكل افتراضي، يؤدّي خطأ في واجهة برمجة التطبيقات API إلى إلقاء استثناء من النوع models/errors/APIException. عند تحديد استجابات أخطاء مخصّصة لعملية ما، قد تقوم عدة تطوير البرمجيات SDK أيضًا بإلقاء الاستثناء المرتبط بها. يمكنك الرجوع إلى جداول الأخطاء المقابلة في مستندات عدة تطوير البرمجيات SDK للحصول على مزيد من التفاصيل حول أنواع الاستثناءات الممكنة لكل عملية. على سبيل المثال، تقوم طريقة get بإلقاء الاستثناءات التالية:
نوع الخطأرمز الحالةنوع المحتوى
models/errors/ApiErrorResponse400, 500application/json
models/errors/APIException4XX, 5XX/

مثال

package hello.world;

import java.lang.Exception;
import org.benzinga.BZClient.Bzclient;
import org.benzinga.BZClient.models.errors.ApiErrorResponse;
import org.benzinga.BZClient.models.operations.GetAnalystInsightsV1Request;
import org.benzinga.BZClient.models.operations.GetAnalystInsightsV1Response;

public class Application {

    public static void main(String[] args) throws ApiErrorResponse, Exception {

        Bzclient sdk = Bzclient.builder()
                .apiKeyAuth("<YOUR_API_KEY_HERE>")
            .build();

        GetAnalystInsightsV1Request req = GetAnalystInsightsV1Request.builder()
                .build();

        GetAnalystInsightsV1Response res = sdk.analystInsights().get()
                .request(req)
                .call();

        if (res.modelsAnalystInsightsJSON().isPresent()) {
            // معالجة الرد
        }
    }
}

اختيار الخادم

تحديد الخادم باستخدام الفهرس

يمكنك تجاوز الخادم الافتراضي عالميًا باستخدام أسلوب الـ builder .serverIndex(int serverIdx) عند تهيئة كائن عميل الـ SDK. سيتم بعد ذلك استخدام الخادم المحدد كخادم افتراضي في العمليات التي تستخدمه. يسرد هذا الجدول الفهارس المرتبطة بالخوادم المتاحة:
#الخادم
0https://api.benzinga.com
1https://api.benzinga.com/api/v1
2https://api.benzinga.com/api/v2
3https://api.benzinga.com/api/v2.1
4https://api.benzinga.com/api/v2.2

مثال

package hello.world;

import java.lang.Exception;
import org.benzinga.BZClient.Bzclient;
import org.benzinga.BZClient.models.operations.GetAnalystReportsRawTextDataResponse;

public class Application {

    public static void main(String[] args) throws Exception {

        Bzclient sdk = Bzclient.builder()
                .serverIndex(4)
                .apiKeyAuth("<YOUR_API_KEY_HERE>")
            .build();

        GetAnalystReportsRawTextDataResponse res = sdk.analystReportsRawText().get()
                .page(700347L)
                .pagesize(558834L)
                .call();

        if (res.modelsAnalystReportRawTexts().isPresent()) {
            // معالجة الاستجابة
        }
    }
}

تجاوز عنوان الخادم لكل عميل على حدة

يمكن أيضًا تجاوز الخادم الافتراضي على مستوى التطبيق باستخدام أسلوب الـ builder .serverURL(String serverUrl) عند تهيئة كائن عميل عدة تطوير البرمجيات SDK. على سبيل المثال:
package hello.world;

import java.lang.Exception;
import org.benzinga.BZClient.Bzclient;
import org.benzinga.BZClient.models.operations.GetAnalystReportsRawTextDataResponse;

public class Application {

    public static void main(String[] args) throws Exception {

        Bzclient sdk = Bzclient.builder()
                .serverURL("https://api.benzinga.com")
                .apiKeyAuth("<YOUR_API_KEY_HERE>")
            .build();

        GetAnalystReportsRawTextDataResponse res = sdk.analystReportsRawText().get()
                .page(700347L)
                .pagesize(558834L)
                .call();

        if (res.modelsAnalystReportRawTexts().isPresent()) {
            // معالجة الرد
        }
    }
}

التطوير

مستوى النضج

عدة تطوير البرمجيات SDK هذه في مرحلة تجريبية (بيتا)، وقد تطرأ تغييرات غير متوافقة مع الإصدارات السابقة بين الإصدارات من دون إصدار رئيسي جديد. لذلك نوصي بتقييد استخدامك بإصدار معيّن من الحزمة. بهذه الطريقة، يمكنك تثبيت الإصدار نفسه في كل مرة من دون تغييرات غير متوافقة، إلا إذا كنت تبحث عمدًا عن أحدث إصدار.

المساهمات

بينما نقدّر المساهمات مفتوحة المصدر في عدة تطوير البرمجيات SDK هذه، فإن هذه المكتبة تُولَّد برمجياً. ستُستبدل أي تغييرات تُجرى يدوياً على الملفات الداخلية عند عملية التوليد التالية. نتطلع إلى سماع ملاحظاتك. لا تتردد في فتح طلب سحب (PR) أو فتح بلاغ مشكلة (issue) مرفق بإثبات مفهوم، وسنبذل قصارى جهدنا لإدراج ذلك في إصدار مستقبلي.

عدة تطوير البرمجيات SDK التي طورتها Speakeasy