【推荐阅读】微服务还能火多久?>>>

gitlab获取项目所有文件名

gitlab api 没有提供获取项目下所有文件名的方法。需要通过间接的方式获取。

通过api 接口

gitlab 提供了一个 /projects/{project_id}/repository/tree?path={path} 的接口可以获取某个路径下的文件和目录。根据官方文档,该接口表现如命令 git ls-tree 类似。由于只能返回路径下的文件和目录,因此需要不断迭代。也就是先访问根目录,取出类型为src的目录,继续遍历,直到遍历所有子目录。网上能够Google到的方案基本都是基于此原理,在此就不再赘述。

通过页面接口(重点)

gitlab页面上提供了一个find file by filename的功能。点进去后,后台会先请求获取所有文件名 ,再通过前端实现实时筛选。本方就是基于此接口,最大的难点在于代码实现页面登录,保存登录信息,然后请求该接口。示例代码基于golang 和第三方库 goreqeust 完成http请求 , goquery 完成页面元素提取。

package main
import ("net/url""github.com/PuerkitoBio/goquery""github.com/parnurzeal/gorequest""github.com/sirupsen/logrus"
)
var(GitlabLoginAddr="http://git.example.com/users/sign_in"GitProjectAddr="http://git.example.com/backend/authservice"GitUser = "bob"GitPassword = "bobpassword"
)
func main(){agent := gorequest.New()agent.SetDoNotClearSuperAgent(true)//访问登录页面,获取authenticity_token及其cookiesresp, _, errs := agent.Get(GitlabLoginAddr).End()if len(errs) > 0{logrus.Fatal(errs)}if resp.StatusCode != 200 {logrus.Fatal("got statuscode: ", resp.StatusCode)}doc, err := goquery.NewDocumentFromReader(resp.Body)if err != nil {logrus.Fatal(err)}//页面提取 authenticity_tokencsrfToken, exist := doc.Find(`input[name="authenticity_token"]`).Attr("value")if !exist {logrus.Fatal("failed tp read csrf_token")}data := make(url.Values)data["authenticity_token"] = []string{csrfToken}data["user[login]"] = []string{GitUser}data["user[password]"] = []string{GitPassword}//登录resp, body, errs := agent.Post(GitlabLoginAddr).SendString(data.Encode()).End()if len(errs) > 0 {logrus.Fatal(errs)}if resp.StatusCode != 200 {logrus.Error(body)logrus.Fatal("got statuscode: ", resp.StatusCode)}//获取项目所有文件名resp, body, errs = agent.Get(GitProjectAddr+"/files/master?format=json").Set("X-CSRF-Token", csrfToken).End()if len(errs) > 0 {logrus.Fatal(errs)}if resp.StatusCode != 200 {logrus.Error("got statuscode: ", resp.StatusCode)}//body json解析即为所有文件名listlogrus.Info(string(body))
}

gitlab获取项目所有文件名相关推荐

  1. 【方法整理】Oracle 获取trace跟踪文件名的几种常用方式

    [方法整理]Oracle 获取trace跟踪文件名的几种常用方式 1  BLOG文档结构图 2  前言部分 2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其 ...

  2. java取路径含中文_java获取项目路径中文乱码

    以下内容转自:http://blog.csdn.net/dream_broken/article/details/31762807# 项目的文件名称推荐都是英文名称,但是有时不可避免使用了中文,获取项 ...

  3. Python 获取项目根路径

    本文仅供学习交流使用,如侵立删!demo下载见文末 获取项目根路径 os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 本文仅供学习 ...

  4. 百度ueditor编辑器动态获取项目根目录

    编辑器的 jsp\config.json 文件里面有个 imageUrlPrefix 这里指定的是"上传图片访问路径前缀",即项目根目录,如果是跨域(远程)操作的话,需要写上服务器 ...

  5. JAVA控件属性列表_Gradle获取项目属性列表

    执行 gradle properties 可以获取项目所有属性列表. 如下例: 例 11.16. 属性信息 gradle -q api:properties 的输出结果> gradle -q a ...

  6. Java中动态获取项目根目录和tomcat的绝对路径

    序言 在开发过程中经常会用到读写文件,其中就必然涉及路径问题.使用固定的绝对路径当然很方便,但会导致程序的可移植性差,比如在代码中写死了要在E盘建一个文件,而移植后的环境中木有E盘,那就只能改代码:又 ...

  7. Weblogic部署web项目获取项目根目录为null

    写在前面 图片上传功能, web项目部署在本地Tomcat上并没有问题, 但是打成war包部署到Linux服务器Weblogic下却出现如题问题, 导致图片上传失败. 问题代码 String real ...

  8. 使用Idea从github上获取项目

    转载自:https://www.cnblogs.com/30go/p/7909246.html 整体分三步: 下载和安装git 配置idea 从git获取项目 详细步骤: 1. 下载和安装git 下载 ...

  9. Harbor API整理:获取项目下的所有镜像

    获取项目下的所有镜像: http://{ip:port}/api/v2.0/projects/test/repositories?page_size=100000

最新文章

  1. AR的平面检测和利用SceneKit构建几何体
  2. VS2008建立webserver(转)
  3. ofo 列入被执行人;摩拜 LV 跨界合作;iPhone X 遭黑客攻击 | 极客头条
  4. dumpsys命令用法
  5. ASP.NET MVC - 使用Post, Redirect, Get (PRG)模式
  6. OSN 7500 智能光交换系统是继承了MSTP技术的全部特点
  7. 博客导航——一站式搜索
  8. Android安卓 自定义mapbox地图比例尺
  9. PostScript语言教程(六、图形变换)
  10. The Thirty-fourth Of Word-Day
  11. php解析mpp文件中的多级任务
  12. 硬件设计22之高速电路设计保险丝的选型
  13. 《工程伦理与学术道德》第四章习题
  14. 智能合约审计之DDOS概述
  15. 论文查重软件查重时需要注意的问题有哪些?
  16. 渲染管线中的坐标空间和相关变换
  17. 编写程序,如果输入的是大写字母,则输出对应的小写字母,如果输入的是小写字母,则输出对应的大写字母;如果输入的是数字,原样输出;按回车结束
  18. 2020中国技术力量年度榜单正式揭晓,见证创新技术的力量
  19. 如何通过WPS 2013 API 将Office(Word、Excel和PPT)文件转PDF文件
  20. 微软CRM系统二次开发步骤以及注意事项

热门文章

  1. [ts]document.getelementbyid object is possibly ‘null‘
  2. uni-生物识别模块代码(指纹,面容)
  3. (C++)考试座位号(思路与实现)
  4. pycharm找不到sklearn包
  5. 程序员月薪2万,却因提出AA制,被月薪不到6000的女研究生拒绝
  6. C++:重载操作符 赋值操作符重载需要注意的问题
  7. 团队解散,我们该何去何从?
  8. 女神节▍教你用Python撩妹:微信推送天气早报/睡前故事/精美图片
  9. 滴滴打车 -- 数仓指标体系建设实践
  10. 2017中国(海南)智慧城市创新大会举行