add option to fetch referenced uri
This commit is contained in:
		@@ -1062,27 +1062,30 @@ func (self httpFrontend) handle_authed_api(wr http.ResponseWriter, r *http.Reque
 | 
			
		||||
func (self *httpFrontend) handle_api_find(wr http.ResponseWriter, r *http.Request) {
 | 
			
		||||
	q := r.URL.Query()
 | 
			
		||||
	h := q.Get("hash")
 | 
			
		||||
	msgid := q.Get("id")
 | 
			
		||||
	if len(h) > 0 {
 | 
			
		||||
		msgid := q.Get("id")
 | 
			
		||||
		if len(h) > 0 {
 | 
			
		||||
			e, err := self.daemon.database.GetMessageIDByHash(h)
 | 
			
		||||
			if err == nil {
 | 
			
		||||
				msgid = e.MessageID()
 | 
			
		||||
			}
 | 
			
		||||
		e, err := self.daemon.database.GetMessageIDByHash(h)
 | 
			
		||||
		if err == nil {
 | 
			
		||||
			msgid = e.MessageID()
 | 
			
		||||
		}
 | 
			
		||||
		if len(msgid) > 0 {
 | 
			
		||||
			// found it (probaly)
 | 
			
		||||
			model := self.daemon.database.GetPostModel(self.prefix, msgid)
 | 
			
		||||
			if model == nil {
 | 
			
		||||
				// no model
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if !ValidMessageID(msgid) {
 | 
			
		||||
		msgid = ""
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if len(msgid) > 0 {
 | 
			
		||||
		self.daemon.store.GetMessage(msgid, func(nntp NNTPMessage) {
 | 
			
		||||
			if nntp == nil {
 | 
			
		||||
				wr.WriteHeader(404)
 | 
			
		||||
			} else {
 | 
			
		||||
				// we found it
 | 
			
		||||
				wr.Header().Add("Content-Type", "text/json; encoding=UTF-8")
 | 
			
		||||
				json.NewEncoder(wr).Encode([]PostModel{model})
 | 
			
		||||
				return
 | 
			
		||||
			}
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
			model := PostModelFromMessage(self.prefix, nntp)
 | 
			
		||||
			// we found it
 | 
			
		||||
			wr.Header().Add("Content-Type", "text/json; encoding=UTF-8")
 | 
			
		||||
			json.NewEncoder(wr).Encode([]PostModel{model})
 | 
			
		||||
		})
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	s := q.Get("text")
 | 
			
		||||
	g := q.Get("group")
 | 
			
		||||
 
 | 
			
		||||
@@ -295,6 +295,7 @@ type post struct {
 | 
			
		||||
	Type              string
 | 
			
		||||
	nntp_id           int
 | 
			
		||||
	FrontendPublicKey string
 | 
			
		||||
	ReferencedURI     string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (p *post) IsCtl() bool {
 | 
			
		||||
@@ -411,7 +412,7 @@ func (self *attachment) Filename() string {
 | 
			
		||||
	return self.Name
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func PostModelFromMessage(parent, prefix string, nntp NNTPMessage) PostModel {
 | 
			
		||||
func PostModelFromMessage(prefix string, nntp NNTPMessage) PostModel {
 | 
			
		||||
	p := new(post)
 | 
			
		||||
	p.PostName = nntp.Name()
 | 
			
		||||
	p.PostSubject = nntp.Subject()
 | 
			
		||||
@@ -422,10 +423,11 @@ func PostModelFromMessage(parent, prefix string, nntp NNTPMessage) PostModel {
 | 
			
		||||
	p.Posted = nntp.Posted()
 | 
			
		||||
	p.op = nntp.OP()
 | 
			
		||||
	p.prefix = prefix
 | 
			
		||||
	p.Parent = parent
 | 
			
		||||
	p.Parent = nntp.Reference()
 | 
			
		||||
	p.addr = nntp.Addr()
 | 
			
		||||
	p.sage = nntp.Sage()
 | 
			
		||||
	p.Key = nntp.Pubkey()
 | 
			
		||||
	p.ReferencedURI = nntp.Headers().Get("X-Referenced-Uri", "")
 | 
			
		||||
	p.FrontendPublicKey = nntp.FrontendPubkey()
 | 
			
		||||
	for _, att := range nntp.Attachments() {
 | 
			
		||||
		p.Files = append(p.Files, att.ToModel(prefix))
 | 
			
		||||
@@ -627,6 +629,7 @@ func (self *post) Truncate() PostModel {
 | 
			
		||||
		// TODO: copy?
 | 
			
		||||
		Files:             self.Files,
 | 
			
		||||
		FrontendPublicKey: self.FrontendPublicKey,
 | 
			
		||||
		ReferencedURI:     self.ReferencedURI,
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -42,5 +42,27 @@
 | 
			
		||||
    </span>
 | 
			
		||||
    <br /><br />
 | 
			
		||||
    <span id="post_body_{{post.PostHash}}" class="message_span">{{{post.RenderBody}}}</span>
 | 
			
		||||
    {{#post.OP}}
 | 
			
		||||
    <script type="text/javascript">
 | 
			
		||||
      var j = fetch("/api/find?id={{post.MessageID}}").then(function(resp) {
 | 
			
		||||
          return resp.json();
 | 
			
		||||
      }).catch(function(resp) {
 | 
			
		||||
          return [];
 | 
			
		||||
      });
 | 
			
		||||
      if (j.legnth) {
 | 
			
		||||
         var e = document.getElementById("post_body_{{post.PostHash}}");
 | 
			
		||||
         if(e) {
 | 
			
		||||
             var link = document.createElement("a");
 | 
			
		||||
             var u = new URL(j[0].ReferencedURI);
 | 
			
		||||
             if(u.protocol === "https" || u.protocol === "http") {
 | 
			
		||||
                 link.href = u.toString();
 | 
			
		||||
                 link.innerText = "[Link]";
 | 
			
		||||
                 e.appendChild(txt);
 | 
			
		||||
             }
 | 
			
		||||
         }
 | 
			
		||||
      } 
 | 
			
		||||
    </script>
 | 
			
		||||
    {{/post.OP}}
 | 
			
		||||
    <br style="clear: both;" />
 | 
			
		||||
    
 | 
			
		||||
</div>
 | 
			
		||||
 
 | 
			
		||||
@@ -57,10 +57,10 @@
 | 
			
		||||
            {{^thread.BumpLock}}
 | 
			
		||||
            <div class="thread" id="thread_{{thread.OP.PostHash}}">
 | 
			
		||||
            {{/thread.BumpLock}}
 | 
			
		||||
                {{{thread.OP.RenderPost}}}
 | 
			
		||||
                {{#thread.Replies}}
 | 
			
		||||
                    {{{RenderPost}}}
 | 
			
		||||
                {{/thread.Replies}}
 | 
			
		||||
            {{{thread.OP.RenderPost}}}
 | 
			
		||||
            {{#thread.Replies}}
 | 
			
		||||
                {{{RenderPost}}}
 | 
			
		||||
            {{/thread.Replies}}
 | 
			
		||||
            </div>
 | 
			
		||||
            <hr style="clear: both;">
 | 
			
		||||
        <footer>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user