承接 ankitjain28may/hackerearth-api 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

ankitjain28may/hackerearth-api

Composer 安装命令:

composer require ankitjain28may/hackerearth-api

包简介

PHP and Laravel HackerEarth API Wrapper

README 文档

README

Latest Stable Version Build Status Coverage Status Packagist

This package is using HackerEarth api to Compile and Run the code.

HackerEarth Code Checker API. Extremely simple REST API. Supports more than a dozen languages. All powered by reliable HackerEarth servers. You can use your own scoring system or build your own online judge.

PHP Innovation Award for the PHP package Hacker Earth API Certification Link

Installation

Run this command in your terminal from your project directory:

composer require ankitjain28may/hackerearth-api

Laravel Configuration

When the download is complete, you have to call this package service in config/app.php config file. To do that, add this line in app.php in providers array:

Ankitjain28may\HackerEarth\HackerEarthServiceProvider::class,

To use facade you have to add this line in app.php to the aliases array:

'HackerEarth' => Ankitjain28may\HackerEarth\Facades\HackerEarth::class,

Now run this command in your terminal to publish this package resources:

php artisan vendor:publish --provider="Ankitjain28may\HackerEarth\HackerEarthServiceProvider"
php artisan vendor:publish --tag=migrations

after publishing your config file then open config/hackerearth.php and add your hackerearth app key:

return [
    /*
    |--------------------------------------------------------------------------
    | HackerEarth API KEY
    |--------------------------------------------------------------------------
    |
    | https://api.hackerearth.com/v3/code/
    | https://api.hackerearth.com/v3/code/
    |
    */
    'api_key' => env('HACKEREARTH_SECRET_KEY', 'CLIENT_SECRET_KEY'),
];

also you can add api key in .env :

 HACKEREARTH_SECRET_KEY = YOUR_HACKER_EARTH_API_KEY

Thats it.

API List

    $data = [
        "lang" => '',
        "source" => '',
        "input" => '',
        "async" => 0,                   // default (1 => async req and 0 => sync req)
        "callback" => '',
        'id' => '',
        'time_limit'    => 5,           // default
        'memory_limit'  => 262144,      // default
    ]
  • Run([$data, ..])
  • RunFile([$data, ..])
  • Compile([$data, ..])
  • CompileFile([$data, ..])

Asynchronous Request

  • Set async = 1.
  • You need to add the callback url, Output will be returned directly to the callback url as a post request.

Synchronous Request

  • Set async = 0.
  • Output will be returned with the request's response.

For Core PHP Usage

  • create the database
create database [database name]
  • import table
mysql -u[user] -p[password] [database name] < vendor\ankitjain28may\hackerearth-api\src\Database\migrate.sql
use Ankitjain28may\HackerEarth\HackerEarth;

$config = [
    	"api_key"     => 'hackerearth_app_key',
    ];


 $hackerearth = new HackerEarth($config);

 $data = [
    "lang" => 'php',
    "source" => '<?php echo "hello World!"; ?>'
 ];

 $result = $hackerearth->Compile([$data]);

 var_dump($result);

 $result = $hackerearth->Run([$data]);

 var_dump($result);

 // Asynchronous

 $data = [
    "lang" => 'php',
    "source" => '<?php echo "hello World!"; ?>',
    "async" => 1,
    "callback" => 'http://callback_url',
    "id" => 12  // Id from the db where to save or update response
 ]

 $result = $hackerearth->Run([$data]);

 vardump($result);

 // Response at Callback URL will need to save to DB with reference to the ID, Id returned is encoded using `bin2hex` which can be decoded using `hex2bin`.

For Laravel Usage

Code Compile

use Ankitjain28may\HackerEarth\Facades\HackerEarth;
use Ankitjain28may\HackerEarth\Models\Output;
//..
//..

$data = [
   "lang" => 'php',
   "source" => '<?php echo "hello World!"; ?>'
];

$result = HackerEarth::Compile([$data, ..]);

dd($result);

// Asynchronous

$data = [
   "lang" => 'php',
   "source" => '<?php echo "hello World!"; ?>',
   "async" => 1,
   "callback" => 'http://callback_url',
   "id" => 12  // Id from the db where to save or update response
]

$result = $hackerearth->Compile([$data]);

dd($result);

 OR

Output::saveResult(json_decode($result, True)); // Save directly to the DB


// Response at Callback URL will save to DB with reference to the ID

Output::savePayload(json_decode($_POST['payload'], True));

Code Run

use Ankitjain28may\HackerEarth\Facades\HackerEarth;
use Ankitjain28may\HackerEarth\Models\Output;

//..
//..

$data = [
   "lang" => 'php',
   "source" => '<?php echo "hello World!"; ?>'
];

$result = HackerEarth::Run([$data, ..]);

dd($result);

// Asynchronous

$data = [
   "lang" => 'php',
   "source" => '<?php echo "hello World!"; ?>',
   "async" => 1,
   "callback" => 'http://callback_url',
   "id" => 12  // Id from the db where to save or update response
]

$result = $hackerearth->Run([$data]);

dd($result);

 OR

Output::saveResult(json_decode($result, True)); // Save directly to the DB


// Response at Callback URL will save to DB with reference to the ID

Output::savePayload(json_decode($_POST['payload'], True));

Also Compile and Run files by passing realpath of the uploaded file--

use Ankitjain28may\HackerEarth\Facades\HackerEarth;

//..
//..

$data = [
   "lang" => 'php',
   "source" => realpath("test.txt")
];

$result = HackerEarth::RunFile([$data]);
$result = HackerEarth::CompileFile([$data]);

Contribute

Feel free to contribute

License

Copyright (c) 2017 Ankit Jain - Released under the MIT License

统计信息

  • 总下载量: 44
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 8
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 8
  • Watchers: 2
  • Forks: 1
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2017-07-07

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固