Artifactory AQL发布红宝石

阿尔瓦罗·戈麦斯·福尔加多

我正在尝试使用ruby代码查询Artifactory的AQL API,我已经检查过该代码是否可以使用curl在bash上运行:

curl -u admin:password -i -H "Accept: application/json" -X POST http://server.example.com:8081/artifactory/api/search/aql -T aql.aql

其中intellig.aql的内容如下:

items.find
(
    {
        "repo":{"$eq":"test-ASO"}
    }
)
.include("name","property.*")

现在,我尝试使用带有以下代码的Ruby进行相同的操作:

#!/usr/bin/ruby
require 'rubygems'
require 'json'
require 'open-uri'
require 'uri'
require 'net/http'

payload ='items.find
(
    {
        "repo":{"$eq":"test-ASO"}
    }
).include("name","property.*")'

uri = URI.parse("http://server.example.com:8081/artifactory/api/search/aql")
http = Net::HTTP.new(uri.host,uri.port)
req = Net::HTTP::Post.new(uri.path)
req.basic_auth 'user', 'password'
req.set_form_data(payload)
res = http.request(req)
puts res.body

但是我得到的是:

{
  "errors" : [ {
    "status" : 400,
    "message" : "Bad Request"
  } ]
}

我的猜测是,查询的有效负载必须是文件,就像我之前使用curl(-T参数)所做的那样,但是我不认为使用文件进行查询是实现此目的的一种非常优雅的方法。

阿尔瓦罗·戈麦斯·福尔加多

编辑

最后,我通过声明具有适当内容的req.body变量实现了这一点:

#!/usr/bin/ruby
require 'rubygems'
require 'json'
require 'open-uri'
require 'uri'
require 'net/http'

payload = 'items.find().include("name","property.*")'

uri = URI.parse("http://server.example.com:8081/artifactory/api/search/aql")
http = Net::HTTP.new(uri.host,uri.port)
req = Net::HTTP::Post.new(uri.path)
req["Content-Type"] = "text/plain"
req.basic_auth 'admin', 'password'
req.body = payload
res = http.request(req)
puts res.body

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

JFrog Artifactory AQL

将 libgdx 核心发布到 artifactory

415 Artifactory AQL POST中不支持的媒体类型

如何在Artifactory AQL查询中添加“路径”?

AQL Artifactory:找到具有给定属性的工作机会

配置Gradle的Artifactory插件以发布发布或快照存储库

如何编写Gradle脚本以将Shadowjar发布到Artifactory

使用Gradle-Artifactory插件发布子项目

如何配置Maven2发布到Artifactory?

如何将 Gradle 插件发布到 Artifactory?

Gradle Artifactory插件-如何从项目中的多个模块发布工件?

发布到Artifactory时SBT没有通过凭据

将快照JAR发布到Artifactory Maven存储库失败

如何将Android .aar文件发布到Artifactory

Artifactory Debian存储库报告“没有发布文件”

如何从TeamCity将自定义工件发布到Artifactory?

如何使用 JFrog CLI 将 python 包发布到 Artifactory PyPi?

使用Spring Boot的Kotlin Gradle构建不会将jar发布到Artifactory-仅构建信息

如何使用JFrog CLI将构建和工件发布到Artifactory?

如何在未对硬脚本进行硬编码的情况下发送Artifactory从buildscript发布的凭据?

如何在Artifactory上发布模块及其版本,依赖关系和自定义的artifactId

Artifactory + Jenkins:从自由式构建发布到Maven存储库

将POM文件发布到Artifactory时,配置getByName在gradle中不起作用

使用 Jenkins 管道脚本将工件发布到 Artifactory 时出错

如何仅将选定的 NuGet 包从 Azure Pipeline 发布到 Artifactory?

蚂蚁和Gradle混合体将jar和pom发布到Artifactory

使用 Azure DevOps Pipeline 任务发布 NPM 包:ArtifactoryNpm@2 到 Artifactory

如何备份红宝石宝石?

损坏的红宝石宝石系统