안녕하세요 망원경
8992 단어 opensource
망원경이란?
Telescope은 planet의 예입니다.
블로그 피드 집계. 오래전부터 뉴스를 보던 구글 리더가 생각난다.
설정 환경
저는 KDE Plasma Desktop을 사용하여 fedora33에서 작업하고 있습니다. Docker는 여전히 CgroupsV2를 지원하지 않습니다. 도커를 설치하는데 시간이 조금 걸리고 설치에 대한 블로그 포스트를 작성했습니다.
어떤 이유로 redis에 다음과 같은 경우 권한 오류가 발생합니다
docker-compose
.Starting telescope_redis_1 ... done
Starting telescope_elasticsearch_1 ... done
Attaching to telescope_redis_1, telescope_elasticsearch_1
redis_1 | find: '.': Permission denied
redis_1 | chown: changing ownership of '.': Permission denied
telescope_redis_1 exited with code 1
그래서 Redis를
sudo dnf install redis
로 설치하고 시작했습니다.redis-server
다른 부분은 다 잘되서 그냥 따라했습니다environment-setup.md
goURL 수정
망원경의 REST API로 작업하기 위해 새 플래그
-u --url
를 추가했습니다.json 데이터, 데이터를 게시물 조각으로 변환, 각 게시물의 내용 가져오기
URL. 이 작업을 수행하기 위해 새로운 기능을 하나 추가했습니다. 아래는 차이점입니다.
만들어진.
git diff HEAD main.go utils.go > lab6.diff
차이점
diff --git c/main.go w/main.go
index 4679a1a..fd3d249 100644
--- c/main.go
+++ w/main.go
@@ -25,6 +25,7 @@ var js = flag.BoolP("json", "j", false, "output json format to stdout")
var fp = flag.StringP("file", "f", "", "file name to check")
var ignore = flag.BoolP("ignore", "i", false, "ignore url patterns")
var failOnly = flag.Bool("fails", false, "show only urls that failed")
+var urlFlag = flag.BoolP("url", "u", false, "read telescope restful API")
func main() {
flag.Parse()
@@ -43,14 +44,20 @@ go run main.go -v or --version check version.
os.Exit(-1)
}
- dat, err := ioutil.ReadFile(*fp)
- check(err)
-
+ var urls []string
+ var dat []byte
+ if *urlFlag {
+ dat = dataTelscope()
+ } else {
+ var err error
+ dat, err = ioutil.ReadFile(*fp)
+ check(err)
+ }
// use xurls tool to exact links from file. Strict mod only match http://
// and https:// schema
rxStrict := xurls.Strict()
// urls is a slice of strings
- urls := rxStrict.FindAllString(string(dat), -1)
+ urls = rxStrict.FindAllString(string(dat), -1)
urls = removeDuplicate(urls)
if *ignore {
diff --git c/utils.go w/utils.go
index 5c27fc7..aee4859 100644
--- c/utils.go
+++ w/utils.go
@@ -2,7 +2,9 @@ package main
import (
"bufio"
+ "encoding/json"
"fmt"
+ "io/ioutil"
"log"
"net/http"
"os"
@@ -18,6 +20,43 @@ type urlStatus struct {
Status int
}
+type post struct {
+ ID string
+ URL string
+}
+
+func dataTelscope() []byte {
+ var data []byte
+ var posts []post
+ resp, err := http.Get("http://localhost:3000/posts")
+ check(err)
+ defer resp.Body.Close()
+
+ if resp.StatusCode == http.StatusOK {
+ body, err := ioutil.ReadAll(resp.Body)
+ check(err)
+ if err := json.Unmarshal(body, &posts); err != nil {
+ panic(err)
+ }
+ for _, p := range posts {
+ resp, err := http.Get("http://localhost:3000" + p.URL)
+ if err != nil {
+ fmt.Println(err)
+ }
+ defer resp.Body.Close()
+ if resp.StatusCode == http.StatusOK {
+ bodyData, err := ioutil.ReadAll(resp.Body)
+ if err != nil {
+ fmt.Println(err)
+ }
+ data = append(data, bodyData...)
+ }
+ }
+ }
+
+ return data
+}
+
func removeDuplicate(urls []string) []string {
result := make([]string, 0, len(urls))
temp := map[string]struct{}{}
요지 버전은 여기https://gist.github.com/yzwdroid/26b6cb71f75f3799dfccd5fb0ed9ec79
Reference
이 문제에 관하여(안녕하세요 망원경), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/yzwdroid/hello-telescope-1i5m텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)